design: decodebin: simplify non-linked handling explanation
Additionally: fix missing markup & drop needless escaping
This commit is contained in:
parent
8f548ae2f7
commit
5f1ce5aa5d
@ -43,7 +43,9 @@ to assist or fine-tune the process.
|
|||||||
|
|
||||||
- **'autoplug-continue'**:
|
- **'autoplug-continue'**:
|
||||||
|
|
||||||
|
```
|
||||||
gboolean user_function (GstElement * decodebin, GstPad *pad, GstCaps * caps)
|
gboolean user_function (GstElement * decodebin, GstPad *pad, GstCaps * caps)
|
||||||
|
```
|
||||||
|
|
||||||
This signal is fired at the very beginning with the source pad `GstCaps`. If
|
This signal is fired at the very beginning with the source pad `GstCaps`. If
|
||||||
the callback returns TRUE, the process continues normally. If the
|
the callback returns TRUE, the process continues normally. If the
|
||||||
@ -52,7 +54,9 @@ to assist or fine-tune the process.
|
|||||||
|
|
||||||
- **'autoplug-factories'**:
|
- **'autoplug-factories'**:
|
||||||
|
|
||||||
|
```
|
||||||
GValueArray user_function (GstElement* decodebin, GstPad* pad, GstCaps* caps);
|
GValueArray user_function (GstElement* decodebin, GstPad* pad, GstCaps* caps);
|
||||||
|
```
|
||||||
|
|
||||||
Get a list of elementfactories for @pad with @caps. This function is
|
Get a list of elementfactories for @pad with @caps. This function is
|
||||||
used to instruct decodebin2 of the elements it should try to
|
used to instruct decodebin2 of the elements it should try to
|
||||||
@ -62,7 +66,9 @@ to assist or fine-tune the process.
|
|||||||
|
|
||||||
- **'autoplug-select'**:
|
- **'autoplug-select'**:
|
||||||
|
|
||||||
|
```
|
||||||
gint user_function (GstElement* decodebin, GstPad* pad, GstCaps*caps, GValueArray* factories);
|
gint user_function (GstElement* decodebin, GstPad* pad, GstCaps*caps, GValueArray* factories);
|
||||||
|
```
|
||||||
|
|
||||||
This signal is fired once autoplugging has got a list of compatible
|
This signal is fired once autoplugging has got a list of compatible
|
||||||
`GstElementFactory`. The signal is emitted with the `GstCaps` of the
|
`GstElementFactory`. The signal is emitted with the `GstCaps` of the
|
||||||
@ -92,13 +98,13 @@ By default the target caps are:
|
|||||||
### Media chain/group handling
|
### Media chain/group handling
|
||||||
|
|
||||||
When autoplugging, all streams coming out of a demuxer will be grouped
|
When autoplugging, all streams coming out of a demuxer will be grouped
|
||||||
in a DecodeGroup.
|
in a `DecodeGroup`.
|
||||||
|
|
||||||
All new source pads created on that demuxer after it has emitted the
|
All new source pads created on that demuxer after it has emitted the
|
||||||
'no-more-pads' signal will be put in another DecodeGroup.
|
'no-more-pads' signal will be put in another DecodeGroup.
|
||||||
|
|
||||||
Only one decodegroup can be active at any given time. If a new
|
Only one decodegroup can be active at any given time. If a new
|
||||||
decodegroup is created while another one exists, that decodegroup will
|
decodegroup is created while another one exists, that `DecodeGroup` will
|
||||||
be set as blocking until the existing one has drained.
|
be set as blocking until the existing one has drained.
|
||||||
|
|
||||||
## DecodeGroup
|
## DecodeGroup
|
||||||
@ -118,12 +124,12 @@ The DecodeGroup contains:
|
|||||||
|
|
||||||
### Proper group draining
|
### Proper group draining
|
||||||
|
|
||||||
The DecodeGroup takes care that all the streams in the group are
|
The `DecodeGroup` takes care that all the streams in the group are
|
||||||
completely drained (EOS has come through all source ghost pads).
|
completely drained (EOS has come through all source ghost pads).
|
||||||
|
|
||||||
### Pre-roll and block
|
### Pre-roll and block
|
||||||
|
|
||||||
The DecodeGroup has a global blocking feature. If enabled, all the
|
The `DecodeGroup` has a global blocking feature. If enabled, all the
|
||||||
ghosted source pads for that group will be blocked.
|
ghosted source pads for that group will be blocked.
|
||||||
|
|
||||||
A method is available to unblock all blocked pads for that group.
|
A method is available to unblock all blocked pads for that group.
|
||||||
@ -138,11 +144,11 @@ few differences:
|
|||||||
- Multiple streams handling.
|
- Multiple streams handling.
|
||||||
|
|
||||||
The element handles queueing data on more than one stream at once.
|
The element handles queueing data on more than one stream at once.
|
||||||
To achieve such a feature it has request sink pads (sink\_%u) and
|
To achieve such a feature it has request sink pads (`sink_%u`) and
|
||||||
'sometimes' src pads (src\_%u).
|
'sometimes' src pads (`src_%u`).
|
||||||
|
|
||||||
When requesting a given sinkpad, the associated srcpad for that
|
When requesting a given sinkpad, the associated srcpad for that
|
||||||
stream will be created. Ex: requesting sink\_1 will generate src\_1.
|
stream will be created. Ex: requesting `sink_1` will generate `src_1`.
|
||||||
|
|
||||||
- Non-starvation on multiple streams.
|
- Non-starvation on multiple streams.
|
||||||
|
|
||||||
@ -170,14 +176,12 @@ few differences:
|
|||||||
synchronously in relation to the order in which it arrived globally
|
synchronously in relation to the order in which it arrived globally
|
||||||
in the element (see 'Synchronous data pushing' below).
|
in the element (see 'Synchronous data pushing' below).
|
||||||
|
|
||||||
When woken up by the GCondition, the `GstTask` will try to push the
|
When woken up by the `GCondition`, the `GstTask` will try to push the
|
||||||
next `GstBuffer`/`GstEvent` on the queue. If pushing the
|
next `GstBuffer`/`GstEvent` on the queue. If pushing returns
|
||||||
`GstBuffer`/`GstEvent` returns `GST_FLOW_NOT_LINKED`, then the
|
`GST_FLOW_NOT_LINKED`, the associated queue is marked as `not-linked`.
|
||||||
associated queue is marked as 'not-linked'. If pushing the
|
If pushing succeeds, the queue will no longer be marked as `not-linked`.
|
||||||
`GstBuffer`/`GstEvent` succeeded the queue will no longer be marked as
|
|
||||||
'not-linked'.
|
|
||||||
|
|
||||||
If pushing on all srcpads returns `GstFlowReturn` different from
|
If pushing on all srcpads returns a `GstFlowReturn` different from
|
||||||
`GST_FLOW_OK`, then all the srcpads' tasks are stopped and
|
`GST_FLOW_OK`, then all the srcpads' tasks are stopped and
|
||||||
subsequent pushes on sinkpads will return `GST_FLOW_NOT_LINKED`.
|
subsequent pushes on sinkpads will return `GST_FLOW_NOT_LINKED`.
|
||||||
|
|
||||||
@ -216,7 +220,9 @@ Where there are multiple stream formats, parsers are usually expected to
|
|||||||
be able to convert between the different formats. This will, if
|
be able to convert between the different formats. This will, if
|
||||||
implemented correctly, work as expected in a static pipeline such as
|
implemented correctly, work as expected in a static pipeline such as
|
||||||
|
|
||||||
|
```
|
||||||
... ! parser ! decoder ! sink
|
... ! parser ! decoder ! sink
|
||||||
|
```
|
||||||
|
|
||||||
where the parser can query the decoder's capabilities even before
|
where the parser can query the decoder's capabilities even before
|
||||||
processing the first piece of data, and configure itself to convert
|
processing the first piece of data, and configure itself to convert
|
||||||
|
Loading…
x
Reference in New Issue
Block a user