annotate matroska.c @ 3754:8d267b43eaba libavformat

Move malloc() down until after all initializations, so that the resource is only allocated if initialization worked. This means that on failure, we don't have to deallocate it.
author rbultje
date Sat, 23 Aug 2008 18:46:30 +0000
parents d9d8ee457c22
children a9b8842d33ab
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_UNCOMPRESSED" , CODEC_ID_RAWVIDEO},
2533
5f44093c0cdc Use V_MPEG4/ISO/ASP for mpeg4 when muxing mkv
conrad
parents: 2405
diff changeset
26 {"V_MPEG4/ISO/ASP" , CODEC_ID_MPEG4},
1024
144729fd2d6c cleanup codec_id mapping (untested)
michael
parents: 1021
diff changeset
27 {"V_MPEG4/ISO/SP" , CODEC_ID_MPEG4},
144729fd2d6c cleanup codec_id mapping (untested)
michael
parents: 1021
diff changeset
28 {"V_MPEG4/ISO/AP" , CODEC_ID_MPEG4},
144729fd2d6c cleanup codec_id mapping (untested)
michael
parents: 1021
diff changeset
29 {"V_MPEG4/ISO/AVC" , CODEC_ID_H264},
144729fd2d6c cleanup codec_id mapping (untested)
michael
parents: 1021
diff changeset
30 {"V_MPEG4/MS/V3" , CODEC_ID_MSMPEG4V3},
144729fd2d6c cleanup codec_id mapping (untested)
michael
parents: 1021
diff changeset
31 {"V_MPEG1" , CODEC_ID_MPEG1VIDEO},
144729fd2d6c cleanup codec_id mapping (untested)
michael
parents: 1021
diff changeset
32 {"V_MPEG2" , CODEC_ID_MPEG2VIDEO},
144729fd2d6c cleanup codec_id mapping (untested)
michael
parents: 1021
diff changeset
33 {"V_MJPEG" , CODEC_ID_MJPEG},
144729fd2d6c cleanup codec_id mapping (untested)
michael
parents: 1021
diff changeset
34 {"V_REAL/RV10" , CODEC_ID_RV10},
144729fd2d6c cleanup codec_id mapping (untested)
michael
parents: 1021
diff changeset
35 {"V_REAL/RV20" , CODEC_ID_RV20},
144729fd2d6c cleanup codec_id mapping (untested)
michael
parents: 1021
diff changeset
36 {"V_REAL/RV30" , CODEC_ID_RV30},
144729fd2d6c cleanup codec_id mapping (untested)
michael
parents: 1021
diff changeset
37 {"V_REAL/RV40" , CODEC_ID_RV40},
1949
18891c1e3e46 add support for V_THEORA into Matroska
aurel
parents: 1920
diff changeset
38 {"V_THEORA" , CODEC_ID_THEORA},
2405
1c57f2391cf9 Add V_SNOW
conrad
parents: 2279
diff changeset
39 {"V_SNOW" , CODEC_ID_SNOW},
1024
144729fd2d6c cleanup codec_id mapping (untested)
michael
parents: 1021
diff changeset
40
2278
5e5e2df75af3 reorder matroska codec tags so that the encoder picks up the appropriate tag
aurel
parents: 2264
diff changeset
41 {"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
42 {"A_MPEG/L2" , CODEC_ID_MP2},
3c02e08e7b5a use the most appropriate codec id for A_MPEG/L1 and L2
aurel
parents: 2278
diff changeset
43 {"A_MPEG/L1" , CODEC_ID_MP2},
3746
d9d8ee457c22 matroska: add support for most variants of PCM
aurel
parents: 3686
diff changeset
44 {"A_PCM/INT/BIG" , CODEC_ID_PCM_S16BE},
d9d8ee457c22 matroska: add support for most variants of PCM
aurel
parents: 3686
diff changeset
45 {"A_PCM/INT/BIG" , CODEC_ID_PCM_S24BE},
d9d8ee457c22 matroska: add support for most variants of PCM
aurel
parents: 3686
diff changeset
46 {"A_PCM/INT/BIG" , CODEC_ID_PCM_S32BE},
d9d8ee457c22 matroska: add support for most variants of PCM
aurel
parents: 3686
diff changeset
47 {"A_PCM/INT/LIT" , CODEC_ID_PCM_S16LE},
d9d8ee457c22 matroska: add support for most variants of PCM
aurel
parents: 3686
diff changeset
48 {"A_PCM/INT/LIT" , CODEC_ID_PCM_S24LE},
d9d8ee457c22 matroska: add support for most variants of PCM
aurel
parents: 3686
diff changeset
49 {"A_PCM/INT/LIT" , CODEC_ID_PCM_S32LE},
d9d8ee457c22 matroska: add support for most variants of PCM
aurel
parents: 3686
diff changeset
50 {"A_PCM/INT/LIT" , CODEC_ID_PCM_U8},
d9d8ee457c22 matroska: add support for most variants of PCM
aurel
parents: 3686
diff changeset
51 {"A_PCM/FLOAT/IEEE" , CODEC_ID_PCM_F32LE},
d9d8ee457c22 matroska: add support for most variants of PCM
aurel
parents: 3686
diff changeset
52 {"A_PCM/FLOAT/IEEE" , CODEC_ID_PCM_F64LE},
1024
144729fd2d6c cleanup codec_id mapping (untested)
michael
parents: 1021
diff changeset
53 {"A_AC3" , CODEC_ID_AC3},
3686
03df0b5927ff matroskadec: remove useless comments in ff_mkv_codec_tags
aurel
parents: 3602
diff changeset
54 // {"A_EAC3" , CODEC_ID_EAC3},
1024
144729fd2d6c cleanup codec_id mapping (untested)
michael
parents: 1021
diff changeset
55 {"A_DTS" , CODEC_ID_DTS},
144729fd2d6c cleanup codec_id mapping (untested)
michael
parents: 1021
diff changeset
56 {"A_VORBIS" , CODEC_ID_VORBIS},
1475
a83e86c05295 Add A_AAC codec identifier support in matroska.
aurel
parents: 1472
diff changeset
57 {"A_AAC" , CODEC_ID_AAC},
1537
8110f1a20f2a add support for FLAC in matroska
aurel
parents: 1534
diff changeset
58 {"A_FLAC" , CODEC_ID_FLAC},
1451
48cfca624912 WavPack support in Matroska
kostya
parents: 1358
diff changeset
59 {"A_WAVPACK4" , CODEC_ID_WAVPACK},
1534
4bf9dc98e127 add support for tta in matroska
aurel
parents: 1533
diff changeset
60 {"A_TTA1" , CODEC_ID_TTA},
2144
7fe203e939e5 add support for real audio in matroska
aurel
parents: 2142
diff changeset
61 {"A_REAL/14_4" , CODEC_ID_RA_144},
7fe203e939e5 add support for real audio in matroska
aurel
parents: 2142
diff changeset
62 {"A_REAL/28_8" , CODEC_ID_RA_288},
7fe203e939e5 add support for real audio in matroska
aurel
parents: 2142
diff changeset
63 {"A_REAL/ATRC" , CODEC_ID_ATRAC3},
7fe203e939e5 add support for real audio in matroska
aurel
parents: 2142
diff changeset
64 {"A_REAL/COOK" , CODEC_ID_COOK},
7fe203e939e5 add support for real audio in matroska
aurel
parents: 2142
diff changeset
65 // {"A_REAL/SIPR" , CODEC_ID_SIPRO},
3602
70edc1aeaf68 matroska: add support for A_QUICKTIME/QDM2 codec
aurel
parents: 2973
diff changeset
66 {"A_QUICKTIME/QDM2" , CODEC_ID_QDM2},
2244
93ffcd9d826f add support for Matroska subtitle tracks
aurel
parents: 2144
diff changeset
67
2278
5e5e2df75af3 reorder matroska codec tags so that the encoder picks up the appropriate tag
aurel
parents: 2264
diff changeset
68 {"S_TEXT/UTF8" , CODEC_ID_TEXT},
2244
93ffcd9d826f add support for Matroska subtitle tracks
aurel
parents: 2144
diff changeset
69 {"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
70 {"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
71 {"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
72 {"S_ASS" , CODEC_ID_SSA},
3fad6c2f343a export raw SSA tracks with their own codec ID (patch by Evgeniy Stepanov)
aurel
parents: 2793
diff changeset
73 {"S_SSA" , CODEC_ID_SSA},
2244
93ffcd9d826f add support for Matroska subtitle tracks
aurel
parents: 2144
diff changeset
74 {"S_VOBSUB" , CODEC_ID_DVD_SUBTITLE},
93ffcd9d826f add support for Matroska subtitle tracks
aurel
parents: 2144
diff changeset
75
2905
616fb87724b5 Make ff_mkv_codec_tags lie entirely in .rodata section.
aurel
parents: 2873
diff changeset
76 {"" , CODEC_ID_NONE}
1024
144729fd2d6c cleanup codec_id mapping (untested)
michael
parents: 1021
diff changeset
77 };
2973
910ac68ab3b5 Add support for Matroska attachments.
aurel
parents: 2905
diff changeset
78
910ac68ab3b5 Add support for Matroska attachments.
aurel
parents: 2905
diff changeset
79 const CodecMime ff_mkv_mime_tags[] = {
910ac68ab3b5 Add support for Matroska attachments.
aurel
parents: 2905
diff changeset
80 {"text/plain" , CODEC_ID_TEXT},
910ac68ab3b5 Add support for Matroska attachments.
aurel
parents: 2905
diff changeset
81 {"image/gif" , CODEC_ID_GIF},
910ac68ab3b5 Add support for Matroska attachments.
aurel
parents: 2905
diff changeset
82 {"image/jpeg" , CODEC_ID_MJPEG},
910ac68ab3b5 Add support for Matroska attachments.
aurel
parents: 2905
diff changeset
83 {"image/png" , CODEC_ID_PNG},
910ac68ab3b5 Add support for Matroska attachments.
aurel
parents: 2905
diff changeset
84 {"image/tiff" , CODEC_ID_TIFF},
910ac68ab3b5 Add support for Matroska attachments.
aurel
parents: 2905
diff changeset
85 {"application/x-truetype-font", CODEC_ID_TTF},
910ac68ab3b5 Add support for Matroska attachments.
aurel
parents: 2905
diff changeset
86 {"application/x-font" , CODEC_ID_TTF},
910ac68ab3b5 Add support for Matroska attachments.
aurel
parents: 2905
diff changeset
87
910ac68ab3b5 Add support for Matroska attachments.
aurel
parents: 2905
diff changeset
88 {"" , CODEC_ID_NONE}
910ac68ab3b5 Add support for Matroska attachments.
aurel
parents: 2905
diff changeset
89 };