mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-24 02:31:03 +00:00
77db559306
Original commit message from CVS: Riff, EBML, fourcc etc. work. Not fully finished, but better than what we used to have and definately worth a first broad testing. I've revived rifflib. Rifflib used to be a bytestream-for-riff, which just dup'ed bytestream. I've rewritten rifflib to be a modern riff- chunk parser that uses bytestream fully, plus adds some extra functions so that riff file parsing becomes extremely easy. It also contains some small usability functions for strh/strf and metadata parsing. Note that it doesn't use the new tagging yet, that's a TODO. Avidemux has been rewritten to use this. I think we all agreed that avidemux was pretty much a big mess, which is because it used all sort of bytestream magic all around the place. It was just ugly. This is a lot nicer, very complete and safe. I think this is far more robust than what the old avidemux could ever have been. Of course, it might contain bugs, please let me know. EBML writing has also been implemented. This is useful for matroska. I'm intending to modify avidemux (with a riffwriter) similarly. Maybe I'll change wavparse/-enc too to use rifflib. Lastly, several plugins have been modified to use rifflib's fourcc parsing instead of their own. this puts fourcc parsing in one central place, which should make it a lot simpler to add new fourccs. We might want to move this to its own lib instead of rifflib. Enjoy! |
||
---|---|---|
.. | ||
asfheaders.h | ||
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 spcification 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/raw0)--- ! (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 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/WM7/format/asfspec11300e.asp [2] divx at euro.ru. ASF format version 1.0, reconstruction. http://avifile.sourceforge.net/asf-1.0.htm