annotate matroska.c @ 3653:9db1fca3bd30 libavformat

matroskadec: use generic parser to parse clusters
author aurel
date Tue, 05 Aug 2008 00:41:05 +0000
parents 70edc1aeaf68
children 03df0b5927ff
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
380
9416dc106e06 matroska demuxer by ("Ronald S. Bultje" <R dot S dot Bultje at students dot uu dot nl>)
michael
parents:
diff changeset
1 /*
2142
3aa1f0f698de split some common code from the mkv demuxer that will be useful to the muxer
aurel
parents: 2023
diff changeset
2 * Matroska common data
380
9416dc106e06 matroska demuxer by ("Ronald S. Bultje" <R dot S dot Bultje at students dot uu dot nl>)
michael
parents:
diff changeset
3 * Copyright (c) 2003-2004 The ffmpeg Project
9416dc106e06 matroska demuxer by ("Ronald S. Bultje" <R dot S dot Bultje at students dot uu dot nl>)
michael
parents:
diff changeset
4 *
1358
0899bfe4105c Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 1332
diff changeset
5 * This file is part of FFmpeg.
0899bfe4105c Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 1332
diff changeset
6 *
0899bfe4105c Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 1332
diff changeset
7 * FFmpeg is free software; you can redistribute it and/or
380
9416dc106e06 matroska demuxer by ("Ronald S. Bultje" <R dot S dot Bultje at students dot uu dot nl>)
michael
parents:
diff changeset
8 * modify it under the terms of the GNU Lesser General Public
9416dc106e06 matroska demuxer by ("Ronald S. Bultje" <R dot S dot Bultje at students dot uu dot nl>)
michael
parents:
diff changeset
9 * License as published by the Free Software Foundation; either
1358
0899bfe4105c Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 1332
diff changeset
10 * version 2.1 of the License, or (at your option) any later version.
380
9416dc106e06 matroska demuxer by ("Ronald S. Bultje" <R dot S dot Bultje at students dot uu dot nl>)
michael
parents:
diff changeset
11 *
1358
0899bfe4105c Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 1332
diff changeset
12 * FFmpeg is distributed in the hope that it will be useful,
380
9416dc106e06 matroska demuxer by ("Ronald S. Bultje" <R dot S dot Bultje at students dot uu dot nl>)
michael
parents:
diff changeset
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9416dc106e06 matroska demuxer by ("Ronald S. Bultje" <R dot S dot Bultje at students dot uu dot nl>)
michael
parents:
diff changeset
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
9416dc106e06 matroska demuxer by ("Ronald S. Bultje" <R dot S dot Bultje at students dot uu dot nl>)
michael
parents:
diff changeset
15 * Lesser General Public License for more details.
9416dc106e06 matroska demuxer by ("Ronald S. Bultje" <R dot S dot Bultje at students dot uu dot nl>)
michael
parents:
diff changeset
16 *
9416dc106e06 matroska demuxer by ("Ronald S. Bultje" <R dot S dot Bultje at students dot uu dot nl>)
michael
parents:
diff changeset
17 * You should have received a copy of the GNU Lesser General Public
1358
0899bfe4105c Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 1332
diff changeset
18 * License along with FFmpeg; if not, write to the Free Software
896
edbe5c3717f9 Update licensing information: The FSF changed postal address.
diego
parents: 887
diff changeset
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
380
9416dc106e06 matroska demuxer by ("Ronald S. Bultje" <R dot S dot Bultje at students dot uu dot nl>)
michael
parents:
diff changeset
20 */
9416dc106e06 matroska demuxer by ("Ronald S. Bultje" <R dot S dot Bultje at students dot uu dot nl>)
michael
parents:
diff changeset
21
2142
3aa1f0f698de split some common code from the mkv demuxer that will be useful to the muxer
aurel
parents: 2023
diff changeset
22 #include "matroska.h"
380
9416dc106e06 matroska demuxer by ("Ronald S. Bultje" <R dot S dot Bultje at students dot uu dot nl>)
michael
parents:
diff changeset
23
2793
d5842afe8539 Make ff_mkv_codec_tags array const, it is never written.
reimar
parents: 2533
diff changeset
24 const CodecTags ff_mkv_codec_tags[]={
1024
144729fd2d6c cleanup codec_id mapping (untested)
michael
parents: 1021
diff changeset
25 // {"V_MS/VFW/FOURCC" , CODEC_ID_NONE},
144729fd2d6c cleanup codec_id mapping (untested)
michael
parents: 1021
diff changeset
26 {"V_UNCOMPRESSED" , CODEC_ID_RAWVIDEO},
2533
5f44093c0cdc Use V_MPEG4/ISO/ASP for mpeg4 when muxing mkv
conrad
parents: 2405
diff changeset
27 {"V_MPEG4/ISO/ASP" , CODEC_ID_MPEG4},
1024
144729fd2d6c cleanup codec_id mapping (untested)
michael
parents: 1021
diff changeset
28 {"V_MPEG4/ISO/SP" , CODEC_ID_MPEG4},
144729fd2d6c cleanup codec_id mapping (untested)
michael
parents: 1021
diff changeset
29 {"V_MPEG4/ISO/AP" , CODEC_ID_MPEG4},
144729fd2d6c cleanup codec_id mapping (untested)
michael
parents: 1021
diff changeset
30 {"V_MPEG4/ISO/AVC" , CODEC_ID_H264},
144729fd2d6c cleanup codec_id mapping (untested)
michael
parents: 1021
diff changeset
31 {"V_MPEG4/MS/V3" , CODEC_ID_MSMPEG4V3},
144729fd2d6c cleanup codec_id mapping (untested)
michael
parents: 1021
diff changeset
32 {"V_MPEG1" , CODEC_ID_MPEG1VIDEO},
144729fd2d6c cleanup codec_id mapping (untested)
michael
parents: 1021
diff changeset
33 {"V_MPEG2" , CODEC_ID_MPEG2VIDEO},
144729fd2d6c cleanup codec_id mapping (untested)
michael
parents: 1021
diff changeset
34 {"V_MJPEG" , CODEC_ID_MJPEG},
144729fd2d6c cleanup codec_id mapping (untested)
michael
parents: 1021
diff changeset
35 {"V_REAL/RV10" , CODEC_ID_RV10},
144729fd2d6c cleanup codec_id mapping (untested)
michael
parents: 1021
diff changeset
36 {"V_REAL/RV20" , CODEC_ID_RV20},
144729fd2d6c cleanup codec_id mapping (untested)
michael
parents: 1021
diff changeset
37 {"V_REAL/RV30" , CODEC_ID_RV30},
144729fd2d6c cleanup codec_id mapping (untested)
michael
parents: 1021
diff changeset
38 {"V_REAL/RV40" , CODEC_ID_RV40},
1949
18891c1e3e46 add support for V_THEORA into Matroska
aurel
parents: 1920
diff changeset
39 {"V_THEORA" , CODEC_ID_THEORA},
2405
1c57f2391cf9 Add V_SNOW
conrad
parents: 2279
diff changeset
40 {"V_SNOW" , CODEC_ID_SNOW},
1024
144729fd2d6c cleanup codec_id mapping (untested)
michael
parents: 1021
diff changeset
41 /* TODO: Real/Quicktime */
144729fd2d6c cleanup codec_id mapping (untested)
michael
parents: 1021
diff changeset
42
144729fd2d6c cleanup codec_id mapping (untested)
michael
parents: 1021
diff changeset
43 // {"A_MS/ACM" , CODEC_ID_NONE},
2278
5e5e2df75af3 reorder matroska codec tags so that the encoder picks up the appropriate tag
aurel
parents: 2264
diff changeset
44 {"A_MPEG/L3" , CODEC_ID_MP3},
2279
3c02e08e7b5a use the most appropriate codec id for A_MPEG/L1 and L2
aurel
parents: 2278
diff changeset
45 {"A_MPEG/L2" , CODEC_ID_MP2},
3c02e08e7b5a use the most appropriate codec id for A_MPEG/L1 and L2
aurel
parents: 2278
diff changeset
46 {"A_MPEG/L1" , CODEC_ID_MP2},
1024
144729fd2d6c cleanup codec_id mapping (untested)
michael
parents: 1021
diff changeset
47 {"A_PCM/INT/BIG" , CODEC_ID_PCM_U16BE},
144729fd2d6c cleanup codec_id mapping (untested)
michael
parents: 1021
diff changeset
48 {"A_PCM/INT/LIT" , CODEC_ID_PCM_U16LE},
144729fd2d6c cleanup codec_id mapping (untested)
michael
parents: 1021
diff changeset
49 // {"A_PCM/FLOAT/IEEE" , CODEC_ID_NONE},
144729fd2d6c cleanup codec_id mapping (untested)
michael
parents: 1021
diff changeset
50 {"A_AC3" , CODEC_ID_AC3},
144729fd2d6c cleanup codec_id mapping (untested)
michael
parents: 1021
diff changeset
51 {"A_DTS" , CODEC_ID_DTS},
144729fd2d6c cleanup codec_id mapping (untested)
michael
parents: 1021
diff changeset
52 {"A_VORBIS" , CODEC_ID_VORBIS},
1475
a83e86c05295 Add A_AAC codec identifier support in matroska.
aurel
parents: 1472
diff changeset
53 {"A_AAC" , CODEC_ID_AAC},
1537
8110f1a20f2a add support for FLAC in matroska
aurel
parents: 1534
diff changeset
54 {"A_FLAC" , CODEC_ID_FLAC},
1451
48cfca624912 WavPack support in Matroska
kostya
parents: 1358
diff changeset
55 {"A_WAVPACK4" , CODEC_ID_WAVPACK},
1534
4bf9dc98e127 add support for tta in matroska
aurel
parents: 1533
diff changeset
56 {"A_TTA1" , CODEC_ID_TTA},
2144
7fe203e939e5 add support for real audio in matroska
aurel
parents: 2142
diff changeset
57 {"A_REAL/14_4" , CODEC_ID_RA_144},
7fe203e939e5 add support for real audio in matroska
aurel
parents: 2142
diff changeset
58 {"A_REAL/28_8" , CODEC_ID_RA_288},
7fe203e939e5 add support for real audio in matroska
aurel
parents: 2142
diff changeset
59 {"A_REAL/ATRC" , CODEC_ID_ATRAC3},
7fe203e939e5 add support for real audio in matroska
aurel
parents: 2142
diff changeset
60 {"A_REAL/COOK" , CODEC_ID_COOK},
7fe203e939e5 add support for real audio in matroska
aurel
parents: 2142
diff changeset
61 // {"A_REAL/SIPR" , CODEC_ID_SIPRO},
3602
70edc1aeaf68 matroska: add support for A_QUICKTIME/QDM2 codec
aurel
parents: 2973
diff changeset
62 {"A_QUICKTIME/QDM2" , CODEC_ID_QDM2},
2244
93ffcd9d826f add support for Matroska subtitle tracks
aurel
parents: 2144
diff changeset
63
2278
5e5e2df75af3 reorder matroska codec tags so that the encoder picks up the appropriate tag
aurel
parents: 2264
diff changeset
64 {"S_TEXT/UTF8" , CODEC_ID_TEXT},
2244
93ffcd9d826f add support for Matroska subtitle tracks
aurel
parents: 2144
diff changeset
65 {"S_TEXT/ASCII" , CODEC_ID_TEXT},
2873
3fad6c2f343a export raw SSA tracks with their own codec ID (patch by Evgeniy Stepanov)
aurel
parents: 2793
diff changeset
66 {"S_TEXT/ASS" , CODEC_ID_SSA},
3fad6c2f343a export raw SSA tracks with their own codec ID (patch by Evgeniy Stepanov)
aurel
parents: 2793
diff changeset
67 {"S_TEXT/SSA" , CODEC_ID_SSA},
3fad6c2f343a export raw SSA tracks with their own codec ID (patch by Evgeniy Stepanov)
aurel
parents: 2793
diff changeset
68 {"S_ASS" , CODEC_ID_SSA},
3fad6c2f343a export raw SSA tracks with their own codec ID (patch by Evgeniy Stepanov)
aurel
parents: 2793
diff changeset
69 {"S_SSA" , CODEC_ID_SSA},
2244
93ffcd9d826f add support for Matroska subtitle tracks
aurel
parents: 2144
diff changeset
70 {"S_VOBSUB" , CODEC_ID_DVD_SUBTITLE},
93ffcd9d826f add support for Matroska subtitle tracks
aurel
parents: 2144
diff changeset
71
2905
616fb87724b5 Make ff_mkv_codec_tags lie entirely in .rodata section.
aurel
parents: 2873
diff changeset
72 {"" , CODEC_ID_NONE}
380
9416dc106e06 matroska demuxer by ("Ronald S. Bultje" <R dot S dot Bultje at students dot uu dot nl>)
michael
parents:
diff changeset
73 /* TODO: AC3-9/10 (?), Real, Musepack, Quicktime */
1024
144729fd2d6c cleanup codec_id mapping (untested)
michael
parents: 1021
diff changeset
74 };
2973
910ac68ab3b5 Add support for Matroska attachments.
aurel
parents: 2905
diff changeset
75
910ac68ab3b5 Add support for Matroska attachments.
aurel
parents: 2905
diff changeset
76 const CodecMime ff_mkv_mime_tags[] = {
910ac68ab3b5 Add support for Matroska attachments.
aurel
parents: 2905
diff changeset
77 {"text/plain" , CODEC_ID_TEXT},
910ac68ab3b5 Add support for Matroska attachments.
aurel
parents: 2905
diff changeset
78 {"image/gif" , CODEC_ID_GIF},
910ac68ab3b5 Add support for Matroska attachments.
aurel
parents: 2905
diff changeset
79 {"image/jpeg" , CODEC_ID_MJPEG},
910ac68ab3b5 Add support for Matroska attachments.
aurel
parents: 2905
diff changeset
80 {"image/png" , CODEC_ID_PNG},
910ac68ab3b5 Add support for Matroska attachments.
aurel
parents: 2905
diff changeset
81 {"image/tiff" , CODEC_ID_TIFF},
910ac68ab3b5 Add support for Matroska attachments.
aurel
parents: 2905
diff changeset
82 {"application/x-truetype-font", CODEC_ID_TTF},
910ac68ab3b5 Add support for Matroska attachments.
aurel
parents: 2905
diff changeset
83 {"application/x-font" , CODEC_ID_TTF},
910ac68ab3b5 Add support for Matroska attachments.
aurel
parents: 2905
diff changeset
84
910ac68ab3b5 Add support for Matroska attachments.
aurel
parents: 2905
diff changeset
85 {"" , CODEC_ID_NONE}
910ac68ab3b5 Add support for Matroska attachments.
aurel
parents: 2905
diff changeset
86 };