19
19
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
22
#include "libavcodec/avcodec.h"
22
23
#include "avformat.h"
26
26
/* Note: when encoding, the first matching tag is used, so order is
27
27
important if multiple tags possible for a given codec. */
28
28
const AVCodecTag codec_bmp_tags[] = {
29
{ CODEC_ID_H264, MKTAG('H', '2', '6', '4') },
30
{ CODEC_ID_H264, MKTAG('h', '2', '6', '4') },
31
{ CODEC_ID_H264, MKTAG('X', '2', '6', '4') },
32
{ CODEC_ID_H264, MKTAG('x', '2', '6', '4') },
33
{ CODEC_ID_H264, MKTAG('a', 'v', 'c', '1') },
34
{ CODEC_ID_H264, MKTAG('V', 'S', 'S', 'H') },
36
{ CODEC_ID_H263, MKTAG('H', '2', '6', '3') },
37
{ CODEC_ID_H263P, MKTAG('H', '2', '6', '3') },
38
{ CODEC_ID_H263I, MKTAG('I', '2', '6', '3') }, /* intel h263 */
39
{ CODEC_ID_H261, MKTAG('H', '2', '6', '1') },
41
/* added based on MPlayer */
42
{ CODEC_ID_H263P, MKTAG('U', '2', '6', '3') },
43
{ CODEC_ID_H263P, MKTAG('v', 'i', 'v', '1') },
45
{ CODEC_ID_MPEG4, MKTAG('F', 'M', 'P', '4') },
46
{ CODEC_ID_MPEG4, MKTAG('D', 'I', 'V', 'X') },
47
{ CODEC_ID_MPEG4, MKTAG('D', 'X', '5', '0') },
48
{ CODEC_ID_MPEG4, MKTAG('X', 'V', 'I', 'D') },
49
{ CODEC_ID_MPEG4, MKTAG('M', 'P', '4', 'S') },
50
{ CODEC_ID_MPEG4, MKTAG('M', '4', 'S', '2') },
51
{ CODEC_ID_MPEG4, MKTAG(0x04, 0, 0, 0) }, /* some broken avi use this */
53
/* added based on MPlayer */
54
{ CODEC_ID_MPEG4, MKTAG('D', 'I', 'V', '1') },
55
{ CODEC_ID_MPEG4, MKTAG('B', 'L', 'Z', '0') },
56
{ CODEC_ID_MPEG4, MKTAG('m', 'p', '4', 'v') },
57
{ CODEC_ID_MPEG4, MKTAG('U', 'M', 'P', '4') },
58
{ CODEC_ID_MPEG4, MKTAG('W', 'V', '1', 'F') },
59
{ CODEC_ID_MPEG4, MKTAG('S', 'E', 'D', 'G') },
61
{ CODEC_ID_MPEG4, MKTAG('R', 'M', 'P', '4') },
63
{ CODEC_ID_MSMPEG4V3, MKTAG('D', 'I', 'V', '3') }, /* default signature when using MSMPEG4 */
64
{ CODEC_ID_MSMPEG4V3, MKTAG('M', 'P', '4', '3') },
66
/* added based on MPlayer */
67
{ CODEC_ID_MSMPEG4V3, MKTAG('M', 'P', 'G', '3') },
68
{ CODEC_ID_MSMPEG4V3, MKTAG('D', 'I', 'V', '5') },
69
{ CODEC_ID_MSMPEG4V3, MKTAG('D', 'I', 'V', '6') },
70
{ CODEC_ID_MSMPEG4V3, MKTAG('D', 'I', 'V', '4') },
71
{ CODEC_ID_MSMPEG4V3, MKTAG('A', 'P', '4', '1') },
72
{ CODEC_ID_MSMPEG4V3, MKTAG('C', 'O', 'L', '1') },
73
{ CODEC_ID_MSMPEG4V3, MKTAG('C', 'O', 'L', '0') },
75
{ CODEC_ID_MSMPEG4V2, MKTAG('M', 'P', '4', '2') },
77
/* added based on MPlayer */
78
{ CODEC_ID_MSMPEG4V2, MKTAG('D', 'I', 'V', '2') },
80
{ CODEC_ID_MSMPEG4V1, MKTAG('M', 'P', 'G', '4') },
82
{ CODEC_ID_WMV1, MKTAG('W', 'M', 'V', '1') },
84
/* added based on MPlayer */
85
{ CODEC_ID_WMV2, MKTAG('W', 'M', 'V', '2') },
86
{ CODEC_ID_DVVIDEO, MKTAG('d', 'v', 's', 'd') },
87
{ CODEC_ID_DVVIDEO, MKTAG('d', 'v', 'h', 'd') },
88
{ CODEC_ID_DVVIDEO, MKTAG('d', 'v', 's', 'l') },
89
{ CODEC_ID_DVVIDEO, MKTAG('d', 'v', '2', '5') },
90
{ CODEC_ID_MPEG1VIDEO, MKTAG('m', 'p', 'g', '1') },
91
{ CODEC_ID_MPEG1VIDEO, MKTAG('m', 'p', 'g', '2') },
92
{ CODEC_ID_MPEG2VIDEO, MKTAG('m', 'p', 'g', '2') },
93
{ CODEC_ID_MPEG2VIDEO, MKTAG('M', 'P', 'E', 'G') },
94
{ CODEC_ID_MPEG1VIDEO, MKTAG('P', 'I', 'M', '1') },
95
{ CODEC_ID_MPEG1VIDEO, MKTAG('V', 'C', 'R', '2') },
96
{ CODEC_ID_MPEG1VIDEO, 0x10000001 },
97
{ CODEC_ID_MPEG2VIDEO, 0x10000002 },
98
{ CODEC_ID_MPEG2VIDEO, MKTAG('D', 'V', 'R', ' ') },
99
{ CODEC_ID_MPEG2VIDEO, MKTAG('M', 'M', 'E', 'S') },
100
{ CODEC_ID_MJPEG, MKTAG('M', 'J', 'P', 'G') },
101
{ CODEC_ID_MJPEG, MKTAG('L', 'J', 'P', 'G') },
102
{ CODEC_ID_LJPEG, MKTAG('L', 'J', 'P', 'G') },
103
{ CODEC_ID_MJPEG, MKTAG('J', 'P', 'G', 'L') }, /* Pegasus lossless JPEG */
104
{ CODEC_ID_JPEGLS,MKTAG('M', 'J', 'L', 'S') }, /* JPEG-LS custom FOURCC for avi - encoder */
105
{ CODEC_ID_MJPEG, MKTAG('M', 'J', 'L', 'S') }, /* JPEG-LS custom FOURCC for avi - decoder */
106
{ CODEC_ID_MJPEG, MKTAG('j', 'p', 'e', 'g') },
107
{ CODEC_ID_MJPEG, MKTAG('I', 'J', 'P', 'G') },
108
{ CODEC_ID_MJPEG, MKTAG('A', 'V', 'R', 'n') },
109
{ CODEC_ID_HUFFYUV, MKTAG('H', 'F', 'Y', 'U') },
110
{ CODEC_ID_FFVHUFF, MKTAG('F', 'F', 'V', 'H') },
111
{ CODEC_ID_CYUV, MKTAG('C', 'Y', 'U', 'V') },
112
{ CODEC_ID_RAWVIDEO, 0 },
113
{ CODEC_ID_RAWVIDEO, MKTAG('I', '4', '2', '0') },
114
{ CODEC_ID_RAWVIDEO, MKTAG('Y', 'U', 'Y', '2') },
115
{ CODEC_ID_RAWVIDEO, MKTAG('Y', '4', '2', '2') },
116
{ CODEC_ID_RAWVIDEO, MKTAG('Y', 'V', '1', '2') },
117
{ CODEC_ID_RAWVIDEO, MKTAG('U', 'Y', 'V', 'Y') },
118
{ CODEC_ID_RAWVIDEO, MKTAG('I', 'Y', 'U', 'V') },
119
{ CODEC_ID_RAWVIDEO, MKTAG('Y', '8', '0', '0') },
120
{ CODEC_ID_RAWVIDEO, MKTAG('H', 'D', 'Y', 'C') },
121
{ CODEC_ID_INDEO3, MKTAG('I', 'V', '3', '1') },
122
{ CODEC_ID_INDEO3, MKTAG('I', 'V', '3', '2') },
123
{ CODEC_ID_VP3, MKTAG('V', 'P', '3', '1') },
124
{ CODEC_ID_VP3, MKTAG('V', 'P', '3', '0') },
125
{ CODEC_ID_VP5, MKTAG('V', 'P', '5', '0') },
126
{ CODEC_ID_VP6, MKTAG('V', 'P', '6', '0') },
127
{ CODEC_ID_VP6, MKTAG('V', 'P', '6', '1') },
128
{ CODEC_ID_VP6, MKTAG('V', 'P', '6', '2') },
129
{ CODEC_ID_ASV1, MKTAG('A', 'S', 'V', '1') },
130
{ CODEC_ID_ASV2, MKTAG('A', 'S', 'V', '2') },
131
{ CODEC_ID_VCR1, MKTAG('V', 'C', 'R', '1') },
132
{ CODEC_ID_FFV1, MKTAG('F', 'F', 'V', '1') },
133
{ CODEC_ID_XAN_WC4, MKTAG('X', 'x', 'a', 'n') },
134
{ CODEC_ID_MSRLE, MKTAG('m', 'r', 'l', 'e') },
135
{ CODEC_ID_MSRLE, MKTAG(0x1, 0x0, 0x0, 0x0) },
136
{ CODEC_ID_MSVIDEO1, MKTAG('M', 'S', 'V', 'C') },
137
{ CODEC_ID_MSVIDEO1, MKTAG('m', 's', 'v', 'c') },
138
{ CODEC_ID_MSVIDEO1, MKTAG('C', 'R', 'A', 'M') },
139
{ CODEC_ID_MSVIDEO1, MKTAG('c', 'r', 'a', 'm') },
140
{ CODEC_ID_MSVIDEO1, MKTAG('W', 'H', 'A', 'M') },
141
{ CODEC_ID_MSVIDEO1, MKTAG('w', 'h', 'a', 'm') },
142
{ CODEC_ID_CINEPAK, MKTAG('c', 'v', 'i', 'd') },
143
{ CODEC_ID_TRUEMOTION1, MKTAG('D', 'U', 'C', 'K') },
144
{ CODEC_ID_MSZH, MKTAG('M', 'S', 'Z', 'H') },
145
{ CODEC_ID_ZLIB, MKTAG('Z', 'L', 'I', 'B') },
146
{ CODEC_ID_SNOW, MKTAG('S', 'N', 'O', 'W') },
147
{ CODEC_ID_4XM, MKTAG('4', 'X', 'M', 'V') },
148
{ CODEC_ID_FLV1, MKTAG('F', 'L', 'V', '1') },
149
{ CODEC_ID_FLASHSV, MKTAG('F', 'S', 'V', '1') },
150
{ CODEC_ID_VP6F, MKTAG('V', 'P', '6', 'F') },
151
{ CODEC_ID_SVQ1, MKTAG('s', 'v', 'q', '1') },
152
{ CODEC_ID_TSCC, MKTAG('t', 's', 'c', 'c') },
153
{ CODEC_ID_ULTI, MKTAG('U', 'L', 'T', 'I') },
154
{ CODEC_ID_VIXL, MKTAG('V', 'I', 'X', 'L') },
155
{ CODEC_ID_QPEG, MKTAG('Q', 'P', 'E', 'G') },
156
{ CODEC_ID_QPEG, MKTAG('Q', '1', '.', '0') },
157
{ CODEC_ID_QPEG, MKTAG('Q', '1', '.', '1') },
158
{ CODEC_ID_WMV3, MKTAG('W', 'M', 'V', '3') },
159
{ CODEC_ID_VC1, MKTAG('W', 'V', 'C', '1') },
160
{ CODEC_ID_VC1, MKTAG('W', 'M', 'V', 'A') },
161
{ CODEC_ID_LOCO, MKTAG('L', 'O', 'C', 'O') },
162
{ CODEC_ID_WNV1, MKTAG('W', 'N', 'V', '1') },
163
{ CODEC_ID_AASC, MKTAG('A', 'A', 'S', 'C') },
164
{ CODEC_ID_INDEO2, MKTAG('R', 'T', '2', '1') },
165
{ CODEC_ID_FRAPS, MKTAG('F', 'P', 'S', '1') },
166
{ CODEC_ID_THEORA, MKTAG('t', 'h', 'e', 'o') },
167
{ CODEC_ID_TRUEMOTION2, MKTAG('T', 'M', '2', '0') },
168
{ CODEC_ID_CSCD, MKTAG('C', 'S', 'C', 'D') },
169
{ CODEC_ID_ZMBV, MKTAG('Z', 'M', 'B', 'V') },
170
{ CODEC_ID_KMVC, MKTAG('K', 'M', 'V', 'C') },
171
{ CODEC_ID_CAVS, MKTAG('C', 'A', 'V', 'S') },
172
{ CODEC_ID_JPEG2000, MKTAG('M', 'J', '2', 'C') },
173
{ CODEC_ID_VMNC, MKTAG('V', 'M', 'n', 'c') },
174
{ CODEC_ID_TARGA, MKTAG('t', 'g', 'a', ' ') },
175
{ CODEC_ID_NONE, 0 },
29
{ CODEC_ID_H264, MKTAG('H', '2', '6', '4') },
30
{ CODEC_ID_H264, MKTAG('h', '2', '6', '4') },
31
{ CODEC_ID_H264, MKTAG('X', '2', '6', '4') },
32
{ CODEC_ID_H264, MKTAG('x', '2', '6', '4') },
33
{ CODEC_ID_H264, MKTAG('a', 'v', 'c', '1') },
34
{ CODEC_ID_H264, MKTAG('V', 'S', 'S', 'H') },
35
{ CODEC_ID_H263, MKTAG('H', '2', '6', '3') },
36
{ CODEC_ID_H263, MKTAG('X', '2', '6', '3') },
37
{ CODEC_ID_H263, MKTAG('T', '2', '6', '3') },
38
{ CODEC_ID_H263, MKTAG('L', '2', '6', '3') },
39
{ CODEC_ID_H263, MKTAG('V', 'X', '1', 'K') },
40
{ CODEC_ID_H263P, MKTAG('H', '2', '6', '3') },
41
{ CODEC_ID_H263I, MKTAG('I', '2', '6', '3') }, /* intel h263 */
42
{ CODEC_ID_H261, MKTAG('H', '2', '6', '1') },
43
{ CODEC_ID_H263P, MKTAG('U', '2', '6', '3') },
44
{ CODEC_ID_H263P, MKTAG('v', 'i', 'v', '1') },
45
{ CODEC_ID_MPEG4, MKTAG('F', 'M', 'P', '4') },
46
{ CODEC_ID_MPEG4, MKTAG('D', 'I', 'V', 'X') },
47
{ CODEC_ID_MPEG4, MKTAG('D', 'X', '5', '0') },
48
{ CODEC_ID_MPEG4, MKTAG('X', 'V', 'I', 'D') },
49
{ CODEC_ID_MPEG4, MKTAG('M', 'P', '4', 'S') },
50
{ CODEC_ID_MPEG4, MKTAG('M', '4', 'S', '2') },
51
{ CODEC_ID_MPEG4, MKTAG( 4 , 0 , 0 , 0 ) }, /* some broken avi use this */
52
{ CODEC_ID_MPEG4, MKTAG('D', 'I', 'V', '1') },
53
{ CODEC_ID_MPEG4, MKTAG('B', 'L', 'Z', '0') },
54
{ CODEC_ID_MPEG4, MKTAG('m', 'p', '4', 'v') },
55
{ CODEC_ID_MPEG4, MKTAG('U', 'M', 'P', '4') },
56
{ CODEC_ID_MPEG4, MKTAG('W', 'V', '1', 'F') },
57
{ CODEC_ID_MPEG4, MKTAG('S', 'E', 'D', 'G') },
58
{ CODEC_ID_MPEG4, MKTAG('R', 'M', 'P', '4') },
59
{ CODEC_ID_MPEG4, MKTAG('3', 'I', 'V', '2') },
60
{ CODEC_ID_MPEG4, MKTAG('F', 'F', 'D', 'S') },
61
{ CODEC_ID_MPEG4, MKTAG('F', 'V', 'F', 'W') },
62
{ CODEC_ID_MPEG4, MKTAG('D', 'C', 'O', 'D') },
63
{ CODEC_ID_MPEG4, MKTAG('M', 'V', 'X', 'M') },
64
{ CODEC_ID_MPEG4, MKTAG('P', 'M', '4', 'V') },
65
{ CODEC_ID_MPEG4, MKTAG('S', 'M', 'P', '4') },
66
{ CODEC_ID_MPEG4, MKTAG('D', 'X', 'G', 'M') },
67
{ CODEC_ID_MPEG4, MKTAG('V', 'I', 'D', 'M') },
68
{ CODEC_ID_MPEG4, MKTAG('M', '4', 'T', '3') },
69
{ CODEC_ID_MPEG4, MKTAG('G', 'E', 'O', 'X') },
70
{ CODEC_ID_MPEG4, MKTAG('H', 'D', 'X', '4') }, /* flipped video */
71
{ CODEC_ID_MPEG4, MKTAG('D', 'M', 'K', '2') },
72
{ CODEC_ID_MPEG4, MKTAG('D', 'I', 'G', 'I') },
73
{ CODEC_ID_MPEG4, MKTAG('I', 'N', 'M', 'C') },
74
{ CODEC_ID_MPEG4, MKTAG('E', 'P', 'H', 'V') }, /* Ephv MPEG-4 */
75
{ CODEC_ID_MPEG4, MKTAG('E', 'M', '4', 'A') },
76
{ CODEC_ID_MPEG4, MKTAG('M', '4', 'C', 'C') }, /* Divio MPEG-4 */
77
{ CODEC_ID_MSMPEG4V3, MKTAG('D', 'I', 'V', '3') }, /* default signature when using MSMPEG4 */
78
{ CODEC_ID_MSMPEG4V3, MKTAG('M', 'P', '4', '3') },
79
{ CODEC_ID_MSMPEG4V3, MKTAG('M', 'P', 'G', '3') },
80
{ CODEC_ID_MSMPEG4V3, MKTAG('D', 'I', 'V', '5') },
81
{ CODEC_ID_MSMPEG4V3, MKTAG('D', 'I', 'V', '6') },
82
{ CODEC_ID_MSMPEG4V3, MKTAG('D', 'I', 'V', '4') },
83
{ CODEC_ID_MSMPEG4V3, MKTAG('D', 'V', 'X', '3') },
84
{ CODEC_ID_MSMPEG4V3, MKTAG('A', 'P', '4', '1') },
85
{ CODEC_ID_MSMPEG4V3, MKTAG('C', 'O', 'L', '1') },
86
{ CODEC_ID_MSMPEG4V3, MKTAG('C', 'O', 'L', '0') },
87
{ CODEC_ID_MSMPEG4V2, MKTAG('M', 'P', '4', '2') },
88
{ CODEC_ID_MSMPEG4V2, MKTAG('D', 'I', 'V', '2') },
89
{ CODEC_ID_MSMPEG4V1, MKTAG('M', 'P', 'G', '4') },
90
{ CODEC_ID_MSMPEG4V1, MKTAG('M', 'P', '4', '1') },
91
{ CODEC_ID_WMV1, MKTAG('W', 'M', 'V', '1') },
92
{ CODEC_ID_WMV2, MKTAG('W', 'M', 'V', '2') },
93
{ CODEC_ID_DVVIDEO, MKTAG('d', 'v', 's', 'd') },
94
{ CODEC_ID_DVVIDEO, MKTAG('d', 'v', 'h', 'd') },
95
{ CODEC_ID_DVVIDEO, MKTAG('d', 'v', 's', 'l') },
96
{ CODEC_ID_DVVIDEO, MKTAG('d', 'v', '2', '5') },
97
{ CODEC_ID_DVVIDEO, MKTAG('d', 'v', '5', '0') },
98
{ CODEC_ID_DVVIDEO, MKTAG('c', 'd', 'v', 'c') }, /* Canopus DV */
99
{ CODEC_ID_DVVIDEO, MKTAG('d', 'v', 'c', ' ') },
100
{ CODEC_ID_MPEG1VIDEO, MKTAG('m', 'p', 'g', '1') },
101
{ CODEC_ID_MPEG1VIDEO, MKTAG('m', 'p', 'g', '2') },
102
{ CODEC_ID_MPEG2VIDEO, MKTAG('m', 'p', 'g', '2') },
103
{ CODEC_ID_MPEG2VIDEO, MKTAG('M', 'P', 'E', 'G') },
104
{ CODEC_ID_MPEG1VIDEO, MKTAG('P', 'I', 'M', '1') },
105
{ CODEC_ID_MPEG2VIDEO, MKTAG('P', 'I', 'M', '2') },
106
{ CODEC_ID_MPEG1VIDEO, MKTAG('V', 'C', 'R', '2') },
107
{ CODEC_ID_MPEG1VIDEO, MKTAG( 1 , 0 , 0 , 16) },
108
{ CODEC_ID_MPEG2VIDEO, MKTAG( 2 , 0 , 0 , 16) },
109
{ CODEC_ID_MPEG2VIDEO, MKTAG('D', 'V', 'R', ' ') },
110
{ CODEC_ID_MPEG2VIDEO, MKTAG('M', 'M', 'E', 'S') },
111
{ CODEC_ID_MPEG2VIDEO, MKTAG('L', 'M', 'P', '2') }, /* Lead MPEG2 in avi */
112
{ CODEC_ID_MJPEG, MKTAG('M', 'J', 'P', 'G') },
113
{ CODEC_ID_MJPEG, MKTAG('L', 'J', 'P', 'G') },
114
{ CODEC_ID_MJPEG, MKTAG('d', 'm', 'b', '1') },
115
{ CODEC_ID_LJPEG, MKTAG('L', 'J', 'P', 'G') },
116
{ CODEC_ID_MJPEG, MKTAG('J', 'P', 'G', 'L') }, /* Pegasus lossless JPEG */
117
{ CODEC_ID_JPEGLS, MKTAG('M', 'J', 'L', 'S') }, /* JPEG-LS custom FOURCC for avi - encoder */
118
{ CODEC_ID_MJPEG, MKTAG('M', 'J', 'L', 'S') }, /* JPEG-LS custom FOURCC for avi - decoder */
119
{ CODEC_ID_MJPEG, MKTAG('j', 'p', 'e', 'g') },
120
{ CODEC_ID_MJPEG, MKTAG('I', 'J', 'P', 'G') },
121
{ CODEC_ID_MJPEG, MKTAG('A', 'V', 'R', 'n') },
122
{ CODEC_ID_MJPEG, MKTAG('A', 'C', 'D', 'V') },
123
{ CODEC_ID_MJPEG, MKTAG('Q', 'I', 'V', 'G') },
124
{ CODEC_ID_MJPEG, MKTAG('S', 'L', 'M', 'J') }, /* SL M-JPEG */
125
{ CODEC_ID_MJPEG, MKTAG('C', 'J', 'P', 'G') }, /* Creative Webcam JPEG */
126
{ CODEC_ID_HUFFYUV, MKTAG('H', 'F', 'Y', 'U') },
127
{ CODEC_ID_FFVHUFF, MKTAG('F', 'F', 'V', 'H') },
128
{ CODEC_ID_CYUV, MKTAG('C', 'Y', 'U', 'V') },
129
{ CODEC_ID_RAWVIDEO, MKTAG( 0 , 0 , 0 , 0 ) },
130
{ CODEC_ID_RAWVIDEO, MKTAG('I', '4', '2', '0') },
131
{ CODEC_ID_RAWVIDEO, MKTAG('Y', 'U', 'Y', '2') },
132
{ CODEC_ID_RAWVIDEO, MKTAG('Y', '4', '2', '2') },
133
{ CODEC_ID_RAWVIDEO, MKTAG('Y', 'V', '1', '2') },
134
{ CODEC_ID_RAWVIDEO, MKTAG('U', 'Y', 'V', 'Y') },
135
{ CODEC_ID_RAWVIDEO, MKTAG('I', 'Y', 'U', 'V') },
136
{ CODEC_ID_RAWVIDEO, MKTAG('Y', '8', '0', '0') },
137
{ CODEC_ID_RAWVIDEO, MKTAG('H', 'D', 'Y', 'C') },
138
{ CODEC_ID_INDEO3, MKTAG('I', 'V', '3', '1') },
139
{ CODEC_ID_INDEO3, MKTAG('I', 'V', '3', '2') },
140
{ CODEC_ID_INDEO4, MKTAG('I', 'V', '4', '1') },
141
{ CODEC_ID_INDEO5, MKTAG('I', 'V', '5', '0') },
142
{ CODEC_ID_VP3, MKTAG('V', 'P', '3', '1') },
143
{ CODEC_ID_VP3, MKTAG('V', 'P', '3', '0') },
144
{ CODEC_ID_VP5, MKTAG('V', 'P', '5', '0') },
145
{ CODEC_ID_VP6, MKTAG('V', 'P', '6', '0') },
146
{ CODEC_ID_VP6, MKTAG('V', 'P', '6', '1') },
147
{ CODEC_ID_VP6, MKTAG('V', 'P', '6', '2') },
148
{ CODEC_ID_ASV1, MKTAG('A', 'S', 'V', '1') },
149
{ CODEC_ID_ASV2, MKTAG('A', 'S', 'V', '2') },
150
{ CODEC_ID_VCR1, MKTAG('V', 'C', 'R', '1') },
151
{ CODEC_ID_FFV1, MKTAG('F', 'F', 'V', '1') },
152
{ CODEC_ID_XAN_WC4, MKTAG('X', 'x', 'a', 'n') },
153
{ CODEC_ID_MIMIC, MKTAG('L', 'M', '2', '0') },
154
{ CODEC_ID_MSRLE, MKTAG('m', 'r', 'l', 'e') },
155
{ CODEC_ID_MSRLE, MKTAG( 1 , 0 , 0 , 0 ) },
156
{ CODEC_ID_MSRLE, MKTAG( 2 , 0 , 0 , 0 ) },
157
{ CODEC_ID_MSVIDEO1, MKTAG('M', 'S', 'V', 'C') },
158
{ CODEC_ID_MSVIDEO1, MKTAG('m', 's', 'v', 'c') },
159
{ CODEC_ID_MSVIDEO1, MKTAG('C', 'R', 'A', 'M') },
160
{ CODEC_ID_MSVIDEO1, MKTAG('c', 'r', 'a', 'm') },
161
{ CODEC_ID_MSVIDEO1, MKTAG('W', 'H', 'A', 'M') },
162
{ CODEC_ID_MSVIDEO1, MKTAG('w', 'h', 'a', 'm') },
163
{ CODEC_ID_CINEPAK, MKTAG('c', 'v', 'i', 'd') },
164
{ CODEC_ID_TRUEMOTION1, MKTAG('D', 'U', 'C', 'K') },
165
{ CODEC_ID_TRUEMOTION1, MKTAG('P', 'V', 'E', 'Z') },
166
{ CODEC_ID_MSZH, MKTAG('M', 'S', 'Z', 'H') },
167
{ CODEC_ID_ZLIB, MKTAG('Z', 'L', 'I', 'B') },
168
{ CODEC_ID_SNOW, MKTAG('S', 'N', 'O', 'W') },
169
{ CODEC_ID_4XM, MKTAG('4', 'X', 'M', 'V') },
170
{ CODEC_ID_FLV1, MKTAG('F', 'L', 'V', '1') },
171
{ CODEC_ID_FLASHSV, MKTAG('F', 'S', 'V', '1') },
172
{ CODEC_ID_VP6F, MKTAG('V', 'P', '6', 'F') },
173
{ CODEC_ID_SVQ1, MKTAG('s', 'v', 'q', '1') },
174
{ CODEC_ID_TSCC, MKTAG('t', 's', 'c', 'c') },
175
{ CODEC_ID_ULTI, MKTAG('U', 'L', 'T', 'I') },
176
{ CODEC_ID_VIXL, MKTAG('V', 'I', 'X', 'L') },
177
{ CODEC_ID_QPEG, MKTAG('Q', 'P', 'E', 'G') },
178
{ CODEC_ID_QPEG, MKTAG('Q', '1', '.', '0') },
179
{ CODEC_ID_QPEG, MKTAG('Q', '1', '.', '1') },
180
{ CODEC_ID_WMV3, MKTAG('W', 'M', 'V', '3') },
181
{ CODEC_ID_VC1, MKTAG('W', 'V', 'C', '1') },
182
{ CODEC_ID_VC1, MKTAG('W', 'M', 'V', 'A') },
183
{ CODEC_ID_LOCO, MKTAG('L', 'O', 'C', 'O') },
184
{ CODEC_ID_WNV1, MKTAG('W', 'N', 'V', '1') },
185
{ CODEC_ID_AASC, MKTAG('A', 'A', 'S', 'C') },
186
{ CODEC_ID_INDEO2, MKTAG('R', 'T', '2', '1') },
187
{ CODEC_ID_FRAPS, MKTAG('F', 'P', 'S', '1') },
188
{ CODEC_ID_THEORA, MKTAG('t', 'h', 'e', 'o') },
189
{ CODEC_ID_TRUEMOTION2, MKTAG('T', 'M', '2', '0') },
190
{ CODEC_ID_CSCD, MKTAG('C', 'S', 'C', 'D') },
191
{ CODEC_ID_ZMBV, MKTAG('Z', 'M', 'B', 'V') },
192
{ CODEC_ID_KMVC, MKTAG('K', 'M', 'V', 'C') },
193
{ CODEC_ID_CAVS, MKTAG('C', 'A', 'V', 'S') },
194
{ CODEC_ID_JPEG2000, MKTAG('M', 'J', '2', 'C') },
195
{ CODEC_ID_VMNC, MKTAG('V', 'M', 'n', 'c') },
196
{ CODEC_ID_TARGA, MKTAG('t', 'g', 'a', ' ') },
197
{ CODEC_ID_PNG, MKTAG('M', 'P', 'N', 'G') },
198
{ CODEC_ID_CLJR, MKTAG('c', 'l', 'j', 'r') },
199
{ CODEC_ID_DIRAC, MKTAG('d', 'r', 'a', 'c') },
200
{ CODEC_ID_RPZA, MKTAG('a', 'z', 'p', 'r') },
201
{ CODEC_ID_RPZA, MKTAG('R', 'P', 'Z', 'A') },
202
{ CODEC_ID_RPZA, MKTAG('r', 'p', 'z', 'a') },
203
{ CODEC_ID_SP5X, MKTAG('S', 'P', '5', '4') },
178
207
const AVCodecTag codec_wav_tags[] = {
179
{ CODEC_ID_MP2, 0x50 },
180
{ CODEC_ID_MP3, 0x55 },
181
{ CODEC_ID_AC3, 0x2000 },
182
{ CODEC_ID_DTS, 0x2001 },
183
{ CODEC_ID_PCM_S16LE, 0x01 },
184
{ CODEC_ID_PCM_U8, 0x01 }, /* must come after s16le in this list */
185
{ CODEC_ID_PCM_S24LE, 0x01 },
186
{ CODEC_ID_PCM_S32LE, 0x01 },
187
{ CODEC_ID_PCM_ALAW, 0x06 },
188
{ CODEC_ID_PCM_MULAW, 0x07 },
189
{ CODEC_ID_ADPCM_MS, 0x02 },
190
{ CODEC_ID_ADPCM_IMA_WAV, 0x11 },
191
{ CODEC_ID_ADPCM_YAMAHA, 0x20 },
192
{ CODEC_ID_ADPCM_G726, 0x45 },
193
{ CODEC_ID_ADPCM_IMA_DK4, 0x61 }, /* rogue format number */
194
{ CODEC_ID_ADPCM_IMA_DK3, 0x62 }, /* rogue format number */
195
{ CODEC_ID_WMAV1, 0x160 },
196
{ CODEC_ID_WMAV2, 0x161 },
197
{ CODEC_ID_AAC, 0x706d },
198
{ CODEC_ID_AAC, 0xff },
199
{ CODEC_ID_VORBIS, ('V'<<8)+'o' }, //HACK/FIXME, does vorbis in WAV/AVI have an (in)official id?
200
{ CODEC_ID_SONIC, 0x2048 },
201
{ CODEC_ID_SONIC_LS, 0x2048 },
202
{ CODEC_ID_ADPCM_CT, 0x200 },
203
{ CODEC_ID_ADPCM_SWF, ('S'<<8)+'F' },
204
{ CODEC_ID_TRUESPEECH, 0x22 },
205
{ CODEC_ID_FLAC, 0xF1AC },
206
{ CODEC_ID_IMC, 0x401 },
207
{ CODEC_ID_GSM_MS, 0x31 },
208
{ CODEC_ID_ATRAC3, 0x270 },
209
{ CODEC_ID_VOXWARE, 0x75 },
208
{ CODEC_ID_PCM_S16LE, 0x0001 },
209
{ CODEC_ID_PCM_U8, 0x0001 }, /* must come after s16le in this list */
210
{ CODEC_ID_PCM_S24LE, 0x0001 },
211
{ CODEC_ID_PCM_S32LE, 0x0001 },
212
{ CODEC_ID_ADPCM_MS, 0x0002 },
213
{ CODEC_ID_PCM_F32LE, 0x0003 },
214
{ CODEC_ID_PCM_F64LE, 0x0003 }, /* must come after f32le in this list */
215
{ CODEC_ID_PCM_ALAW, 0x0006 },
216
{ CODEC_ID_PCM_MULAW, 0x0007 },
217
{ CODEC_ID_WMAVOICE, 0x000A },
218
{ CODEC_ID_ADPCM_IMA_WAV, 0x0011 },
219
{ CODEC_ID_PCM_ZORK, 0x0011 }, /* must come after adpcm_ima_wav in this list */
220
{ CODEC_ID_ADPCM_YAMAHA, 0x0020 },
221
{ CODEC_ID_TRUESPEECH, 0x0022 },
222
{ CODEC_ID_GSM_MS, 0x0031 },
223
{ CODEC_ID_ADPCM_G726, 0x0045 },
224
{ CODEC_ID_MP2, 0x0050 },
225
{ CODEC_ID_MP3, 0x0055 },
226
{ CODEC_ID_AMR_NB, 0x0057 },
227
{ CODEC_ID_AMR_WB, 0x0058 },
228
{ CODEC_ID_ADPCM_IMA_DK4, 0x0061 }, /* rogue format number */
229
{ CODEC_ID_ADPCM_IMA_DK3, 0x0062 }, /* rogue format number */
230
{ CODEC_ID_ADPCM_IMA_WAV, 0x0069 },
231
{ CODEC_ID_VOXWARE, 0x0075 },
232
{ CODEC_ID_AAC, 0x00ff },
233
{ CODEC_ID_SIPR, 0x0130 },
234
{ CODEC_ID_WMAV1, 0x0160 },
235
{ CODEC_ID_WMAV2, 0x0161 },
236
{ CODEC_ID_WMAPRO, 0x0162 },
237
{ CODEC_ID_WMALOSSLESS, 0x0163 },
238
{ CODEC_ID_ADPCM_CT, 0x0200 },
239
{ CODEC_ID_ATRAC3, 0x0270 },
240
{ CODEC_ID_IMC, 0x0401 },
241
{ CODEC_ID_AC3, 0x2000 },
242
{ CODEC_ID_DTS, 0x2001 },
243
{ CODEC_ID_SONIC, 0x2048 },
244
{ CODEC_ID_SONIC_LS, 0x2048 },
245
{ CODEC_ID_AAC, 0x706d },
246
{ CODEC_ID_AAC, 0x4143 },
247
{ CODEC_ID_FLAC, 0xF1AC },
248
{ CODEC_ID_ADPCM_SWF, ('S'<<8)+'F' },
249
{ CODEC_ID_VORBIS, ('V'<<8)+'o' }, //HACK/FIXME, does vorbis in WAV/AVI have an (in)official id?
211
251
/* FIXME: All of the IDs below are not 16 bit and thus illegal. */
212
252
// for NuppelVideo (nuv.c)
213
253
{ CODEC_ID_PCM_S16LE, MKTAG('R', 'A', 'W', 'A') },
214
{ CODEC_ID_MP3, MKTAG('L', 'A', 'M', 'E') },
215
{ CODEC_ID_MP3, MKTAG('M', 'P', '3', ' ') },
254
{ CODEC_ID_MP3, MKTAG('L', 'A', 'M', 'E') },
255
{ CODEC_ID_MP3, MKTAG('M', 'P', '3', ' ') },
220
offset_t start_tag(ByteIOContext *pb, const char *tag)
260
int64_t start_tag(ByteIOContext *pb, const char *tag)
222
262
put_tag(pb, tag);
224
264
return url_ftell(pb);
227
void end_tag(ByteIOContext *pb, offset_t start)
267
void end_tag(ByteIOContext *pb, int64_t start)
231
271
pos = url_ftell(pb);
232
272
url_fseek(pb, start - 4, SEEK_SET);