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	video/x-h263
MJPEG		MJPG		image/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
