mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-14 05:12:09 +00:00
73 lines
2.7 KiB
Text
73 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/avi, auds).. !
|
||
|
! ! ! !
|
||
|
! -src ! !
|
||
|
! / ! (video/avi, 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/avi, ! ! ! ! !
|
||
|
! ! ! auds).. (--------) (------) !
|
||
|
! -sink ! (--------) !
|
||
|
! / ! (video/avi, !avitypes! !
|
||
|
-sink ! ! vids).. ! ! !
|
||
|
! (----------) \-sink src -------------------- (audio/raw)
|
||
|
! (--------) !
|
||
|
(----------------------------------------------------------------)
|
||
|
|
||
|
|
||
|
|
||
|
TODO
|
||
|
----
|
||
|
|
||
|
automatically generate the padtemplates from all possible avi types
|
||
|
found in the registry.
|
||
|
|
||
|
|