mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-16 13:26:36 +00:00
0757f3df2e
Original commit message from CVS: * docs/design/draft-push-pull.txt: * docs/design/draft-query.txt: * gst/base/gstbasesrc.c: (gst_basesrc_get_range_unlocked), (gst_basesrc_start): Added draft for new query API. Added draft for better selecting scheduling methods. Make basesrc ignore length if the subclass does not support it.
93 lines
2.7 KiB
Text
93 lines
2.7 KiB
Text
DRAFT Query
|
|
-----------
|
|
|
|
Purpose
|
|
|
|
Queries are used to get information about the stream.
|
|
A query is started on a specific pad and travels up or downstream.
|
|
|
|
Types of queries
|
|
|
|
- get length of stream
|
|
- get position in stream
|
|
- get seeking capabilities
|
|
- get latency
|
|
- convert one value to another
|
|
- query supported formats
|
|
- query internal links.
|
|
|
|
Current implementation
|
|
|
|
The current implementation of query requires pads to implement the
|
|
following functions:
|
|
|
|
gboolean (*GstPadConvertFunction) (GstPad *pad,
|
|
GstFormat src_format, gint64 src_value,
|
|
GstFormat *dest_format, gint64 *dest_value);
|
|
gboolean (*GstPadQueryFunction) (GstPad *pad, GstQueryType type,
|
|
GstFormat *format, gint64 *value);
|
|
GList* (*GstPadIntLinkFunction) (GstPad *pad);
|
|
const GstFormat* (*GstPadFormatsFunction) (GstPad *pad);
|
|
const GstEventMask* (*GstPadEventMaskFunction) (GstPad *pad);
|
|
const GstQueryType* (*GstPadQueryTypeFunction) (GstPad *pad);
|
|
|
|
Most of these functions are not very extensible in particular,
|
|
the queryfunction can only return one value.
|
|
|
|
|
|
Requirements
|
|
|
|
- multiple return values, grouped together when they make sense.
|
|
- one pad function to perform the query
|
|
- extensible queries.
|
|
|
|
Proposition
|
|
|
|
- define GstQuery extending GstData and containing a GstStructure (see GstMessage)
|
|
- define standard query types (see proposed types)
|
|
- define methods to create a parse the results in the GstQuery.
|
|
- define pad method:
|
|
|
|
gboolean (*GstPadQueryFunction) (GstPad *pad, GstQuery *query);
|
|
|
|
pad returns result in query structure and TRUE as result or FALSE when
|
|
query is not supported.
|
|
|
|
Proposed types
|
|
|
|
- GST_QUERY_SEEKING:
|
|
|
|
- get info on how seeking can be done
|
|
- getrange, with/without offset/size
|
|
- ranges where seeking is efficient (for caching network sources)
|
|
- flags describing seeking behaviour (forward, backward, segments,
|
|
play backwards, ...)
|
|
|
|
- GST_QUERY_POSITION:
|
|
|
|
- get info on current position of the stream
|
|
- start position
|
|
- current position
|
|
- end position
|
|
- length
|
|
|
|
- GST_QUERY_LATENCY:
|
|
|
|
- get amount of buffering
|
|
|
|
- GST_QUERY_CONVERT:
|
|
|
|
- convert format/value to another format/value pair.
|
|
|
|
- GST_QUERY_FORMATS:
|
|
|
|
- return list of supported formats.
|
|
|
|
- GST_QUERY_LINKS:
|
|
|
|
- return list of internal link pads.
|
|
|
|
Also????
|
|
|
|
- GST_QUERY_CAPS:
|
|
|