Top |
Utility functions for elements doing typefinding:
gst_type_find_helper()
does typefinding in pull mode, while
gst_type_find_helper_for_buffer()
is useful for elements needing to do
typefinding in push mode from a chain function.
GstCaps * gst_type_find_helper (GstPad *src
,guint64 size
);
Tries to find what type of data is flowing from the given source GstPad.
Free-function: gst_caps_unref
GstCaps * gst_type_find_helper_for_buffer (GstObject *obj
,GstBuffer *buf
,GstTypeFindProbability *prob
);
Tries to find what type of data is contained in the given GstBuffer, the assumption being that the buffer represents the beginning of the stream or file.
All available typefinders will be called on the data in order of rank. If
a typefinding function returns a probability of GST_TYPE_FIND_MAXIMUM
,
typefinding is stopped immediately and the found caps will be returned
right away. Otherwise, all available typefind functions will the tried,
and the caps with the highest probability will be returned, or NULL
if
the content of the buffer could not be identified.
Free-function: gst_caps_unref
the GstCaps corresponding to the data,
or NULL
if no type could be found. The caller should free the caps
returned with gst_caps_unref()
.
[transfer full][nullable]
GstCaps * gst_type_find_helper_for_extension (GstObject *obj
,const gchar *extension
);
Tries to find the best GstCaps associated with extension
.
All available typefinders will be checked against the extension in order
of rank. The caps of the first typefinder that can handle extension
will be
returned.
Free-function: gst_caps_unref
obj |
object doing the typefinding, or |
[allow-none] |
extension |
an extension |
the GstCaps corresponding to
extension
, or NULL
if no type could be found. The caller should free
the caps returned with gst_caps_unref()
.
[transfer full][nullable]
GstCaps * gst_type_find_helper_for_data (GstObject *obj
,const guint8 *data
,gsize size
,GstTypeFindProbability *prob
);
Tries to find what type of data is contained in the given data
, the
assumption being that the data represents the beginning of the stream or
file.
All available typefinders will be called on the data in order of rank. If
a typefinding function returns a probability of GST_TYPE_FIND_MAXIMUM
,
typefinding is stopped immediately and the found caps will be returned
right away. Otherwise, all available typefind functions will the tried,
and the caps with the highest probability will be returned, or NULL
if
the content of data
could not be identified.
Free-function: gst_caps_unref
the GstCaps corresponding to the data,
or NULL
if no type could be found. The caller should free the caps
returned with gst_caps_unref()
.
[transfer full][nullable]
GstFlowReturn (*GstTypeFindHelperGetRangeFunction) (GstObject *obj
,GstObject *parent
,guint64 offset
,guint length
,GstBuffer **buffer
);
This function will be called by gst_type_find_helper_get_range()
when
typefinding functions request to peek at the data of a stream at certain
offsets. If this function returns GST_FLOW_OK, the result buffer will be
stored in buffer
. The contents of buffer
is invalid for any other
return value.
This function is supposed to behave exactly like a GstPadGetRangeFunction.
GstCaps * gst_type_find_helper_get_range (GstObject *obj
,GstObject *parent
,GstTypeFindHelperGetRangeFunction func
,guint64 size
,const gchar *extension
,GstTypeFindProbability *prob
);
Utility function to do pull-based typefinding. Unlike gst_type_find_helper()
however, this function will use the specified function func
to obtain the
data needed by the typefind functions, rather than operating on a given
source pad. This is useful mostly for elements like tag demuxers which
strip off data at the beginning and/or end of a file and want to typefind
the stripped data stream before adding their own source pad (the specified
callback can then call the upstream peer pad with offsets adjusted for the
tag size, for example).
When extension
is not NULL
, this function will first try the typefind
functions for the given extension, which might speed up the typefinding
in many cases.
Free-function: gst_caps_unref
obj |
A GstObject that will be passed as first argument to |
|
parent |
the parent of |
[allow-none] |
func |
A generic GstTypeFindHelperGetRangeFunction that will be used to access data at random offsets when doing the typefinding. |
[scope call] |
size |
The length in bytes |
|
extension |
extension of the media |
|
prob |
location to store the probability of the found
caps, or |
[out][allow-none] |