mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-23 16:50:47 +00:00
88 lines
2.7 KiB
Text
88 lines
2.7 KiB
Text
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
|