mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-09-08 13:18:52 +00:00
Original commit message from CVS: * gst/avi/README: * gst/avi/gstavidemux.c: (gst_avi_demux_handle_src_query), (gst_avi_demux_parse_stream), (gst_avi_demux_parse_index), (gst_avi_demux_stream_index), (gst_avi_demux_sync), (gst_avi_demux_stream_scan), (gst_avi_demux_massage_index), (gst_avi_demux_calculate_durations_from_index), (gst_avi_demux_stream_header_push), (gst_avi_demux_stream_header_pull), (gst_avi_demux_combine_flows), (gst_avi_demux_process_next_entry), (gst_avi_demux_stream_data): Don't abort on out-of-memory. Use stream-nr as unsigned integer only.
72 lines
2.7 KiB
Text
72 lines
2.7 KiB
Text
The avi decoder plugins
|
|
-----------------------
|
|
|
|
The avi decoder consists of a set of gstreamer plugins:
|
|
|
|
- demuxer (avidemux)
|
|
- avi to gstreamer type converter (avitypes)
|
|
- windows dlls wrappers.
|
|
|
|
the avidecoder element uses the above plugins to perform the avi
|
|
decoding. It is constructed as a custom bin which initially only has
|
|
the demuxer element in it. The demuxer has a set of padtemplates for
|
|
raw audio and video.
|
|
|
|
(------------------------------------)
|
|
! avidecoder !
|
|
! (video/raw)...
|
|
! (----------) !
|
|
! ! demuxer (video/x-msvideo, auds)..
|
|
! ! ! !
|
|
! -src ! !
|
|
! / ! (video/x-msvideo, vids)..
|
|
- src ! ! !
|
|
! (----------) (audio/raw)...
|
|
! !
|
|
(------------------------------------)
|
|
|
|
the demuxer has a set of padtemplates for the raw avi header properties.
|
|
|
|
The avi decoder will act on the new_pad signal of the demuxer element
|
|
and will attach an avitype plugin to the new pad. Caps negotiation will
|
|
convert the raw avi caps to the gstreamer caps. If the src pad of the
|
|
avitypes plugin are compatible with the avidecoder padtemplate, the
|
|
avitype pad is ghosted to the avidecoder bin, this is the case where no
|
|
codec is needed (for raw PCM samples, for example).
|
|
|
|
When the avitypes caps are not compatible with one of the avidecoder
|
|
templates, a static autoplugger is used the find an element to connect
|
|
the demuxers pad to the decoders padtemplate.
|
|
|
|
When no element could be found, an windec plugin is attached to the
|
|
demuxers pad and the avitypes plugin is removed from the decoder.
|
|
|
|
|
|
example:
|
|
--------
|
|
|
|
An avidecoder that has a video pad (decoded with windows dlls) and an
|
|
audio pad (raw PCM).
|
|
|
|
(----------------------------------------------------------------)
|
|
! avidecoder (--------) (------) !
|
|
! !avitypes! !windec! /-- (video/raw)
|
|
! (----------) /-sink src--sink src ----- !
|
|
! !demuxer (video/x-msvideo, ! ! ! !
|
|
! ! ! auds).. (--------) (------) !
|
|
! -sink ! (--------) !
|
|
! / ! (video/x-..,!avitypes! !
|
|
-sink ! ! vids).. ! ! !
|
|
! (----------) \-sink src -------------------- (audio/raw)
|
|
! (--------) !
|
|
(----------------------------------------------------------------)
|
|
|
|
|
|
|
|
TODO
|
|
----
|
|
|
|
automatically generate the padtemplates from all possible avi types
|
|
found in the registry.
|
|
|
|
|