mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-24 01:00:37 +00:00
3f3536bf73
Original commit message from CVS: * docs/design/part-element-transform.txt: Added some docs about the design of tranform elements. * libs/gst/base/gstbasesrc.c: (gst_base_src_perform_seek), (gst_base_src_loop), (gst_base_src_change_state): Mark buffers with the DISCONT flag.
38 lines
1 KiB
Text
38 lines
1 KiB
Text
Transform elements
|
|
------------------
|
|
|
|
Transform elements transform input buffers to output buffers based
|
|
on the sink and source caps.
|
|
|
|
typical transform elements include:
|
|
|
|
- audio convertors (audioconvert, ...)
|
|
- video convertors (colorspace, videoscale, audioconvert, ...)
|
|
- filters (capfilter, colorbalance,
|
|
|
|
The implementation of the transform element has to take care of
|
|
the following things:
|
|
|
|
- efficient negotiation both up and downstream
|
|
- efficient buffer alloc and other buffer management
|
|
|
|
Some transform elements can operate in different modes:
|
|
|
|
- passthrough (no changes to buffers)
|
|
- in-place (changes made to incomming buffer)
|
|
- metadata changes only
|
|
|
|
Depending on the mode of operation the buffer allocation strategy might change.
|
|
|
|
|
|
Negotiation
|
|
-----------
|
|
|
|
The transform element is configured to perform a specific transform in these
|
|
two situations:
|
|
|
|
- new caps are received on the sink pad.
|
|
- new caps are received on the source pad when allocating an output buffer and
|
|
we can transform to these caps with the current input buffer.
|
|
|
|
|