Merging gst-plugins-ugly
[platform/upstream/gstreamer.git] / gst / asfdemux / README
1 ASF Demuxer Plugin
2 ==================
3
4 Overview
5 --------
6
7 This plugin is a demuxer for Microsoft's ASF Advanced Streaming Format
8 or ASF [1]. This demuxer only supports ASF v1.0 since the vast
9 majority of existing ASF files use that version. The specification
10 has been derived from a third party source [2] without reference to
11 the original.
12
13 Design
14 ------
15
16 The ASF format can carry any combination of audio, video or
17 'ASF_Command_Media' streams. For simplicity it is assumed that each
18 file can carry up to 16 audio streams and 16 video streams. These are
19 implemented as dynamic pads and appear as appropriate once the file
20 headers have been parsed.
21
22     (-------------------------)
23     ! asfdemux                !
24     !                    (video/raw0)---
25     !                    (video/raw1)---
26     !                    (video/raw...
27   --- src                     !
28     !                    (audio/raw0)---
29     !                    (audio/raw1)---
30     !                    (audio/raw...
31     !                         !
32     (-------------------------)
33
34
35 Known stream fourccs are:
36
37 Type            Tags            MIME type
38 ------------------------------------------
39 H263            H263 I263       video/x-h263
40 MJPEG           MJPG            image/jpeg      
41 MPEG4           DIVX divx DX50  video/mpeg
42                 XVID xvid mp4s  
43                 MP4S M4S2 m4s2
44                 0x04000000
45 MSMPEG4V1       MPG4            video/mpeg
46 MSMPEG4V2       MP42            video/mpeg
47 MSMPEG4V3       MP43 DIV3       video/mpeg
48 WMV1            WMV1            video/x-wmv, wmvversion = (int) 1
49 WMV2            WMV2            video/x-wmv, wmvversion = (int) 2
50 WMV3            WMV3            video/x-wmv, wmvversion = (int) 3
51 WMA1            WMA1            audio/x-wma, wmaversion = (int) 1
52 WMA2            WMA2            audio/x-wma, wmaversion = (int) 2
53                                 audio/x-wma, wmaversion = (int) 3
54
55 These video stream headers is very similar to that used in the AVI
56 format as are the audio stream headers. In addition the content types
57 are basically the same also so, for compatibility with existing
58 plugins the src pads are set up as video/x-msvideo. This enables
59 compatibility with the ffmpeg plugin.
60
61 The demuxing process begins with the loop function gst_asf_demux_loop
62 and parses the file in a recursive tree as follows:
63
64         gst_asf_demux_loop()
65         +-> gst_asf_demux_process_object()   <----
66             +-> gst_asf_demux_process_stream()    \
67             |-> gst_asf_demux_process_file()      |
68             |-> gst_asf_demux_process_header()  --+
69             |-> gst_asf_demux_process_data()
70                 +-> gst_asf_demux_process_segment()
71                     +-> gst_asf_demux_process_chunk()
72
73 Todo
74 ----
75
76 - Support for ASF v2.0
77 - Support for command media streams
78
79
80
81 References
82 ----------
83
84 [1] Microsoft. ASF Specification - Windows Media Technologies. 
85 http://www.microsoft.com/windows/windowsmedia/format/asfspec.aspx (v01.20.01e, September 2003)
86
87 [2] divx at euro.ru. ASF format version 1.0,
88 reconstruction. http://avifile.sourceforge.net/asf-1.0.htm