design: negotiation: add missing markup

This commit is contained in:
Reynaldo H. Verdejo Pinochet 2016-12-28 21:45:20 -08:00
parent c71e2072e7
commit 53ff8950b4

View file

@ -23,9 +23,9 @@ There are 4 queries/events used in caps negotiation:
## Queries ## Queries
A pad can ask the peer pad for its supported GstCaps. It does this with A pad can ask the peer pad for its supported `GstCaps`. It does this with
the CAPS query. The list of supported caps can be used to choose an the CAPS query. The list of supported caps can be used to choose an
appropriate GstCaps for the data transfer. The CAPS query works appropriate `GstCaps` for the data transfer. The CAPS query works
recursively, elements should take their peers into consideration when recursively, elements should take their peers into consideration when
constructing the possible caps. Because the result caps can be very constructing the possible caps. Because the result caps can be very
large, a filter can be used to restrict the caps. Only the caps that large, a filter can be used to restrict the caps. Only the caps that
@ -33,7 +33,7 @@ match the filter will be returned as the result caps. The order of the
filter caps gives the order of preference of the caller and should be filter caps gives the order of preference of the caller and should be
taken into account for the returned caps. taken into account for the returned caps.
* **`filter`** (in) `GST_TYPE_CAPS` (default NULL): - a GstCaps to filter the results against * **`filter`** (in) `GST_TYPE_CAPS` (default NULL): - a `GstCaps` to filter the results against
* **`caps`** (out) `GST_TYPE_CAPS` (default NULL): - the result caps * **`caps`** (out) `GST_TYPE_CAPS` (default NULL): - the result caps
A pad can ask the peer pad if it supports a given caps. It does this A pad can ask the peer pad if it supports a given caps. It does this
@ -41,15 +41,15 @@ with the `ACCEPT_CAPS` query. The caps must be fixed. The `ACCEPT_CAPS`
query is not required to work recursively, it can simply return TRUE if query is not required to work recursively, it can simply return TRUE if
a subsequent CAPS event with those caps would return success. a subsequent CAPS event with those caps would return success.
* **`caps`** (in) `GST_TYPE_CAPS`: - a GstCaps to check, must be fixed * **`caps`** (in) `GST_TYPE_CAPS`: - a `GstCaps` to check, must be fixed
* **`result`** (out) `G_TYPE_BOOLEAN` (default FALSE): - TRUE if the caps are accepted * **`result`** (out) `G_TYPE_BOOLEAN` (default FALSE): - TRUE if the caps are accepted
## Events ## Events
When a media format is negotiated, peer elements are notified of the When a media format is negotiated, peer elements are notified of the
GstCaps with the CAPS event. The caps must be fixed. `GstCaps` with the CAPS event. The caps must be fixed.
* **`caps`** `GST_TYPE_CAPS`: - the negotiated GstCaps, must be fixed * **`caps`** `GST_TYPE_CAPS`: - the negotiated `GstCaps`, must be fixed
## Operation ## Operation
@ -70,7 +70,7 @@ negotiation.
The basics of negotiation are as follows: The basics of negotiation are as follows:
- GstCaps (see [caps](design/caps.md)) are refcounted before they are pushed as - `GstCaps` (see [caps](design/caps.md)) are refcounted before they are pushed as
an event to describe the contents of the following buffer. an event to describe the contents of the following buffer.
- An element should reconfigure itself to the new format received as a - An element should reconfigure itself to the new format received as a
@ -137,12 +137,13 @@ endif
#### Negotiate allocator/bufferpool with the ALLOCATION query #### Negotiate allocator/bufferpool with the ALLOCATION query
```
buffer = gst_buffer_new_allocate (NULL, size, 0); buffer = gst_buffer_new_allocate (NULL, size, 0);
# fill buffer and push # fill buffer and push
```
The general flow for a sink pad starting a renegotiation. The general flow for a sink pad starting a renegotiation.
``` ```
src sink src sink
| | | |
@ -177,7 +178,7 @@ push buffer |---------------->| Process buffer of type B
* Who decides what format to use? * Who decides what format to use?
- src pad always decides, by convention. sinkpad can suggest a format - src pad always decides, by convention. sinkpad can suggest a format
by putting it high in the caps query result GstCaps. by putting it high in the caps query result `GstCaps`.
- since the src decides, it can always choose something that it can do, - since the src decides, it can always choose something that it can do,
so this step can only fail if the sinkpad stated it could accept so this step can only fail if the sinkpad stated it could accept
something while later on it couldn't. something while later on it couldn't.
@ -315,7 +316,7 @@ We can identify 3 patterns in negotiation:
* Fixed : Can't choose the output format * Fixed : Can't choose the output format
- Caps encoded in the stream - Caps encoded in the stream
- A video/audio decoder - A video/audio decoder
- usually uses gst_pad_use_fixed_caps() - usually uses `gst_pad_use_fixed_caps()`
* Transform * Transform
- Caps not modified (passthrough) - Caps not modified (passthrough)