mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-10 03:19:40 +00:00
1b7b0e099d
Original commit message from CVS: * ext/mad/gstmad.c: (gst_mad_check_caps_reset), (gst_mad_change_state): Allow for mp3 rate/channels changes. However, only very conservatively. Reason that we *have* to enable this is smiply because the mad find_sync() function is not good enough, it will regularly sync on random data as valid frames and therefore make us provide random caps as *final* caps of the stream. The best fix I could think of is to simply require several of the same stream changes in a row before we change caps. The actual testcase that works now is # * ext/ogg/Makefile.am: * ext/ogg/gstogg.c: (plugin_init): * ext/ogg/gstogmparse.c: OGM support (video only for now; I need an audio sample file). * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_base_init), (gst_asf_demux_process_stream), (gst_asf_demux_video_caps), (gst_asf_demux_add_video_stream): WMV extradata. * gst/playback/gstplaybasebin.c: (unknown_type): Don't error out on single unknown-types after all. It's wrong. If we found type of video and audio but not of a subtitle stream, it will still error out (which is unwanted). Will find a better fix later on. * gst/typefind/gsttypefindfunctions.c: (ogmvideo_type_find), (ogmaudio_type_find), (plugin_init): OGM support. |
||
---|---|---|
.. | ||
asf.vcproj | ||
asfheaders.c | ||
asfheaders.h | ||
gstasf.c | ||
gstasfdemux.c | ||
gstasfdemux.h | ||
gstasfmux.c | ||
gstasfmux.h | ||
Makefile.am | ||
README |
ASF Demuxer Plugin ================== Overview -------- This plugin is a demuxer for Microsoft's ASF Advanced Streaming Format or ASF [1]. This demuxer only supports ASF v1.0 since the vast majority of existing ASF files use that version. The specification has been derived from a third party source [2] without reference to the original. Design ------ The ASF format can carry any combination of audio, video or 'ASF_Command_Media' streams. For simplicity it is assumed that each file can carry up to 16 audio streams and 16 video streams. These are implemented as dynamic pads and appear as appropriate once the file headers have been parsed. (-------------------------) ! asfdemux ! ! (video/raw0)--- ! (video/raw1)--- ! (video/raw... --- src ! ! (audio/raw0)--- ! (audio/raw1)--- ! (audio/raw... ! ! (-------------------------) Known stream fourccs are: Type Tags MIME type ------------------------------------------ H263 H263 I263 MJPEG MJPG video/jpeg MPEG4 DIVX divx DX50 video/mpeg XVID xvid mp4s MP4S M4S2 m4s2 0x04000000 MSMPEG4V1 MPG4 video/mpeg MSMPEG4V2 MP42 video/mpeg MSMPEG4V3 MP43 DIV3 video/mpeg WMV1 WMV1 video/x-wmv, wmvversion = (int) 1 WMV2 WMV2 video/x-wmv, wmvversion = (int) 2 WMV3 WMV3 video/x-wmv, wmvversion = (int) 3 WMA1 WMA1 audio/x-wma, wmaversion = (int) 1 WMA2 WMA2 audio/x-wma, wmaversion = (int) 2 audio/x-wma, wmaversion = (int) 3 These video stream headers is very similar to that used in the AVI format as are the audio stream headers. In addition the content types are basically the same also so, for compatibility with existing plugins the src pads are set up as video/x-msvideo. This enables compatibility with the ffmpeg plugin. The demuxing process begins with the loop function gst_asf_demux_loop and parses the file in a recursive tree as follows: gst_asf_demux_loop() +-> gst_asf_demux_process_object() <---- +-> gst_asf_demux_process_stream() \ |-> gst_asf_demux_process_file() | |-> gst_asf_demux_process_header() --+ |-> gst_asf_demux_process_data() +-> gst_asf_demux_process_segment() +-> gst_asf_demux_process_chunk() Todo ---- - Support for ASF v2.0 - Support for command media streams References ---------- [1] Microsoft. ASF Specification - Windows Media Technologies. http://www.microsoft.com/windows/windowsmedia/format/asfspec.aspx (v01.20.01e, September 2003) [2] divx at euro.ru. ASF format version 1.0, reconstruction. http://avifile.sourceforge.net/asf-1.0.htm