GStreamer Base Plugins 1.0 Library Reference Manual | ||||
---|---|---|---|---|
Top | Description | Object Hierarchy | Properties | Signals |
#include <gst/pbutils/pbutils.h> struct GstDiscoverer; GstDiscoverer * gst_discoverer_new (GstClockTime timeout
,GError **err
); void gst_discoverer_start (GstDiscoverer *discoverer
); void gst_discoverer_stop (GstDiscoverer *discoverer
); GstDiscovererInfo * gst_discoverer_discover_uri (GstDiscoverer *discoverer
,const gchar *uri
,GError **err
); gboolean gst_discoverer_discover_uri_async (GstDiscoverer *discoverer
,const gchar *uri
); GstDiscovererInfo; enum GstDiscovererResult; GstClockTime gst_discoverer_info_get_duration (const GstDiscovererInfo *info
); const GstStructure * gst_discoverer_info_get_misc (const GstDiscovererInfo *info
); GstDiscovererResult gst_discoverer_info_get_result (const GstDiscovererInfo *info
); GstDiscovererStreamInfo * gst_discoverer_info_get_stream_info (GstDiscovererInfo *info
); GList * gst_discoverer_info_get_stream_list (GstDiscovererInfo *info
); const GstTagList * gst_discoverer_info_get_tags (const GstDiscovererInfo *info
); const GstToc * gst_discoverer_info_get_toc (const GstDiscovererInfo *info
); const gchar * gst_discoverer_info_get_uri (const GstDiscovererInfo *info
); gboolean gst_discoverer_info_get_seekable (const GstDiscovererInfo *info
); #define gst_discoverer_info_ref (info) #define gst_discoverer_info_unref (info) GstDiscovererStreamInfo; GstDiscovererContainerInfo; GstDiscovererAudioInfo; GstDiscovererVideoInfo; GstDiscovererSubtitleInfo; GstCaps * gst_discoverer_stream_info_get_caps (GstDiscovererStreamInfo *info
); const GstStructure * gst_discoverer_stream_info_get_misc (GstDiscovererStreamInfo *info
); GstDiscovererStreamInfo * gst_discoverer_stream_info_get_next (GstDiscovererStreamInfo *info
); GstDiscovererStreamInfo * gst_discoverer_stream_info_get_previous (GstDiscovererStreamInfo *info
); const GstTagList * gst_discoverer_stream_info_get_tags (GstDiscovererStreamInfo *info
); const GstToc * gst_discoverer_stream_info_get_toc (GstDiscovererStreamInfo *info
); #define gst_discoverer_stream_info_ref (info) #define gst_discoverer_stream_info_unref (info) void gst_discoverer_stream_info_list_free (GList *infos
); const gchar * gst_discoverer_stream_info_get_stream_type_nick (GstDiscovererStreamInfo *info
); GList * gst_discoverer_info_get_audio_streams (GstDiscovererInfo *info
); GList * gst_discoverer_info_get_container_streams (GstDiscovererInfo *info
); GList * gst_discoverer_info_get_streams (GstDiscovererInfo *info
,GType streamtype
); GList * gst_discoverer_info_get_subtitle_streams (GstDiscovererInfo *info
); GList * gst_discoverer_info_get_video_streams (GstDiscovererInfo *info
); guint gst_discoverer_audio_info_get_bitrate (const GstDiscovererAudioInfo *info
); guint gst_discoverer_audio_info_get_channels (const GstDiscovererAudioInfo *info
); guint gst_discoverer_audio_info_get_depth (const GstDiscovererAudioInfo *info
); const gchar * gst_discoverer_audio_info_get_language (const GstDiscovererAudioInfo *info
); guint gst_discoverer_audio_info_get_max_bitrate (const GstDiscovererAudioInfo *info
); guint gst_discoverer_audio_info_get_sample_rate (const GstDiscovererAudioInfo *info
); GList * gst_discoverer_container_info_get_streams (GstDiscovererContainerInfo *info
); const gchar * gst_discoverer_subtitle_info_get_language (const GstDiscovererSubtitleInfo *info
); guint gst_discoverer_video_info_get_bitrate (const GstDiscovererVideoInfo *info
); guint gst_discoverer_video_info_get_depth (const GstDiscovererVideoInfo *info
); guint gst_discoverer_video_info_get_framerate_denom (const GstDiscovererVideoInfo *info
); guint gst_discoverer_video_info_get_framerate_num (const GstDiscovererVideoInfo *info
); guint gst_discoverer_video_info_get_height (const GstDiscovererVideoInfo *info
); gboolean gst_discoverer_video_info_is_interlaced (const GstDiscovererVideoInfo *info
); gboolean gst_discoverer_video_info_is_image (const GstDiscovererVideoInfo *info
); guint gst_discoverer_video_info_get_max_bitrate (const GstDiscovererVideoInfo *info
); guint gst_discoverer_video_info_get_par_denom (const GstDiscovererVideoInfo *info
); guint gst_discoverer_video_info_get_par_num (const GstDiscovererVideoInfo *info
); guint gst_discoverer_video_info_get_width (const GstDiscovererVideoInfo *info
);
"discovered" :Run Last
"finished" :Run Last
"source-setup" :Run Last
"starting" :Run Last
The GstDiscoverer is a utility object which allows to get as much information as possible from one or many URIs.
It provides two APIs, allowing usage in blocking or non-blocking mode.
The blocking mode just requires calling gst_discoverer_discover_uri()
with the URI one wishes to discover.
The non-blocking mode requires a running GMainLoop in the default
GMainContext, where one connects to the various signals, appends the
URIs to be processed (through gst_discoverer_discover_uri_async()
) and then
asks for the discovery to begin (through gst_discoverer_start()
).
All the information is returned in a GstDiscovererInfo structure.
GstDiscoverer * gst_discoverer_new (GstClockTime timeout
,GError **err
);
Creates a new GstDiscoverer with the provided timeout.
|
timeout per file, in nanoseconds. Allowed are values between one second (GST_SECOND) and one hour (3600 * GST_SECOND) |
|
a pointer to a GError. can be NULL
|
Returns : |
The new GstDiscoverer.
If an error occurred when creating the discoverer, err will be set
accordingly and NULL will be returned. If err is set, the caller must
free it when no longer needed using g_error_free() . [transfer full]
|
void gst_discoverer_start (GstDiscoverer *discoverer
);
Allow asynchronous discovering of URIs to take place. A GMainLoop must be available for GstDiscoverer to properly work in asynchronous mode.
|
A GstDiscoverer |
void gst_discoverer_stop (GstDiscoverer *discoverer
);
Stop the discovery of any pending URIs and clears the list of pending URIS (if any).
|
A GstDiscoverer |
GstDiscovererInfo * gst_discoverer_discover_uri (GstDiscoverer *discoverer
,const gchar *uri
,GError **err
);
Synchronously discovers the given uri
.
A copy of uri
will be made internally, so the caller can safely g_free()
afterwards.
|
A GstDiscoverer |
|
The URI to run on. |
|
If an error occurred, this field will be filled in. [out][allow-none] |
Returns : |
the result of the scanning. Can be NULL if an
error occurred. [transfer full]
|
gboolean gst_discoverer_discover_uri_async (GstDiscoverer *discoverer
,const gchar *uri
);
Appends the given uri
to the list of URIs to discoverer. The actual
discovery of the uri
will only take place if gst_discoverer_start()
has
been called.
A copy of uri
will be made internally, so the caller can safely g_free()
afterwards.
|
A GstDiscoverer |
|
the URI to add. |
Returns : |
TRUE if the uri was successfully appended to the list of pending
uris, else FALSE
|
typedef struct _GstDiscovererInfo GstDiscovererInfo;
Structure containing the information of a URI analyzed by GstDiscoverer.
typedef enum { GST_DISCOVERER_OK = 0, GST_DISCOVERER_URI_INVALID = 1, GST_DISCOVERER_ERROR = 2, GST_DISCOVERER_TIMEOUT = 3, GST_DISCOVERER_BUSY = 4, GST_DISCOVERER_MISSING_PLUGINS = 5 } GstDiscovererResult;
Result values for the discovery process.
The discovery was successful | |
the URI is invalid | |
an error happened and the GError is set | |
the discovery timed-out | |
the discoverer was already discovering a file | |
Some plugins are missing for full discovery |
GstClockTime gst_discoverer_info_get_duration (const GstDiscovererInfo *info
);
|
a GstDiscovererInfo |
Returns : |
the duration of the URI in GstClockTime (nanoseconds). |
const GstStructure * gst_discoverer_info_get_misc (const GstDiscovererInfo *info
);
|
a GstDiscovererInfo |
Returns : |
Miscellaneous information stored as a GstStructure
(for example: information about missing plugins). If you wish to use the
GstStructure after the life-time of info , you will need to copy it. [transfer none]
|
GstDiscovererResult gst_discoverer_info_get_result (const GstDiscovererInfo *info
);
|
a GstDiscovererInfo |
Returns : |
the result of the discovery as a GstDiscovererResult. |
GstDiscovererStreamInfo * gst_discoverer_info_get_stream_info
(GstDiscovererInfo *info
);
|
a GstDiscovererInfo |
Returns : |
the structure (or topology) of the URI as a
GstDiscovererStreamInfo.
This structure can be traversed to see the original hierarchy. Unref with
gst_discoverer_stream_info_unref() after usage. [transfer full]
|
GList * gst_discoverer_info_get_stream_list (GstDiscovererInfo *info
);
|
a GstDiscovererInfo |
Returns : |
the list of
all streams contained in the info. Free after usage
with gst_discoverer_stream_info_list_free() . [transfer full][element-type GstPbutils.DiscovererStreamInfo]
|
const GstTagList * gst_discoverer_info_get_tags (const GstDiscovererInfo *info
);
|
a GstDiscovererInfo |
Returns : |
all tags contained in the URI. If you wish to use
the tags after the life-time of info , you will need to copy them. [transfer none]
|
const GstToc * gst_discoverer_info_get_toc (const GstDiscovererInfo *info
);
|
a GstDiscovererInfo |
Returns : |
TOC contained in the URI. If you wish to use
the TOC after the life-time of info , you will need to copy it. [transfer none]
|
const gchar * gst_discoverer_info_get_uri (const GstDiscovererInfo *info
);
|
a GstDiscovererInfo |
Returns : |
the URI to which this information corresponds to.
Copy it if you wish to use it after the life-time of info . [transfer none]
|
gboolean gst_discoverer_info_get_seekable (const GstDiscovererInfo *info
);
|
a GstDiscovererInfo |
Returns : |
the whether the URI is seekable. |
#define gst_discoverer_info_ref(info) (g_object_ref((Gbject*)info))
Increments the reference count of info
.
|
a GstDiscovererInfo |
Returns : |
the same GstDiscovererInfo object |
#define gst_discoverer_info_unref(info) (g_object_unref((GObject*)info))
Decrements the reference count of info
.
|
a GstDiscovererInfo |
typedef struct _GstDiscovererStreamInfo GstDiscovererStreamInfo;
Base structure for information concerning a media stream. Depending on the stream type, one can find more media-specific information in GstDiscovererAudioInfo, GstDiscovererVideoInfo, and GstDiscovererContainerInfo.
The GstDiscovererStreamInfo represents the topology of the stream. Siblings
can be iterated over with gst_discoverer_stream_info_get_next()
and
gst_discoverer_stream_info_get_previous()
. Children (sub-streams) of a
stream can be accessed using the GstDiscovererContainerInfo API.
As a simple example, if you run GstDiscoverer on an AVI file with one audio and one video stream, you will get a GstDiscovererContainerInfo corresponding to the AVI container, which in turn will have a GstDiscovererAudioInfo sub-stream and a GstDiscovererVideoInfo sub-stream for the audio and video streams respectively.
typedef struct _GstDiscovererContainerInfo GstDiscovererContainerInfo;
GstDiscovererStreamInfo specific to container streams.
typedef struct _GstDiscovererAudioInfo GstDiscovererAudioInfo;
GstDiscovererStreamInfo specific to audio streams.
typedef struct _GstDiscovererVideoInfo GstDiscovererVideoInfo;
GstDiscovererStreamInfo specific to video streams (this includes images).
typedef struct _GstDiscovererSubtitleInfo GstDiscovererSubtitleInfo;
GstDiscovererStreamInfo specific to subtitle streams (this includes text and image based ones).
GstCaps * gst_discoverer_stream_info_get_caps (GstDiscovererStreamInfo *info
);
|
a GstDiscovererStreamInfo |
Returns : |
the GstCaps of the stream. Unref with gst_caps_unref after usage. [transfer full] |
const GstStructure * gst_discoverer_stream_info_get_misc
(GstDiscovererStreamInfo *info
);
|
a GstDiscovererStreamInfo |
Returns : |
additional information regarding the stream (for
example codec version, profile, etc..). If you wish to use the GstStructure
after the life-time of info you will need to copy it. [transfer none]
|
GstDiscovererStreamInfo * gst_discoverer_stream_info_get_next
(GstDiscovererStreamInfo *info
);
|
a GstDiscovererStreamInfo |
Returns : |
the next GstDiscovererStreamInfo in a chain. NULL
for final streams.
Unref with gst_discoverer_stream_info_unref after usage. [transfer full]
|
GstDiscovererStreamInfo * gst_discoverer_stream_info_get_previous
(GstDiscovererStreamInfo *info
);
|
a GstDiscovererStreamInfo |
Returns : |
the previous GstDiscovererStreamInfo in a chain.
NULL for starting points. Unref with gst_discoverer_stream_info_unref
after usage. [transfer full]
|
const GstTagList * gst_discoverer_stream_info_get_tags (GstDiscovererStreamInfo *info
);
|
a GstDiscovererStreamInfo |
Returns : |
the tags contained in this stream. If you wish to
use the tags after the life-time of info you will need to copy them. [transfer none]
|
const GstToc * gst_discoverer_stream_info_get_toc (GstDiscovererStreamInfo *info
);
|
a GstDiscovererStreamInfo |
Returns : |
the TOC contained in this stream. If you wish to
use the TOC after the life-time of info you will need to copy it. [transfer none]
|
#define gst_discoverer_stream_info_ref(info) ((GstDiscovererStreamInfo*) g_object_ref((GObject*) info))
Increments the reference count of info
.
|
a GstDiscovererStreamInfo |
Returns : |
the same GstDiscovererStreamInfo object |
#define gst_discoverer_stream_info_unref(info) (g_object_unref((GObject*) info))
Decrements the reference count of info
.
|
a GstDiscovererStreamInfo |
void gst_discoverer_stream_info_list_free
(GList *infos
);
Decrements the reference count of all contained GstDiscovererStreamInfo and fress the GList.
|
a GList of GstDiscovererStreamInfo. [element-type GstPbutils.DiscovererStreamInfo] |
const gchar * gst_discoverer_stream_info_get_stream_type_nick
(GstDiscovererStreamInfo *info
);
|
a GstDiscovererStreamInfo |
Returns : |
a human readable name for the stream type of the given info (ex : "audio",
"container",...). |
GList * gst_discoverer_info_get_audio_streams
(GstDiscovererInfo *info
);
Finds all the GstDiscovererAudioInfo contained in info
|
a GstDiscovererInfo |
Returns : |
A GList of
matching GstDiscovererStreamInfo. The caller should free it with
gst_discoverer_stream_info_list_free() . [transfer full][element-type GstPbutils.DiscovererStreamInfo]
|
GList * gst_discoverer_info_get_container_streams
(GstDiscovererInfo *info
);
Finds all the GstDiscovererContainerInfo contained in info
|
a GstDiscovererInfo |
Returns : |
A GList of
matching GstDiscovererStreamInfo. The caller should free it with
gst_discoverer_stream_info_list_free() . [transfer full][element-type GstPbutils.DiscovererStreamInfo]
|
GList * gst_discoverer_info_get_streams (GstDiscovererInfo *info
,GType streamtype
);
Finds the GstDiscovererStreamInfo contained in info
that match the
given streamtype
.
|
a GstDiscovererInfo |
|
a GType derived from GstDiscovererStreamInfo |
Returns : |
A GList of
matching GstDiscovererStreamInfo. The caller should free it with
gst_discoverer_stream_info_list_free() . [transfer full][element-type GstPbutils.DiscovererStreamInfo]
|
GList * gst_discoverer_info_get_subtitle_streams
(GstDiscovererInfo *info
);
Finds all the GstDiscovererSubtitleInfo contained in info
|
a GstDiscovererInfo |
Returns : |
A GList of
matching GstDiscovererStreamInfo. The caller should free it with
gst_discoverer_stream_info_list_free() . [transfer full][element-type GstPbutils.DiscovererStreamInfo]
|
GList * gst_discoverer_info_get_video_streams
(GstDiscovererInfo *info
);
Finds all the GstDiscovererVideoInfo contained in info
|
a GstDiscovererInfo |
Returns : |
A GList of
matching GstDiscovererStreamInfo. The caller should free it with
gst_discoverer_stream_info_list_free() . [transfer full][element-type GstPbutils.DiscovererStreamInfo]
|
guint gst_discoverer_audio_info_get_bitrate
(const GstDiscovererAudioInfo *info
);
|
a GstDiscovererAudioInfo |
Returns : |
the average or nominal bitrate of the stream in bits/second. |
guint gst_discoverer_audio_info_get_channels
(const GstDiscovererAudioInfo *info
);
|
a GstDiscovererAudioInfo |
Returns : |
the number of channels in the stream. |
guint gst_discoverer_audio_info_get_depth (const GstDiscovererAudioInfo *info
);
|
a GstDiscovererAudioInfo |
Returns : |
the number of bits used per sample in each channel. |
const gchar * gst_discoverer_audio_info_get_language
(const GstDiscovererAudioInfo *info
);
|
a GstDiscovererAudioInfo |
Returns : |
the language of the stream, or NULL if unknown. |
guint gst_discoverer_audio_info_get_max_bitrate
(const GstDiscovererAudioInfo *info
);
|
a GstDiscovererAudioInfo |
Returns : |
the maximum bitrate of the stream in bits/second. |
guint gst_discoverer_audio_info_get_sample_rate
(const GstDiscovererAudioInfo *info
);
|
a GstDiscovererAudioInfo |
Returns : |
the sample rate of the stream in Hertz. |
GList * gst_discoverer_container_info_get_streams
(GstDiscovererContainerInfo *info
);
|
a GstDiscovererStreamInfo |
Returns : |
the list of
GstDiscovererStreamInfo this container stream offers.
Free with gst_discoverer_stream_info_list_free() after usage. [transfer full][element-type GstPbutils.DiscovererStreamInfo]
|
const gchar * gst_discoverer_subtitle_info_get_language
(const GstDiscovererSubtitleInfo *info
);
|
a GstDiscovererSubtitleInfo |
Returns : |
the language of the stream, or NULL if unknown. |
guint gst_discoverer_video_info_get_bitrate
(const GstDiscovererVideoInfo *info
);
|
a GstDiscovererVideoInfo |
Returns : |
the average or nominal bitrate of the video stream in bits/second. |
guint gst_discoverer_video_info_get_depth (const GstDiscovererVideoInfo *info
);
|
a GstDiscovererVideoInfo |
Returns : |
the depth in bits of the video stream. |
guint gst_discoverer_video_info_get_framerate_denom
(const GstDiscovererVideoInfo *info
);
|
a GstDiscovererVideoInfo |
Returns : |
the framerate of the video stream (denominator). |
guint gst_discoverer_video_info_get_framerate_num
(const GstDiscovererVideoInfo *info
);
|
a GstDiscovererVideoInfo |
Returns : |
the framerate of the video stream (numerator). |
guint gst_discoverer_video_info_get_height
(const GstDiscovererVideoInfo *info
);
|
a GstDiscovererVideoInfo |
Returns : |
the height of the video stream in pixels. |
gboolean gst_discoverer_video_info_is_interlaced
(const GstDiscovererVideoInfo *info
);
|
a GstDiscovererVideoInfo |
Returns : |
TRUE if the stream is interlaced, else FALSE . |
gboolean gst_discoverer_video_info_is_image (const GstDiscovererVideoInfo *info
);
|
a GstDiscovererVideoInfo |
Returns : |
TRUE if the video stream corresponds to an image (i.e. only contains one frame). |
guint gst_discoverer_video_info_get_max_bitrate
(const GstDiscovererVideoInfo *info
);
|
a GstDiscovererVideoInfo |
Returns : |
the maximum bitrate of the video stream in bits/second. |
guint gst_discoverer_video_info_get_par_denom
(const GstDiscovererVideoInfo *info
);
|
a GstDiscovererVideoInfo |
Returns : |
the Pixel Aspect Ratio (PAR) of the video stream (denominator). |
guint gst_discoverer_video_info_get_par_num
(const GstDiscovererVideoInfo *info
);
|
a GstDiscovererVideoInfo |
Returns : |
the Pixel Aspect Ratio (PAR) of the video stream (numerator). |
guint gst_discoverer_video_info_get_width (const GstDiscovererVideoInfo *info
);
|
a GstDiscovererVideoInfo |
Returns : |
the width of the video stream in pixels. |
"timeout"
property "timeout" guint64 : Read / Write / Construct
The duration (in nanoseconds) after which the discovery of an individual URI will timeout.
If the discovery of a URI times out, the GST_DISCOVERER_TIMEOUT
will be
set on the result flags.
Allowed values: [1000000000,3600000000000]
Default value: 15000000000
"discovered"
signalvoid user_function (GstDiscoverer *discoverer,
GstDiscovererInfo *info,
GError *error,
gpointer user_data) : Run Last
Will be emitted when all information on a URI could be discovered, or an error ocurred.
When an error occurs, info
might still contain some partial information,
depending on the circumstances of the error.
|
the GstDiscoverer |
|
the results GstDiscovererInfo |
|
GError, which will be non-NULL if an error occurred during discovery. You must not free this GError, it will be freed by the discoverer. [type GLib.Error] |
|
user data set when the signal handler was connected. |
"finished"
signalvoid user_function (GstDiscoverer *discoverer,
gpointer user_data) : Run Last
Will be emitted when all pending URIs have been processed.
|
the GstDiscoverer |
|
user data set when the signal handler was connected. |
"source-setup"
signalvoid user_function (GstDiscoverer *discoverer,
GstElement *source,
gpointer user_data) : Run Last
This signal is emitted after the source element has been created for, so the URI being discovered, so it can be configured by setting additional properties (e.g. set a proxy server for an http source, or set the device and read speed for an audio cd source).
This signal is usually emitted from the context of a GStreamer streaming thread.
|
the GstDiscoverer |
|
source element |
|
user data set when the signal handler was connected. |
"starting"
signalvoid user_function (GstDiscoverer *discoverer,
gpointer user_data) : Run Last
Will be emitted when the discover starts analyzing the pending URIs
|
the GstDiscoverer |
|
user data set when the signal handler was connected. |