Coverage Report

Created: 2025-12-31 07:57

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/ffmpeg/libavformat/riff.c
Line
Count
Source
1
/*
2
 * RIFF common functions and data
3
 * Copyright (c) 2000 Fabrice Bellard
4
 *
5
 * This file is part of FFmpeg.
6
 *
7
 * FFmpeg is free software; you can redistribute it and/or
8
 * modify it under the terms of the GNU Lesser General Public
9
 * License as published by the Free Software Foundation; either
10
 * version 2.1 of the License, or (at your option) any later version.
11
 *
12
 * FFmpeg is distributed in the hope that it will be useful,
13
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15
 * Lesser General Public License for more details.
16
 *
17
 * You should have received a copy of the GNU Lesser General Public
18
 * License along with FFmpeg; if not, write to the Free Software
19
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20
 */
21
22
#include <stddef.h>
23
#include "config.h"
24
#include "config_components.h"
25
#include "libavutil/macros.h"
26
#include "avformat.h"
27
#include "internal.h"
28
#include "metadata.h"
29
#include "riff.h"
30
31
/* Note: When encoding, the first matching tag is used, so order is
32
 * important if multiple tags are possible for a given codec.
33
 * Note also that this list is used for more than just riff, other
34
 * files use it as well.
35
 */
36
const AVCodecTag ff_codec_bmp_tags[] = {
37
    { AV_CODEC_ID_H264,         MKTAG('H', '2', '6', '4') },
38
    { AV_CODEC_ID_H264,         MKTAG('h', '2', '6', '4') },
39
    { AV_CODEC_ID_H264,         MKTAG('X', '2', '6', '4') },
40
    { AV_CODEC_ID_H264,         MKTAG('x', '2', '6', '4') },
41
    { AV_CODEC_ID_H264,         MKTAG('a', 'v', 'c', '1') },
42
    { AV_CODEC_ID_H264,         MKTAG('D', 'A', 'V', 'C') },
43
    { AV_CODEC_ID_H264,         MKTAG('S', 'M', 'V', '2') },
44
    { AV_CODEC_ID_H264,         MKTAG('V', 'S', 'S', 'H') },
45
    { AV_CODEC_ID_H264,         MKTAG('Q', '2', '6', '4') }, /* QNAP surveillance system */
46
    { AV_CODEC_ID_H264,         MKTAG('V', '2', '6', '4') }, /* CCTV recordings */
47
    { AV_CODEC_ID_H264,         MKTAG('G', 'A', 'V', 'C') }, /* GeoVision camera */
48
    { AV_CODEC_ID_H264,         MKTAG('U', 'M', 'S', 'V') },
49
    { AV_CODEC_ID_H264,         MKTAG('t', 's', 'h', 'd') },
50
    { AV_CODEC_ID_H264,         MKTAG('I', 'N', 'M', 'C') },
51
    { AV_CODEC_ID_H263,         MKTAG('H', '2', '6', '3') },
52
    { AV_CODEC_ID_H263,         MKTAG('X', '2', '6', '3') },
53
    { AV_CODEC_ID_H263,         MKTAG('T', '2', '6', '3') },
54
    { AV_CODEC_ID_H263,         MKTAG('L', '2', '6', '3') },
55
    { AV_CODEC_ID_H263,         MKTAG('V', 'X', '1', 'K') },
56
    { AV_CODEC_ID_H263,         MKTAG('Z', 'y', 'G', 'o') },
57
    { AV_CODEC_ID_H263,         MKTAG('M', '2', '6', '3') },
58
    { AV_CODEC_ID_H263,         MKTAG('l', 's', 'v', 'm') },
59
    { AV_CODEC_ID_H263P,        MKTAG('H', '2', '6', '3') },
60
    { AV_CODEC_ID_H263I,        MKTAG('I', '2', '6', '3') }, /* Intel H.263 */
61
    { AV_CODEC_ID_H261,         MKTAG('H', '2', '6', '1') },
62
    { AV_CODEC_ID_H263,         MKTAG('U', '2', '6', '3') },
63
    { AV_CODEC_ID_H263,         MKTAG('V', 'S', 'M', '4') }, /* needs -vf il=l=i:c=i */
64
    { AV_CODEC_ID_MPEG4,        MKTAG('F', 'M', 'P', '4') },
65
    { AV_CODEC_ID_MPEG4,        MKTAG('D', 'I', 'V', 'X') },
66
    { AV_CODEC_ID_MPEG4,        MKTAG('D', 'X', '5', '0') },
67
    { AV_CODEC_ID_MPEG4,        MKTAG('X', 'V', 'I', 'D') },
68
    { AV_CODEC_ID_MPEG4,        MKTAG('M', 'P', '4', 'S') },
69
    { AV_CODEC_ID_MPEG4,        MKTAG('M', '4', 'S', '2') },
70
    /* some broken AVIs use this */
71
    { AV_CODEC_ID_MPEG4,        MKTAG( 4 ,  0 ,  0 ,  0 ) },
72
    /* some broken AVIs use this */
73
    { AV_CODEC_ID_MPEG4,        MKTAG('Z', 'M', 'P', '4') },
74
    { AV_CODEC_ID_MPEG4,        MKTAG('D', 'I', 'V', '1') },
75
    { AV_CODEC_ID_MPEG4,        MKTAG('B', 'L', 'Z', '0') },
76
    { AV_CODEC_ID_MPEG4,        MKTAG('m', 'p', '4', 'v') },
77
    { AV_CODEC_ID_MPEG4,        MKTAG('U', 'M', 'P', '4') },
78
    { AV_CODEC_ID_MPEG4,        MKTAG('W', 'V', '1', 'F') },
79
    { AV_CODEC_ID_MPEG4,        MKTAG('S', 'E', 'D', 'G') },
80
    { AV_CODEC_ID_MPEG4,        MKTAG('R', 'M', 'P', '4') },
81
    { AV_CODEC_ID_MPEG4,        MKTAG('3', 'I', 'V', '2') },
82
    /* WaWv MPEG-4 Video Codec */
83
    { AV_CODEC_ID_MPEG4,        MKTAG('W', 'A', 'W', 'V') },
84
    { AV_CODEC_ID_MPEG4,        MKTAG('F', 'F', 'D', 'S') },
85
    { AV_CODEC_ID_MPEG4,        MKTAG('F', 'V', 'F', 'W') },
86
    { AV_CODEC_ID_MPEG4,        MKTAG('D', 'C', 'O', 'D') },
87
    { AV_CODEC_ID_MPEG4,        MKTAG('M', 'V', 'X', 'M') },
88
    { AV_CODEC_ID_MPEG4,        MKTAG('P', 'M', '4', 'V') },
89
    { AV_CODEC_ID_MPEG4,        MKTAG('S', 'M', 'P', '4') },
90
    { AV_CODEC_ID_MPEG4,        MKTAG('D', 'X', 'G', 'M') },
91
    { AV_CODEC_ID_MPEG4,        MKTAG('V', 'I', 'D', 'M') },
92
    { AV_CODEC_ID_MPEG4,        MKTAG('M', '4', 'T', '3') },
93
    { AV_CODEC_ID_MPEG4,        MKTAG('G', 'E', 'O', 'X') },
94
    /* flipped video */
95
    { AV_CODEC_ID_MPEG4,        MKTAG('G', '2', '6', '4') },
96
    /* flipped video */
97
    { AV_CODEC_ID_MPEG4,        MKTAG('H', 'D', 'X', '4') },
98
    { AV_CODEC_ID_MPEG4,        MKTAG('D', 'M', '4', 'V') },
99
    { AV_CODEC_ID_MPEG4,        MKTAG('D', 'M', 'K', '2') },
100
    { AV_CODEC_ID_MPEG4,        MKTAG('D', 'Y', 'M', '4') },
101
    { AV_CODEC_ID_MPEG4,        MKTAG('D', 'I', 'G', 'I') },
102
    /* Ephv MPEG-4 */
103
    { AV_CODEC_ID_MPEG4,        MKTAG('E', 'P', 'H', 'V') },
104
    { AV_CODEC_ID_MPEG4,        MKTAG('E', 'M', '4', 'A') },
105
    /* Divio MPEG-4 */
106
    { AV_CODEC_ID_MPEG4,        MKTAG('M', '4', 'C', 'C') },
107
    { AV_CODEC_ID_MPEG4,        MKTAG('S', 'N', '4', '0') },
108
    { AV_CODEC_ID_MPEG4,        MKTAG('V', 'S', 'P', 'X') },
109
    { AV_CODEC_ID_MPEG4,        MKTAG('U', 'L', 'D', 'X') },
110
    { AV_CODEC_ID_MPEG4,        MKTAG('G', 'E', 'O', 'V') },
111
    /* Samsung SHR-6040 */
112
    { AV_CODEC_ID_MPEG4,        MKTAG('S', 'I', 'P', 'P') },
113
    { AV_CODEC_ID_MPEG4,        MKTAG('S', 'M', '4', 'V') },
114
    { AV_CODEC_ID_MPEG4,        MKTAG('X', 'V', 'I', 'X') },
115
    { AV_CODEC_ID_MPEG4,        MKTAG('D', 'r', 'e', 'X') },
116
    { AV_CODEC_ID_MPEG4,        MKTAG('Q', 'M', 'P', '4') }, /* QNAP Systems */
117
    { AV_CODEC_ID_MPEG4,        MKTAG('P', 'L', 'V', '1') }, /* Pelco DVR MPEG-4 */
118
    { AV_CODEC_ID_MPEG4,        MKTAG('G', 'L', 'V', '4') },
119
    { AV_CODEC_ID_MPEG4,        MKTAG('G', 'M', 'P', '4') }, /* GeoVision camera */
120
    { AV_CODEC_ID_MPEG4,        MKTAG('M', 'N', 'M', '4') }, /* March Networks DVR */
121
    { AV_CODEC_ID_MPEG4,        MKTAG('G', 'T', 'M', '4') }, /* Telefactor */
122
    { AV_CODEC_ID_MSMPEG4V3,    MKTAG('M', 'P', '4', '3') },
123
    { AV_CODEC_ID_MSMPEG4V3,    MKTAG('D', 'I', 'V', '3') },
124
    { AV_CODEC_ID_MSMPEG4V3,    MKTAG('M', 'P', 'G', '3') },
125
    { AV_CODEC_ID_MSMPEG4V3,    MKTAG('D', 'I', 'V', '5') },
126
    { AV_CODEC_ID_MSMPEG4V3,    MKTAG('D', 'I', 'V', '6') },
127
    { AV_CODEC_ID_MSMPEG4V3,    MKTAG('D', 'I', 'V', '4') },
128
    { AV_CODEC_ID_MSMPEG4V3,    MKTAG('D', 'V', 'X', '3') },
129
    { AV_CODEC_ID_MSMPEG4V3,    MKTAG('A', 'P', '4', '1') },
130
    { AV_CODEC_ID_MSMPEG4V3,    MKTAG('C', 'O', 'L', '1') },
131
    { AV_CODEC_ID_MSMPEG4V3,    MKTAG('C', 'O', 'L', '0') },
132
    { AV_CODEC_ID_MSMPEG4V2,    MKTAG('M', 'P', '4', '2') },
133
    { AV_CODEC_ID_MSMPEG4V2,    MKTAG('D', 'I', 'V', '2') },
134
    { AV_CODEC_ID_MSMPEG4V1,    MKTAG('M', 'P', 'G', '4') },
135
    { AV_CODEC_ID_MSMPEG4V1,    MKTAG('M', 'P', '4', '1') },
136
    { AV_CODEC_ID_WMV1,         MKTAG('W', 'M', 'V', '1') },
137
    { AV_CODEC_ID_WMV2,         MKTAG('W', 'M', 'V', '2') },
138
    { AV_CODEC_ID_WMV2,         MKTAG('G', 'X', 'V', 'E') },
139
    { AV_CODEC_ID_DVVIDEO,      MKTAG('d', 'v', 's', 'd') },
140
    { AV_CODEC_ID_DVVIDEO,      MKTAG('d', 'v', 'h', 'd') },
141
    { AV_CODEC_ID_DVVIDEO,      MKTAG('d', 'v', 'h', '1') },
142
    { AV_CODEC_ID_DVVIDEO,      MKTAG('d', 'v', 's', 'l') },
143
    { AV_CODEC_ID_DVVIDEO,      MKTAG('d', 'v', '2', '5') },
144
    { AV_CODEC_ID_DVVIDEO,      MKTAG('d', 'v', '5', '0') },
145
    /* Canopus DV */
146
    { AV_CODEC_ID_DVVIDEO,      MKTAG('c', 'd', 'v', 'c') },
147
    /* Canopus DV */
148
    { AV_CODEC_ID_DVVIDEO,      MKTAG('C', 'D', 'V', 'H') },
149
    /* Canopus DV */
150
    { AV_CODEC_ID_DVVIDEO,      MKTAG('C', 'D', 'V', '5') },
151
    { AV_CODEC_ID_DVVIDEO,      MKTAG('d', 'v', 'c', ' ') },
152
    { AV_CODEC_ID_DVVIDEO,      MKTAG('d', 'v', 'c', 's') },
153
    { AV_CODEC_ID_DVVIDEO,      MKTAG('d', 'v', 'h', '1') },
154
    { AV_CODEC_ID_DVVIDEO,      MKTAG('d', 'v', 'i', 's') },
155
    { AV_CODEC_ID_DVVIDEO,      MKTAG('p', 'd', 'v', 'c') },
156
    { AV_CODEC_ID_DVVIDEO,      MKTAG('S', 'L', '2', '5') },
157
    { AV_CODEC_ID_DVVIDEO,      MKTAG('S', 'L', 'D', 'V') },
158
    { AV_CODEC_ID_DVVIDEO,      MKTAG('A', 'V', 'd', '1') },
159
    { AV_CODEC_ID_MPEG1VIDEO,   MKTAG('m', 'p', 'g', '1') },
160
    { AV_CODEC_ID_MPEG2VIDEO,   MKTAG('m', 'p', 'g', '2') },
161
    { AV_CODEC_ID_MPEG2VIDEO,   MKTAG('M', 'P', 'E', 'G') },
162
    { AV_CODEC_ID_MPEG1VIDEO,   MKTAG('P', 'I', 'M', '1') },
163
    { AV_CODEC_ID_MPEG2VIDEO,   MKTAG('P', 'I', 'M', '2') },
164
    { AV_CODEC_ID_MPEG2VIDEO,   MKTAG('V', 'C', 'R', '2') },
165
    { AV_CODEC_ID_MPEG1VIDEO,   MKTAG( 1 ,  0 ,  0 ,  16) },
166
    { AV_CODEC_ID_MPEG2VIDEO,   MKTAG( 2 ,  0 ,  0 ,  16) },
167
    { AV_CODEC_ID_MPEG4,        MKTAG( 4 ,  0 ,  0 ,  16) },
168
    { AV_CODEC_ID_MPEG2VIDEO,   MKTAG('D', 'V', 'R', ' ') },
169
    { AV_CODEC_ID_MPEG2VIDEO,   MKTAG('M', 'M', 'E', 'S') },
170
    /* Lead MPEG-2 in AVI */
171
    { AV_CODEC_ID_MPEG2VIDEO,   MKTAG('L', 'M', 'P', '2') },
172
    { AV_CODEC_ID_MPEG2VIDEO,   MKTAG('s', 'l', 'i', 'f') },
173
    { AV_CODEC_ID_MPEG2VIDEO,   MKTAG('E', 'M', '2', 'V') },
174
    /* Matrox MPEG-2 intra-only */
175
    { AV_CODEC_ID_MPEG2VIDEO,   MKTAG('M', '7', '0', '1') },
176
    { AV_CODEC_ID_MPEG2VIDEO,   MKTAG('M', '7', '0', '2') },
177
    { AV_CODEC_ID_MPEG2VIDEO,   MKTAG('M', '7', '0', '3') },
178
    { AV_CODEC_ID_MPEG2VIDEO,   MKTAG('M', '7', '0', '4') },
179
    { AV_CODEC_ID_MPEG2VIDEO,   MKTAG('M', '7', '0', '5') },
180
    { AV_CODEC_ID_MPEG2VIDEO,   MKTAG('m', 'p', 'g', 'v') },
181
    { AV_CODEC_ID_MPEG1VIDEO,   MKTAG('B', 'W', '1', '0') },
182
    { AV_CODEC_ID_MPEG1VIDEO,   MKTAG('X', 'M', 'P', 'G') }, /* Xing MPEG intra only */
183
    { AV_CODEC_ID_MJPEG,        MKTAG('M', 'J', 'P', 'G') },
184
    { AV_CODEC_ID_MJPEG,        MKTAG('M', 'S', 'C', '2') }, /* Multiscope II */
185
    { AV_CODEC_ID_MJPEG,        MKTAG('L', 'J', 'P', 'G') },
186
    { AV_CODEC_ID_MJPEG,        MKTAG('d', 'm', 'b', '1') },
187
    { AV_CODEC_ID_MJPEG,        MKTAG('m', 'j', 'p', 'a') },
188
    { AV_CODEC_ID_MJPEG,        MKTAG('J', 'R', '2', '4') }, /* Quadrox Mjpeg */
189
    { AV_CODEC_ID_LJPEG,        MKTAG('L', 'J', 'P', 'G') },
190
    /* Pegasus lossless JPEG */
191
    { AV_CODEC_ID_MJPEG,        MKTAG('J', 'P', 'G', 'L') },
192
    /* JPEG-LS custom FOURCC for AVI - encoder */
193
    { AV_CODEC_ID_JPEGLS,       MKTAG('M', 'J', 'L', 'S') },
194
    { AV_CODEC_ID_JPEGLS,       MKTAG('M', 'J', 'P', 'G') },
195
    /* JPEG-LS custom FOURCC for AVI - decoder */
196
    { AV_CODEC_ID_MJPEG,        MKTAG('M', 'J', 'L', 'S') },
197
    { AV_CODEC_ID_MJPEG,        MKTAG('j', 'p', 'e', 'g') },
198
    { AV_CODEC_ID_MJPEG,        MKTAG('I', 'J', 'P', 'G') },
199
    { AV_CODEC_ID_AVRN,         MKTAG('A', 'V', 'R', 'n') },
200
    { AV_CODEC_ID_MJPEG,        MKTAG('A', 'C', 'D', 'V') },
201
    { AV_CODEC_ID_MJPEG,        MKTAG('Q', 'I', 'V', 'G') },
202
    /* SL M-JPEG */
203
    { AV_CODEC_ID_MJPEG,        MKTAG('S', 'L', 'M', 'J') },
204
    /* Creative Webcam JPEG */
205
    { AV_CODEC_ID_MJPEG,        MKTAG('C', 'J', 'P', 'G') },
206
    /* Intel JPEG Library Video Codec */
207
    { AV_CODEC_ID_MJPEG,        MKTAG('I', 'J', 'L', 'V') },
208
    /* Midvid JPEG Video Codec */
209
    { AV_CODEC_ID_MJPEG,        MKTAG('M', 'V', 'J', 'P') },
210
    { AV_CODEC_ID_MJPEG,        MKTAG('A', 'V', 'I', '1') },
211
    { AV_CODEC_ID_MJPEG,        MKTAG('A', 'V', 'I', '2') },
212
    { AV_CODEC_ID_MJPEG,        MKTAG('M', 'T', 'S', 'J') },
213
    /* Paradigm Matrix M-JPEG Codec */
214
    { AV_CODEC_ID_MJPEG,        MKTAG('Z', 'J', 'P', 'G') },
215
    { AV_CODEC_ID_MJPEG,        MKTAG('M', 'M', 'J', 'P') },
216
    { AV_CODEC_ID_HUFFYUV,      MKTAG('H', 'F', 'Y', 'U') },
217
    { AV_CODEC_ID_FFVHUFF,      MKTAG('F', 'F', 'V', 'H') },
218
    { AV_CODEC_ID_CYUV,         MKTAG('C', 'Y', 'U', 'V') },
219
    { AV_CODEC_ID_RAWVIDEO,     MKTAG( 0 ,  0 ,  0 ,  0 ) },
220
    { AV_CODEC_ID_RAWVIDEO,     MKTAG( 3 ,  0 ,  0 ,  0 ) },
221
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('I', '4', '2', '0') },
222
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('Y', 'U', 'Y', '2') },
223
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('Y', '2', '1', '0') },
224
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('Y', '2', '1', '6') },
225
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('Y', '4', '1', '6') },
226
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('Y', '4', '2', '2') },
227
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('V', '4', '2', '2') },
228
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('Y', '4', '1', '0') },
229
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('Y', 'U', 'N', 'V') },
230
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('U', 'Y', 'N', 'V') },
231
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('U', 'Y', 'N', 'Y') },
232
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('u', 'y', 'v', '1') },
233
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('2', 'V', 'u', '1') },
234
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('2', 'v', 'u', 'y') },
235
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('y', 'u', 'v', 's') },
236
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('y', 'u', 'v', '2') },
237
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('P', '4', '2', '2') },
238
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('Y', 'V', '1', '2') },
239
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('Y', 'V', '1', '6') },
240
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('Y', 'V', '2', '4') },
241
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('U', 'Y', 'V', 'Y') },
242
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('V', 'Y', 'U', 'Y') },
243
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('I', 'Y', 'U', 'V') },
244
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('A', 'Y', 'U', 'V') },
245
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('Y', '8', '0', '0') },
246
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('Y', '8', ' ', ' ') },
247
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('H', 'D', 'Y', 'C') },
248
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('Y', 'V', 'U', '9') },
249
    /* SoftLab-NSK VideoTizer */
250
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('V', 'D', 'T', 'Z') },
251
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('Y', '4', '1', '1') },
252
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('N', 'V', '1', '2') },
253
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('N', 'V', '2', '1') },
254
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('Y', '4', '1', 'B') },
255
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('Y', '4', '2', 'B') },
256
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('Y', 'U', 'V', '9') },
257
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('Y', 'V', 'U', '9') },
258
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('a', 'u', 'v', '2') },
259
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('Y', 'V', 'Y', 'U') },
260
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('Y', 'U', 'Y', 'V') },
261
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('I', '4', '1', '0') },
262
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('I', '4', '1', '1') },
263
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('I', '4', '2', '2') },
264
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('I', '4', '4', '0') },
265
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('I', '4', '4', '4') },
266
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('J', '4', '2', '0') },
267
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('J', '4', '2', '2') },
268
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('J', '4', '4', '0') },
269
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('J', '4', '4', '4') },
270
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('Y', 'U', 'V', 'A') },
271
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('I', '4', '0', 'A') },
272
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('I', '4', '2', 'A') },
273
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('R', 'G', 'B', '2') },
274
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('R', 'V', '1', '5') },
275
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('R', 'V', '1', '6') },
276
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('R', 'V', '2', '4') },
277
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('R', 'V', '3', '2') },
278
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('R', 'G', 'B', 'A') },
279
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('A', 'V', '3', '2') },
280
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('G', 'R', 'E', 'Y') },
281
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('I', '0', '9', 'L') },
282
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('I', '0', '9', 'B') },
283
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('I', '2', '9', 'L') },
284
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('I', '2', '9', 'B') },
285
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('I', '4', '9', 'L') },
286
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('I', '4', '9', 'B') },
287
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('I', '0', 'A', 'L') },
288
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('I', '0', 'A', 'B') },
289
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('I', '2', 'A', 'L') },
290
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('I', '2', 'A', 'B') },
291
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('I', '4', 'A', 'L') },
292
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('I', '4', 'A', 'B') },
293
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('I', '4', 'F', 'L') },
294
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('I', '4', 'F', 'B') },
295
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('I', '0', 'C', 'L') },
296
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('I', '0', 'C', 'B') },
297
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('I', '2', 'C', 'L') },
298
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('I', '2', 'C', 'B') },
299
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('I', '4', 'C', 'L') },
300
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('I', '4', 'C', 'B') },
301
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('I', '0', 'F', 'L') },
302
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('I', '0', 'F', 'B') },
303
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('v', '3', '0', '8') },
304
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('v', '4', '0', '8') },
305
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('v', '4', '1', '0') },
306
    { AV_CODEC_ID_RAWVIDEO,     MKTAG('y', '4', '0', '8') },
307
    { AV_CODEC_ID_FRWU,         MKTAG('F', 'R', 'W', 'U') },
308
    { AV_CODEC_ID_R10K,         MKTAG('R', '1', '0', 'k') },
309
    { AV_CODEC_ID_R210,         MKTAG('r', '2', '1', '0') },
310
    { AV_CODEC_ID_V210,         MKTAG('v', '2', '1', '0') },
311
    { AV_CODEC_ID_V210,         MKTAG('C', '2', '1', '0') },
312
#if FF_API_V408_CODECID
313
    { AV_CODEC_ID_V308,         MKTAG('v', '3', '0', '8') },
314
    { AV_CODEC_ID_V408,         MKTAG('v', '4', '0', '8') },
315
    { AV_CODEC_ID_V410,         MKTAG('v', '4', '1', '0') },
316
#endif
317
    { AV_CODEC_ID_YUV4,         MKTAG('y', 'u', 'v', '4') },
318
    { AV_CODEC_ID_INDEO3,       MKTAG('I', 'V', '3', '1') },
319
    { AV_CODEC_ID_INDEO3,       MKTAG('I', 'V', '3', '2') },
320
    { AV_CODEC_ID_INDEO4,       MKTAG('I', 'V', '4', '1') },
321
    { AV_CODEC_ID_INDEO5,       MKTAG('I', 'V', '5', '0') },
322
    { AV_CODEC_ID_VP3,          MKTAG('V', 'P', '3', '1') },
323
    { AV_CODEC_ID_VP3,          MKTAG('V', 'P', '3', '0') },
324
    { AV_CODEC_ID_VP4,          MKTAG('V', 'P', '4', '0') },
325
    { AV_CODEC_ID_VP5,          MKTAG('V', 'P', '5', '0') },
326
    { AV_CODEC_ID_VP6,          MKTAG('V', 'P', '6', '0') },
327
    { AV_CODEC_ID_VP6,          MKTAG('V', 'P', '6', '1') },
328
    { AV_CODEC_ID_VP6,          MKTAG('V', 'P', '6', '2') },
329
    { AV_CODEC_ID_VP6A,         MKTAG('V', 'P', '6', 'A') },
330
    { AV_CODEC_ID_VP6F,         MKTAG('V', 'P', '6', 'F') },
331
    { AV_CODEC_ID_VP6F,         MKTAG('F', 'L', 'V', '4') },
332
    { AV_CODEC_ID_VP7,          MKTAG('V', 'P', '7', '0') },
333
    { AV_CODEC_ID_VP7,          MKTAG('V', 'P', '7', '1') },
334
    { AV_CODEC_ID_VP8,          MKTAG('V', 'P', '8', '0') },
335
    { AV_CODEC_ID_VP9,          MKTAG('V', 'P', '9', '0') },
336
    { AV_CODEC_ID_ASV1,         MKTAG('A', 'S', 'V', '1') },
337
    { AV_CODEC_ID_ASV2,         MKTAG('A', 'S', 'V', '2') },
338
    { AV_CODEC_ID_VCR1,         MKTAG('V', 'C', 'R', '1') },
339
    { AV_CODEC_ID_FFV1,         MKTAG('F', 'F', 'V', '1') },
340
    { AV_CODEC_ID_XAN_WC4,      MKTAG('X', 'x', 'a', 'n') },
341
    { AV_CODEC_ID_MIMIC,        MKTAG('L', 'M', '2', '0') },
342
    { AV_CODEC_ID_MSRLE,        MKTAG('m', 'r', 'l', 'e') },
343
    { AV_CODEC_ID_MSRLE,        MKTAG( 1 ,  0 ,  0 ,  0 ) },
344
    { AV_CODEC_ID_MSRLE,        MKTAG( 2 ,  0 ,  0 ,  0 ) },
345
    { AV_CODEC_ID_MSVIDEO1,     MKTAG('M', 'S', 'V', 'C') },
346
    { AV_CODEC_ID_MSVIDEO1,     MKTAG('m', 's', 'v', 'c') },
347
    { AV_CODEC_ID_MSVIDEO1,     MKTAG('C', 'R', 'A', 'M') },
348
    { AV_CODEC_ID_MSVIDEO1,     MKTAG('c', 'r', 'a', 'm') },
349
    { AV_CODEC_ID_MSVIDEO1,     MKTAG('W', 'H', 'A', 'M') },
350
    { AV_CODEC_ID_MSVIDEO1,     MKTAG('w', 'h', 'a', 'm') },
351
    { AV_CODEC_ID_CINEPAK,      MKTAG('c', 'v', 'i', 'd') },
352
    { AV_CODEC_ID_TRUEMOTION1,  MKTAG('D', 'U', 'C', 'K') },
353
    { AV_CODEC_ID_TRUEMOTION1,  MKTAG('P', 'V', 'E', 'Z') },
354
    { AV_CODEC_ID_MSZH,         MKTAG('M', 'S', 'Z', 'H') },
355
    { AV_CODEC_ID_ZLIB,         MKTAG('Z', 'L', 'I', 'B') },
356
    { AV_CODEC_ID_SNOW,         MKTAG('S', 'N', 'O', 'W') },
357
    { AV_CODEC_ID_4XM,          MKTAG('4', 'X', 'M', 'V') },
358
    { AV_CODEC_ID_FLV1,         MKTAG('F', 'L', 'V', '1') },
359
    { AV_CODEC_ID_FLV1,         MKTAG('S', '2', '6', '3') },
360
    { AV_CODEC_ID_FLASHSV,      MKTAG('F', 'S', 'V', '1') },
361
    { AV_CODEC_ID_SVQ1,         MKTAG('s', 'v', 'q', '1') },
362
    { AV_CODEC_ID_TSCC,         MKTAG('t', 's', 'c', 'c') },
363
    { AV_CODEC_ID_ULTI,         MKTAG('U', 'L', 'T', 'I') },
364
    { AV_CODEC_ID_VIXL,         MKTAG('V', 'I', 'X', 'L') },
365
    { AV_CODEC_ID_QPEG,         MKTAG('Q', 'P', 'E', 'G') },
366
    { AV_CODEC_ID_QPEG,         MKTAG('Q', '1', '.', '0') },
367
    { AV_CODEC_ID_QPEG,         MKTAG('Q', '1', '.', '1') },
368
    { AV_CODEC_ID_WMV3,         MKTAG('W', 'M', 'V', '3') },
369
    { AV_CODEC_ID_WMV3IMAGE,    MKTAG('W', 'M', 'V', 'P') },
370
    { AV_CODEC_ID_VC1,          MKTAG('W', 'V', 'C', '1') },
371
    { AV_CODEC_ID_VC1,          MKTAG('W', 'M', 'V', 'A') },
372
    { AV_CODEC_ID_VC1IMAGE,     MKTAG('W', 'V', 'P', '2') },
373
    { AV_CODEC_ID_LOCO,         MKTAG('L', 'O', 'C', 'O') },
374
    { AV_CODEC_ID_WNV1,         MKTAG('W', 'N', 'V', '1') },
375
    { AV_CODEC_ID_WNV1,         MKTAG('Y', 'U', 'V', '8') },
376
    { AV_CODEC_ID_AASC,         MKTAG('A', 'A', 'S', '4') }, /* Autodesk 24 bit RLE compressor */
377
    { AV_CODEC_ID_AASC,         MKTAG('A', 'A', 'S', 'C') },
378
    { AV_CODEC_ID_INDEO2,       MKTAG('R', 'T', '2', '1') },
379
    { AV_CODEC_ID_FRAPS,        MKTAG('F', 'P', 'S', '1') },
380
    { AV_CODEC_ID_THEORA,       MKTAG('t', 'h', 'e', 'o') },
381
    { AV_CODEC_ID_TRUEMOTION2,  MKTAG('T', 'M', '2', '0') },
382
    { AV_CODEC_ID_TRUEMOTION2RT,MKTAG('T', 'R', '2', '0') },
383
    { AV_CODEC_ID_CSCD,         MKTAG('C', 'S', 'C', 'D') },
384
    { AV_CODEC_ID_ZMBV,         MKTAG('Z', 'M', 'B', 'V') },
385
    { AV_CODEC_ID_KMVC,         MKTAG('K', 'M', 'V', 'C') },
386
    { AV_CODEC_ID_CAVS,         MKTAG('C', 'A', 'V', 'S') },
387
    { AV_CODEC_ID_AVS2,         MKTAG('A', 'V', 'S', '2') },
388
    { AV_CODEC_ID_JPEG2000,     MKTAG('m', 'j', 'p', '2') },
389
    { AV_CODEC_ID_JPEG2000,     MKTAG('M', 'J', '2', 'C') },
390
    { AV_CODEC_ID_JPEG2000,     MKTAG('L', 'J', '2', 'C') },
391
    { AV_CODEC_ID_JPEG2000,     MKTAG('L', 'J', '2', 'K') },
392
    { AV_CODEC_ID_JPEG2000,     MKTAG('I', 'P', 'J', '2') },
393
    { AV_CODEC_ID_JPEG2000,     MKTAG('A', 'V', 'j', '2') }, /* Avid jpeg2000 */
394
    { AV_CODEC_ID_VMNC,         MKTAG('V', 'M', 'n', 'c') },
395
    { AV_CODEC_ID_TARGA,        MKTAG('t', 'g', 'a', ' ') },
396
    { AV_CODEC_ID_PNG,          MKTAG('M', 'P', 'N', 'G') },
397
    { AV_CODEC_ID_PNG,          MKTAG('P', 'N', 'G', '1') },
398
    { AV_CODEC_ID_PNG,          MKTAG('p', 'n', 'g', ' ') }, /* ImageJ */
399
    { AV_CODEC_ID_CLJR,         MKTAG('C', 'L', 'J', 'R') },
400
    { AV_CODEC_ID_DIRAC,        MKTAG('d', 'r', 'a', 'c') },
401
    { AV_CODEC_ID_RPZA,         MKTAG('a', 'z', 'p', 'r') },
402
    { AV_CODEC_ID_RPZA,         MKTAG('R', 'P', 'Z', 'A') },
403
    { AV_CODEC_ID_RPZA,         MKTAG('r', 'p', 'z', 'a') },
404
    { AV_CODEC_ID_SP5X,         MKTAG('S', 'P', '5', '4') },
405
    { AV_CODEC_ID_AURA,         MKTAG('A', 'U', 'R', 'A') },
406
    { AV_CODEC_ID_AURA2,        MKTAG('A', 'U', 'R', '2') },
407
    { AV_CODEC_ID_DPX,          MKTAG('d', 'p', 'x', ' ') },
408
    { AV_CODEC_ID_KGV1,         MKTAG('K', 'G', 'V', '1') },
409
    { AV_CODEC_ID_LAGARITH,     MKTAG('L', 'A', 'G', 'S') },
410
    { AV_CODEC_ID_AMV,          MKTAG('A', 'M', 'V', 'F') },
411
    { AV_CODEC_ID_UTVIDEO,      MKTAG('U', 'L', 'R', 'A') },
412
    { AV_CODEC_ID_UTVIDEO,      MKTAG('U', 'L', 'R', 'G') },
413
    { AV_CODEC_ID_UTVIDEO,      MKTAG('U', 'L', 'Y', '0') },
414
    { AV_CODEC_ID_UTVIDEO,      MKTAG('U', 'L', 'Y', '2') },
415
    { AV_CODEC_ID_UTVIDEO,      MKTAG('U', 'L', 'Y', '4') },
416
    /* Ut Video version 13.0.1 BT.709 codecs */
417
    { AV_CODEC_ID_UTVIDEO,      MKTAG('U', 'L', 'H', '0') },
418
    { AV_CODEC_ID_UTVIDEO,      MKTAG('U', 'L', 'H', '2') },
419
    { AV_CODEC_ID_UTVIDEO,      MKTAG('U', 'L', 'H', '4') },
420
    { AV_CODEC_ID_UTVIDEO,      MKTAG('U', 'Q', 'Y', '0') },
421
    { AV_CODEC_ID_UTVIDEO,      MKTAG('U', 'Q', 'Y', '2') },
422
    { AV_CODEC_ID_UTVIDEO,      MKTAG('U', 'Q', 'R', 'A') },
423
    { AV_CODEC_ID_UTVIDEO,      MKTAG('U', 'Q', 'R', 'G') },
424
    { AV_CODEC_ID_UTVIDEO,      MKTAG('U', 'M', 'Y', '2') },
425
    { AV_CODEC_ID_UTVIDEO,      MKTAG('U', 'M', 'H', '2') },
426
    { AV_CODEC_ID_UTVIDEO,      MKTAG('U', 'M', 'Y', '4') },
427
    { AV_CODEC_ID_UTVIDEO,      MKTAG('U', 'M', 'H', '4') },
428
    { AV_CODEC_ID_UTVIDEO,      MKTAG('U', 'M', 'R', 'A') },
429
    { AV_CODEC_ID_UTVIDEO,      MKTAG('U', 'M', 'R', 'G') },
430
    { AV_CODEC_ID_VBLE,         MKTAG('V', 'B', 'L', 'E') },
431
    { AV_CODEC_ID_ESCAPE130,    MKTAG('E', '1', '3', '0') },
432
    { AV_CODEC_ID_DXTORY,       MKTAG('x', 't', 'o', 'r') },
433
    { AV_CODEC_ID_ZEROCODEC,    MKTAG('Z', 'E', 'C', 'O') },
434
    { AV_CODEC_ID_Y41P,         MKTAG('Y', '4', '1', 'P') },
435
    { AV_CODEC_ID_FLIC,         MKTAG('A', 'F', 'L', 'C') },
436
    { AV_CODEC_ID_MSS1,         MKTAG('M', 'S', 'S', '1') },
437
    { AV_CODEC_ID_MSA1,         MKTAG('M', 'S', 'A', '1') },
438
    { AV_CODEC_ID_TSCC2,        MKTAG('T', 'S', 'C', '2') },
439
    { AV_CODEC_ID_MTS2,         MKTAG('M', 'T', 'S', '2') },
440
    { AV_CODEC_ID_CLLC,         MKTAG('C', 'L', 'L', 'C') },
441
    { AV_CODEC_ID_MSS2,         MKTAG('M', 'S', 'S', '2') },
442
    { AV_CODEC_ID_SVQ3,         MKTAG('S', 'V', 'Q', '3') },
443
    { AV_CODEC_ID_012V,         MKTAG('0', '1', '2', 'v') },
444
    { AV_CODEC_ID_012V,         MKTAG('a', '1', '2', 'v') },
445
    { AV_CODEC_ID_G2M,          MKTAG('G', '2', 'M', '2') },
446
    { AV_CODEC_ID_G2M,          MKTAG('G', '2', 'M', '3') },
447
    { AV_CODEC_ID_G2M,          MKTAG('G', '2', 'M', '4') },
448
    { AV_CODEC_ID_G2M,          MKTAG('G', '2', 'M', '5') },
449
    { AV_CODEC_ID_FIC,          MKTAG('F', 'I', 'C', 'V') },
450
    { AV_CODEC_ID_HQX,          MKTAG('C', 'H', 'Q', 'X') },
451
    { AV_CODEC_ID_TDSC,         MKTAG('T', 'D', 'S', 'C') },
452
    { AV_CODEC_ID_HQ_HQA,       MKTAG('C', 'U', 'V', 'C') },
453
    { AV_CODEC_ID_RV40,         MKTAG('R', 'V', '4', '0') },
454
    { AV_CODEC_ID_SCREENPRESSO, MKTAG('S', 'P', 'V', '1') },
455
    { AV_CODEC_ID_RSCC,         MKTAG('R', 'S', 'C', 'C') },
456
    { AV_CODEC_ID_RSCC,         MKTAG('I', 'S', 'C', 'C') },
457
    { AV_CODEC_ID_CFHD,         MKTAG('C', 'F', 'H', 'D') },
458
    { AV_CODEC_ID_M101,         MKTAG('M', '1', '0', '1') },
459
    { AV_CODEC_ID_M101,         MKTAG('M', '1', '0', '2') },
460
    { AV_CODEC_ID_MAGICYUV,     MKTAG('M', 'A', 'G', 'Y') },
461
    { AV_CODEC_ID_MAGICYUV,     MKTAG('M', '8', 'R', 'G') },
462
    { AV_CODEC_ID_MAGICYUV,     MKTAG('M', '8', 'R', 'A') },
463
    { AV_CODEC_ID_MAGICYUV,     MKTAG('M', '8', 'G', '0') },
464
    { AV_CODEC_ID_MAGICYUV,     MKTAG('M', '8', 'Y', '0') },
465
    { AV_CODEC_ID_MAGICYUV,     MKTAG('M', '8', 'Y', '2') },
466
    { AV_CODEC_ID_MAGICYUV,     MKTAG('M', '8', 'Y', '4') },
467
    { AV_CODEC_ID_MAGICYUV,     MKTAG('M', '8', 'Y', 'A') },
468
    { AV_CODEC_ID_MAGICYUV,     MKTAG('M', '0', 'R', 'A') },
469
    { AV_CODEC_ID_MAGICYUV,     MKTAG('M', '0', 'R', 'G') },
470
    { AV_CODEC_ID_MAGICYUV,     MKTAG('M', '0', 'G', '0') },
471
    { AV_CODEC_ID_MAGICYUV,     MKTAG('M', '0', 'Y', '0') },
472
    { AV_CODEC_ID_MAGICYUV,     MKTAG('M', '0', 'Y', '2') },
473
    { AV_CODEC_ID_MAGICYUV,     MKTAG('M', '0', 'Y', '4') },
474
    { AV_CODEC_ID_MAGICYUV,     MKTAG('M', '2', 'R', 'A') },
475
    { AV_CODEC_ID_MAGICYUV,     MKTAG('M', '2', 'R', 'G') },
476
    { AV_CODEC_ID_MAGICYUV,     MKTAG('M', '4', 'R', 'A') },
477
    { AV_CODEC_ID_MAGICYUV,     MKTAG('M', '4', 'R', 'G') },
478
    { AV_CODEC_ID_YLC,          MKTAG('Y', 'L', 'C', '0') },
479
    { AV_CODEC_ID_SPEEDHQ,      MKTAG('S', 'H', 'Q', '0') },
480
    { AV_CODEC_ID_SPEEDHQ,      MKTAG('S', 'H', 'Q', '1') },
481
    { AV_CODEC_ID_SPEEDHQ,      MKTAG('S', 'H', 'Q', '2') },
482
    { AV_CODEC_ID_SPEEDHQ,      MKTAG('S', 'H', 'Q', '3') },
483
    { AV_CODEC_ID_SPEEDHQ,      MKTAG('S', 'H', 'Q', '4') },
484
    { AV_CODEC_ID_SPEEDHQ,      MKTAG('S', 'H', 'Q', '5') },
485
    { AV_CODEC_ID_SPEEDHQ,      MKTAG('S', 'H', 'Q', '7') },
486
    { AV_CODEC_ID_SPEEDHQ,      MKTAG('S', 'H', 'Q', '9') },
487
    { AV_CODEC_ID_FMVC,         MKTAG('F', 'M', 'V', 'C') },
488
    { AV_CODEC_ID_SCPR,         MKTAG('S', 'C', 'P', 'R') },
489
    { AV_CODEC_ID_CLEARVIDEO,   MKTAG('U', 'C', 'O', 'D') },
490
    { AV_CODEC_ID_AV1,          MKTAG('A', 'V', '0', '1') },
491
    { AV_CODEC_ID_MSCC,         MKTAG('M', 'S', 'C', 'C') },
492
    { AV_CODEC_ID_SRGC,         MKTAG('S', 'R', 'G', 'C') },
493
    { AV_CODEC_ID_IMM4,         MKTAG('I', 'M', 'M', '4') },
494
    { AV_CODEC_ID_PROSUMER,     MKTAG('B', 'T', '2', '0') },
495
    { AV_CODEC_ID_MWSC,         MKTAG('M', 'W', 'S', 'C') },
496
    { AV_CODEC_ID_WCMV,         MKTAG('W', 'C', 'M', 'V') },
497
    { AV_CODEC_ID_RASC,         MKTAG('R', 'A', 'S', 'C') },
498
    { AV_CODEC_ID_HYMT,         MKTAG('H', 'Y', 'M', 'T') },
499
    { AV_CODEC_ID_ARBC,         MKTAG('A', 'R', 'B', 'C') },
500
    { AV_CODEC_ID_AGM,          MKTAG('A', 'G', 'M', '0') },
501
    { AV_CODEC_ID_AGM,          MKTAG('A', 'G', 'M', '1') },
502
    { AV_CODEC_ID_AGM,          MKTAG('A', 'G', 'M', '2') },
503
    { AV_CODEC_ID_AGM,          MKTAG('A', 'G', 'M', '3') },
504
    { AV_CODEC_ID_AGM,          MKTAG('A', 'G', 'M', '4') },
505
    { AV_CODEC_ID_AGM,          MKTAG('A', 'G', 'M', '5') },
506
    { AV_CODEC_ID_AGM,          MKTAG('A', 'G', 'M', '6') },
507
    { AV_CODEC_ID_AGM,          MKTAG('A', 'G', 'M', '7') },
508
    { AV_CODEC_ID_LSCR,         MKTAG('L', 'S', 'C', 'R') },
509
    { AV_CODEC_ID_IMM5,         MKTAG('I', 'M', 'M', '5') },
510
    { AV_CODEC_ID_MVDV,         MKTAG('M', 'V', 'D', 'V') },
511
    { AV_CODEC_ID_MVHA,         MKTAG('M', 'V', 'H', 'A') },
512
    { AV_CODEC_ID_MV30,         MKTAG('M', 'V', '3', '0') },
513
    { AV_CODEC_ID_NOTCHLC,      MKTAG('n', 'l', 'c', '1') },
514
    { AV_CODEC_ID_VQC,          MKTAG('V', 'Q', 'C', '1') },
515
    { AV_CODEC_ID_VQC,          MKTAG('V', 'Q', 'C', '2') },
516
    { AV_CODEC_ID_RTV1,         MKTAG('R', 'T', 'V', '1') },
517
    { AV_CODEC_ID_VMIX,         MKTAG('V', 'M', 'X', '1') },
518
    { AV_CODEC_ID_LEAD,         MKTAG('L', 'E', 'A', 'D') },
519
    { AV_CODEC_ID_EVC,          MKTAG('e', 'v', 'c', '1') },
520
    { AV_CODEC_ID_RV60,         MKTAG('R', 'V', '6', '0') },
521
    { AV_CODEC_ID_NONE,         0 }
522
};
523
524
const AVCodecTag ff_codec_bmp_tags_unofficial[] = {
525
    { AV_CODEC_ID_HEVC,         MKTAG('H', 'E', 'V', 'C') },
526
    { AV_CODEC_ID_HEVC,         MKTAG('H', '2', '6', '5') },
527
    { AV_CODEC_ID_NONE,         0 }
528
};
529
530
const AVCodecTag ff_codec_wav_tags[] = {
531
    { AV_CODEC_ID_PCM_S16LE,       0x0001 },
532
    /* must come after s16le in this list */
533
    { AV_CODEC_ID_PCM_U8,          0x0001 },
534
    { AV_CODEC_ID_PCM_S24LE,       0x0001 },
535
    { AV_CODEC_ID_PCM_S32LE,       0x0001 },
536
    { AV_CODEC_ID_PCM_S64LE,       0x0001 },
537
    { AV_CODEC_ID_ADPCM_MS,        0x0002 },
538
    { AV_CODEC_ID_PCM_F32LE,       0x0003 },
539
    /* must come after f32le in this list */
540
    { AV_CODEC_ID_PCM_F64LE,       0x0003 },
541
    { AV_CODEC_ID_PCM_ALAW,        0x0006 },
542
    { AV_CODEC_ID_PCM_MULAW,       0x0007 },
543
    { AV_CODEC_ID_WMAVOICE,        0x000A },
544
    { AV_CODEC_ID_ADPCM_IMA_OKI,   0x0010 },
545
    { AV_CODEC_ID_ADPCM_IMA_WAV,   0x0011 },
546
    /* must come after adpcm_ima_wav in this list */
547
    { AV_CODEC_ID_ADPCM_ZORK,      0x0011 },
548
    { AV_CODEC_ID_ADPCM_IMA_OKI,   0x0017 },
549
    { AV_CODEC_ID_ADPCM_YAMAHA,    0x0020 },
550
    { AV_CODEC_ID_TRUESPEECH,      0x0022 },
551
    { AV_CODEC_ID_GSM_MS,          0x0031 },
552
    { AV_CODEC_ID_GSM_MS,          0x0032 },  /* msn audio */
553
    { AV_CODEC_ID_AMR_NB,          0x0038 },  /* rogue format number */
554
    { AV_CODEC_ID_G723_1,          0x0042 },
555
    { AV_CODEC_ID_ADPCM_G726,      0x0045 },
556
    { AV_CODEC_ID_ADPCM_G726,      0x0014 },  /* g723 Antex */
557
    { AV_CODEC_ID_ADPCM_G726,      0x0040 },  /* g721 Antex */
558
    { AV_CODEC_ID_G728,            0x0041 },
559
    { AV_CODEC_ID_MP2,             0x0050 },
560
    { AV_CODEC_ID_MP3,             0x0055 },
561
    { AV_CODEC_ID_AMR_NB,          0x0057 },
562
    { AV_CODEC_ID_AMR_WB,          0x0058 },
563
    /* rogue format number */
564
    { AV_CODEC_ID_ADPCM_IMA_DK4,   0x0061 },
565
    /* rogue format number */
566
    { AV_CODEC_ID_ADPCM_IMA_DK3,   0x0062 },
567
    { AV_CODEC_ID_ADPCM_G726,      0x0064 },
568
    { AV_CODEC_ID_ADPCM_IMA_XBOX,  0x0069 },
569
    { AV_CODEC_ID_METASOUND,       0x0075 },
570
    { AV_CODEC_ID_G729,            0x0083 },
571
    { AV_CODEC_ID_AAC,             0x00ff },
572
    { AV_CODEC_ID_G723_1,          0x0111 },
573
    { AV_CODEC_ID_ADPCM_SANYO,     0x0125 },
574
    { AV_CODEC_ID_SIPR,            0x0130 },
575
    { AV_CODEC_ID_ACELP_KELVIN,    0x0135 },
576
    { AV_CODEC_ID_WMAV1,           0x0160 },
577
    { AV_CODEC_ID_WMAV2,           0x0161 },
578
    { AV_CODEC_ID_WMAPRO,          0x0162 },
579
    { AV_CODEC_ID_WMALOSSLESS,     0x0163 },
580
    { AV_CODEC_ID_XMA1,            0x0165 },
581
    { AV_CODEC_ID_XMA2,            0x0166 },
582
    { AV_CODEC_ID_FTR,             0x0180 },
583
    { AV_CODEC_ID_ADPCM_CT,        0x0200 },
584
    { AV_CODEC_ID_DVAUDIO,         0x0215 },
585
    { AV_CODEC_ID_DVAUDIO,         0x0216 },
586
    { AV_CODEC_ID_ATRAC3,          0x0270 },
587
    { AV_CODEC_ID_MSNSIREN,        0x028E },
588
    { AV_CODEC_ID_ADPCM_G722,      0x028F },
589
    { AV_CODEC_ID_MISC4,           0x0350 },
590
    { AV_CODEC_ID_IMC,             0x0401 },
591
    { AV_CODEC_ID_IAC,             0x0402 },
592
    { AV_CODEC_ID_ON2AVC,          0x0500 },
593
    { AV_CODEC_ID_ON2AVC,          0x0501 },
594
    { AV_CODEC_ID_GSM_MS,          0x1500 },
595
    { AV_CODEC_ID_TRUESPEECH,      0x1501 },
596
    /* ADTS AAC */
597
    { AV_CODEC_ID_AAC,             0x1600 },
598
    { AV_CODEC_ID_AAC_LATM,        0x1602 },
599
    { AV_CODEC_ID_AAC,             0x1610 },
600
    { AV_CODEC_ID_AC3,             0x2000 },
601
    /* There is no Microsoft Format Tag for E-AC3, the GUID has to be used */
602
    { AV_CODEC_ID_EAC3,            0x2000 },
603
    { AV_CODEC_ID_DTS,             0x2001 },
604
    { AV_CODEC_ID_SONIC,           0x2048 },
605
    { AV_CODEC_ID_SONIC_LS,        0x2048 },
606
    { AV_CODEC_ID_G729,            0x2222 },
607
    { AV_CODEC_ID_PCM_MULAW,       0x6c75 },
608
    { AV_CODEC_ID_AAC,             0x706d },
609
    { AV_CODEC_ID_AAC,             0x4143 },
610
    { AV_CODEC_ID_FTR,             0x4180 },
611
    { AV_CODEC_ID_XAN_DPCM,        0x594a },
612
    { AV_CODEC_ID_G729,            0x729A },
613
    { AV_CODEC_ID_FTR,             0x8180 },
614
    { AV_CODEC_ID_G723_1,          0xA100 }, /* Comverse Infosys Ltd. G723 1 */
615
    { AV_CODEC_ID_AAC,             0xA106 },
616
    { AV_CODEC_ID_SPEEX,           0xA109 },
617
    { AV_CODEC_ID_G728,            0xCD02 },
618
    { AV_CODEC_ID_FLAC,            0xF1AC },
619
    /* DFPWM does not have an assigned format tag; it uses a GUID in WAVEFORMATEX instead */
620
    { AV_CODEC_ID_DFPWM,           0xFFFE },
621
    { AV_CODEC_ID_ADPCM_SWF,       ('S' << 8) + 'F' },
622
    /* HACK/FIXME: Does Vorbis in WAV/AVI have an (in)official ID? */
623
    { AV_CODEC_ID_VORBIS,          ('V' << 8) + 'o' },
624
    { AV_CODEC_ID_NONE,      0 },
625
};
626
627
#if CONFIG_AVI_MUXER || CONFIG_WTV_MUXER
628
const AVCodecTag *const ff_riff_codec_tags_list[] = {
629
    ff_codec_bmp_tags, ff_codec_wav_tags, NULL
630
};
631
#endif
632
633
#if CONFIG_WAV_DEMUXER || CONFIG_WAV_MUXER || CONFIG_W64_DEMUXER || CONFIG_W64_MUXER
634
const AVCodecTag *const ff_wav_codec_tags_list[] = { ff_codec_wav_tags, NULL };
635
#endif
636
637
const AVMetadataConv ff_riff_info_conv[] = {
638
    { "IART", "artist"     },
639
    { "ICMT", "comment"    },
640
    { "ICOP", "copyright"  },
641
    { "ICRD", "date"       },
642
    { "IGNR", "genre"      },
643
    { "ILNG", "language"   },
644
    { "INAM", "title"      },
645
    { "IPRD", "album"      },
646
    { "IPRT", "track"      },
647
    { "ITRK", "track"      },
648
    { "ISFT", "encoder"    },
649
    { "ISMP", "timecode"   },
650
    { "ITCH", "encoded_by" },
651
    { 0 },
652
};
653
654
const struct AVCodecTag *avformat_get_riff_video_tags(void)
655
0
{
656
0
    return ff_codec_bmp_tags;
657
0
}
658
659
const struct AVCodecTag *avformat_get_riff_audio_tags(void)
660
0
{
661
0
    return ff_codec_wav_tags;
662
0
}
663
664
const AVCodecGuid ff_codec_wav_guids[] = {
665
    { AV_CODEC_ID_AC3,      { 0x2C, 0x80, 0x6D, 0xE0, 0x46, 0xDB, 0xCF, 0x11, 0xB4, 0xD1, 0x00, 0x80, 0x5F, 0x6C, 0xBB, 0xEA } },
666
    { AV_CODEC_ID_ATRAC3P,  { 0xBF, 0xAA, 0x23, 0xE9, 0x58, 0xCB, 0x71, 0x44, 0xA1, 0x19, 0xFF, 0xFA, 0x01, 0xE4, 0xCE, 0x62 } },
667
    { AV_CODEC_ID_ATRAC9,   { 0xD2, 0x42, 0xE1, 0x47, 0xBA, 0x36, 0x8D, 0x4D, 0x88, 0xFC, 0x61, 0x65, 0x4F, 0x8C, 0x83, 0x6C } },
668
    { AV_CODEC_ID_EAC3,     { 0xAF, 0x87, 0xFB, 0xA7, 0x02, 0x2D, 0xFB, 0x42, 0xA4, 0xD4, 0x05, 0xCD, 0x93, 0x84, 0x3B, 0xDD } },
669
    { AV_CODEC_ID_MP2,      { 0x2B, 0x80, 0x6D, 0xE0, 0x46, 0xDB, 0xCF, 0x11, 0xB4, 0xD1, 0x00, 0x80, 0x5F, 0x6C, 0xBB, 0xEA } },
670
    { AV_CODEC_ID_ADPCM_AGM,{ 0x82, 0xEC, 0x1F, 0x6A, 0xCA, 0xDB, 0x19, 0x45, 0xBD, 0xE7, 0x56, 0xD3, 0xB3, 0xEF, 0x98, 0x1D } },
671
    { AV_CODEC_ID_DFPWM,    { 0x3A, 0xC1, 0xFA, 0x38, 0x81, 0x1D, 0x43, 0x61, 0xA4, 0x0D, 0xCE, 0x53, 0xCA, 0x60, 0x7C, 0xD1 } },
672
    { AV_CODEC_ID_NONE }
673
};