GstTypeFindHelper

GstTypeFindHelper — Utility functions for typefinding

Synopsis


#include <gst/base/gsttypefindhelper.h>

GstCaps*            gst_type_find_helper                (GstPad *src,
                                                         guint64 size);
GstCaps*            gst_type_find_helper_for_buffer     (GstObject *obj,
                                                         GstBuffer *buf,
                                                         GstTypeFindProbability *prob);
GstFlowReturn       (*GstTypeFindHelperGetRangeFunction)
                                                        (GstObject *obj,
                                                         guint64 offset,
                                                         guint length,
                                                         GstBuffer **buffer);
GstCaps*            gst_type_find_helper_get_range      (GstObject *obj,
                                                         GstTypeFindHelperGetRangeFunction func,
                                                         guint64 size,
                                                         GstTypeFindProbability *prob);

Description

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.

Details

gst_type_find_helper ()

GstCaps*            gst_type_find_helper                (GstPad *src,
                                                         guint64 size);

Tries to find what type of data is flowing from the given source GstPad.

src : A source GstPad
size : The length in bytes
Returns : The GstCaps corresponding to the data stream. Returns NULL if no GstCaps matches the data stream.

gst_type_find_helper_for_buffer ()

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.

obj : object doing the typefinding, or NULL (used for logging)
buf : a GstBuffer with data to typefind
prob : location to store the probability of the found caps, or NULL
Returns : 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().

GstTypeFindHelperGetRangeFunction ()

GstFlowReturn       (*GstTypeFindHelperGetRangeFunction)
                                                        (GstObject *obj,
                                                         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.

obj : a GstObject that will handle the getrange request
offset : the offset of the range
length : the length of the range
buffer : a memory location to hold the result buffer
Returns : GST_FLOW_OK for success

gst_type_find_helper_get_range ()

GstCaps*            gst_type_find_helper_get_range      (GstObject *obj,
                                                         GstTypeFindHelperGetRangeFunction func,
                                                         guint64 size,
                                                         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).

obj : A GstObject that will be passed as first argument to func
func : A generic GstTypeFindHelperGetRangeFunction that will be used to access data at random offsets when doing the typefinding
size : The length in bytes
prob : location to store the probability of the found caps, or NULL
Returns : The GstCaps corresponding to the data stream. Returns NULL if no GstCaps matches the data stream.