gst/avi/: Don't abort on out-of-memory. Use stream-nr as unsigned integer only.
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.
2007-04-04 12:39:41 +00:00
|
|
|
The avi decoder plugins
|
2001-12-22 23:22:30 +00:00
|
|
|
-----------------------
|
|
|
|
|
|
|
|
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)...
|
|
|
|
! (----------) !
|
2003-11-27 21:49:39 +00:00
|
|
|
! ! demuxer (video/x-msvideo, auds)..
|
2001-12-22 23:22:30 +00:00
|
|
|
! ! ! !
|
|
|
|
! -src ! !
|
2003-11-27 21:49:39 +00:00
|
|
|
! / ! (video/x-msvideo, vids)..
|
2001-12-22 23:22:30 +00:00
|
|
|
- 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 ----- !
|
2003-11-27 21:49:39 +00:00
|
|
|
! !demuxer (video/x-msvideo, ! ! ! !
|
2001-12-22 23:22:30 +00:00
|
|
|
! ! ! auds).. (--------) (------) !
|
|
|
|
! -sink ! (--------) !
|
2003-11-27 21:49:39 +00:00
|
|
|
! / ! (video/x-..,!avitypes! !
|
2001-12-22 23:22:30 +00:00
|
|
|
-sink ! ! vids).. ! ! !
|
|
|
|
! (----------) \-sink src -------------------- (audio/raw)
|
|
|
|
! (--------) !
|
|
|
|
(----------------------------------------------------------------)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
TODO
|
|
|
|
----
|
|
|
|
|
|
|
|
automatically generate the padtemplates from all possible avi types
|
|
|
|
found in the registry.
|
|
|
|
|
|
|
|
|