annotate riff.c @ 6268:68c7733519ca libavformat

aviobuf: Do short seeks forward by reading and skipping data instead of a proper seek This improves performance on e.g. seekable http.
author mstorsjo
date Sat, 17 Jul 2010 05:26:30 +0000
parents 1803559b765d
children 0e98c3e14c9a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1172
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
1 /*
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
2 * RIFF codec tags
4251
77e0c7511d41 cosmetics: Remove pointless period after copyright statement non-sentences.
diego
parents: 4242
diff changeset
3 * Copyright (c) 2000 Fabrice Bellard
1172
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
4 *
1358
0899bfe4105c Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 1356
diff changeset
5 * This file is part of FFmpeg.
0899bfe4105c Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 1356
diff changeset
6 *
0899bfe4105c Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 1356
diff changeset
7 * FFmpeg is free software; you can redistribute it and/or
1172
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
8 * modify it under the terms of the GNU Lesser General Public
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
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: 1356
diff changeset
10 * version 2.1 of the License, or (at your option) any later version.
1172
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
11 *
1358
0899bfe4105c Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 1356
diff changeset
12 * FFmpeg is distributed in the hope that it will be useful,
1172
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
15 * Lesser General Public License for more details.
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
16 *
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
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: 1356
diff changeset
18 * License along with FFmpeg; if not, write to the Free Software
1172
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
20 */
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
21
3286
6f61c3b36632 Use full path for #includes from another directory.
diego
parents: 3134
diff changeset
22 #include "libavcodec/avcodec.h"
1172
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
23 #include "avformat.h"
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
24 #include "riff.h"
4833
d607731c2cf8 Add waveformat-extensible support in the wav muxer.
rbultje
parents: 4802
diff changeset
25 #include "libavcodec/bytestream.h"
1172
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
26
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
27 /* Note: when encoding, the first matching tag is used, so order is
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
28 important if multiple tags possible for a given codec. */
5058
33a244b7ca65 Add ff_ prefixes to exported symbols in libavformat/riff.h.
diego
parents: 5043
diff changeset
29 const AVCodecTag ff_codec_bmp_tags[] = {
3131
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
30 { CODEC_ID_H264, MKTAG('H', '2', '6', '4') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
31 { CODEC_ID_H264, MKTAG('h', '2', '6', '4') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
32 { CODEC_ID_H264, MKTAG('X', '2', '6', '4') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
33 { CODEC_ID_H264, MKTAG('x', '2', '6', '4') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
34 { CODEC_ID_H264, MKTAG('a', 'v', 'c', '1') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
35 { CODEC_ID_H264, MKTAG('V', 'S', 'S', 'H') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
36 { CODEC_ID_H263, MKTAG('H', '2', '6', '3') },
4061
4911a195fd0e add fourccs from avi files
compn
parents: 4060
diff changeset
37 { CODEC_ID_H263, MKTAG('X', '2', '6', '3') },
4252
7e41d76dd300 add T263. works on samples/V-codecs/T263/
compn
parents: 4251
diff changeset
38 { CODEC_ID_H263, MKTAG('T', '2', '6', '3') },
4061
4911a195fd0e add fourccs from avi files
compn
parents: 4060
diff changeset
39 { CODEC_ID_H263, MKTAG('L', '2', '6', '3') },
4065
e1620316fe5c add VX1K h263 and DMK2 mpeg4 avi fourccs
compn
parents: 4061
diff changeset
40 { CODEC_ID_H263, MKTAG('V', 'X', '1', 'K') },
4897
d5c3a291ff4d Add zygo fourcc.
michael
parents: 4845
diff changeset
41 { CODEC_ID_H263, MKTAG('Z', 'y', 'G', 'o') },
3131
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
42 { CODEC_ID_H263P, MKTAG('H', '2', '6', '3') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
43 { CODEC_ID_H263I, MKTAG('I', '2', '6', '3') }, /* intel h263 */
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
44 { CODEC_ID_H261, MKTAG('H', '2', '6', '1') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
45 { CODEC_ID_H263P, MKTAG('U', '2', '6', '3') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
46 { CODEC_ID_H263P, MKTAG('v', 'i', 'v', '1') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
47 { CODEC_ID_MPEG4, MKTAG('F', 'M', 'P', '4') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
48 { CODEC_ID_MPEG4, MKTAG('D', 'I', 'V', 'X') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
49 { CODEC_ID_MPEG4, MKTAG('D', 'X', '5', '0') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
50 { CODEC_ID_MPEG4, MKTAG('X', 'V', 'I', 'D') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
51 { CODEC_ID_MPEG4, MKTAG('M', 'P', '4', 'S') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
52 { CODEC_ID_MPEG4, MKTAG('M', '4', 'S', '2') },
3132
2014993e4399 consistent use of MKTAG() in the codec_bmp_tags table
aurel
parents: 3131
diff changeset
53 { CODEC_ID_MPEG4, MKTAG( 4 , 0 , 0 , 0 ) }, /* some broken avi use this */
3131
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
54 { CODEC_ID_MPEG4, MKTAG('D', 'I', 'V', '1') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
55 { CODEC_ID_MPEG4, MKTAG('B', 'L', 'Z', '0') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
56 { CODEC_ID_MPEG4, MKTAG('m', 'p', '4', 'v') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
57 { CODEC_ID_MPEG4, MKTAG('U', 'M', 'P', '4') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
58 { CODEC_ID_MPEG4, MKTAG('W', 'V', '1', 'F') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
59 { CODEC_ID_MPEG4, MKTAG('S', 'E', 'D', 'G') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
60 { CODEC_ID_MPEG4, MKTAG('R', 'M', 'P', '4') },
3705
98156a539790 FOURCC addition: added 3IV2, another mpeg4 id. incoming/video_3iv2/video_3iv2.avi
banan
parents: 3693
diff changeset
61 { CODEC_ID_MPEG4, MKTAG('3', 'I', 'V', '2') },
4057
bf23e96cf362 add FFDS fourcc, ok'd by kostya
compn
parents: 4015
diff changeset
62 { CODEC_ID_MPEG4, MKTAG('F', 'F', 'D', 'S') },
4114
2eea8c397108 two more mpeg4 fourccs and one msmpeg4v3 from uncommon codec list
compn
parents: 4113
diff changeset
63 { CODEC_ID_MPEG4, MKTAG('F', 'V', 'F', 'W') },
4061
4911a195fd0e add fourccs from avi files
compn
parents: 4060
diff changeset
64 { CODEC_ID_MPEG4, MKTAG('D', 'C', 'O', 'D') },
4911a195fd0e add fourccs from avi files
compn
parents: 4060
diff changeset
65 { CODEC_ID_MPEG4, MKTAG('M', 'V', 'X', 'M') },
4911a195fd0e add fourccs from avi files
compn
parents: 4060
diff changeset
66 { CODEC_ID_MPEG4, MKTAG('P', 'M', '4', 'V') },
4911a195fd0e add fourccs from avi files
compn
parents: 4060
diff changeset
67 { CODEC_ID_MPEG4, MKTAG('S', 'M', 'P', '4') },
4911a195fd0e add fourccs from avi files
compn
parents: 4060
diff changeset
68 { CODEC_ID_MPEG4, MKTAG('D', 'X', 'G', 'M') },
4911a195fd0e add fourccs from avi files
compn
parents: 4060
diff changeset
69 { CODEC_ID_MPEG4, MKTAG('V', 'I', 'D', 'M') },
4911a195fd0e add fourccs from avi files
compn
parents: 4060
diff changeset
70 { CODEC_ID_MPEG4, MKTAG('M', '4', 'T', '3') },
4060
2d23165a1518 add GEOX fourcc for mpeg4
michael
parents: 4057
diff changeset
71 { CODEC_ID_MPEG4, MKTAG('G', 'E', 'O', 'X') },
4061
4911a195fd0e add fourccs from avi files
compn
parents: 4060
diff changeset
72 { CODEC_ID_MPEG4, MKTAG('H', 'D', 'X', '4') }, /* flipped video */
4065
e1620316fe5c add VX1K h263 and DMK2 mpeg4 avi fourccs
compn
parents: 4061
diff changeset
73 { CODEC_ID_MPEG4, MKTAG('D', 'M', 'K', '2') },
4084
96cf19bbdbdc add another mpeg4 avi fourcc from uncommon codecs list
compn
parents: 4072
diff changeset
74 { CODEC_ID_MPEG4, MKTAG('D', 'I', 'G', 'I') },
4114
2eea8c397108 two more mpeg4 fourccs and one msmpeg4v3 from uncommon codec list
compn
parents: 4113
diff changeset
75 { CODEC_ID_MPEG4, MKTAG('I', 'N', 'M', 'C') },
4263
06e2069d3b10 another mpeg4 fourcc
compn
parents: 4252
diff changeset
76 { CODEC_ID_MPEG4, MKTAG('E', 'P', 'H', 'V') }, /* Ephv MPEG-4 */
4275
83918d72fa7d add EM4A fourcc , works for:
compn
parents: 4263
diff changeset
77 { CODEC_ID_MPEG4, MKTAG('E', 'M', '4', 'A') },
4544
16856c4b7cff Add Divio MPEG-4 FOURCC (M4CC)
alexc
parents: 4359
diff changeset
78 { CODEC_ID_MPEG4, MKTAG('M', '4', 'C', 'C') }, /* Divio MPEG-4 */
4694
6b1e0c3211d6 sn40 avi fourcc decodes with ffodivx
compn
parents: 4550
diff changeset
79 { CODEC_ID_MPEG4, MKTAG('S', 'N', '4', '0') },
5557
d09ba3567fa0 add vspx fourcc to mpeg4 in riff.c
compn
parents: 5552
diff changeset
80 { CODEC_ID_MPEG4, MKTAG('V', 'S', 'P', 'X') },
5558
c47927327972 add uldx fourcc to mpeg4 in riff.c
compn
parents: 5557
diff changeset
81 { CODEC_ID_MPEG4, MKTAG('U', 'L', 'D', 'X') },
5651
399d973420de Add GEOV fourcc (issue971).
michael
parents: 5558
diff changeset
82 { CODEC_ID_MPEG4, MKTAG('G', 'E', 'O', 'V') },
6056
fa395d94bd4a Samsung uses SIPP as FourCC for MPEG-4 ASP.
cehoyos
parents: 6052
diff changeset
83 { CODEC_ID_MPEG4, MKTAG('S', 'I', 'P', 'P') }, /* Samsung SHR-6040 */
3131
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
84 { CODEC_ID_MSMPEG4V3, MKTAG('D', 'I', 'V', '3') }, /* default signature when using MSMPEG4 */
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
85 { CODEC_ID_MSMPEG4V3, MKTAG('M', 'P', '4', '3') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
86 { CODEC_ID_MSMPEG4V3, MKTAG('M', 'P', 'G', '3') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
87 { CODEC_ID_MSMPEG4V3, MKTAG('D', 'I', 'V', '5') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
88 { CODEC_ID_MSMPEG4V3, MKTAG('D', 'I', 'V', '6') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
89 { CODEC_ID_MSMPEG4V3, MKTAG('D', 'I', 'V', '4') },
4114
2eea8c397108 two more mpeg4 fourccs and one msmpeg4v3 from uncommon codec list
compn
parents: 4113
diff changeset
90 { CODEC_ID_MSMPEG4V3, MKTAG('D', 'V', 'X', '3') },
3131
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
91 { CODEC_ID_MSMPEG4V3, MKTAG('A', 'P', '4', '1') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
92 { CODEC_ID_MSMPEG4V3, MKTAG('C', 'O', 'L', '1') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
93 { CODEC_ID_MSMPEG4V3, MKTAG('C', 'O', 'L', '0') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
94 { CODEC_ID_MSMPEG4V2, MKTAG('M', 'P', '4', '2') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
95 { CODEC_ID_MSMPEG4V2, MKTAG('D', 'I', 'V', '2') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
96 { CODEC_ID_MSMPEG4V1, MKTAG('M', 'P', 'G', '4') },
4061
4911a195fd0e add fourccs from avi files
compn
parents: 4060
diff changeset
97 { CODEC_ID_MSMPEG4V1, MKTAG('M', 'P', '4', '1') },
3131
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
98 { CODEC_ID_WMV1, MKTAG('W', 'M', 'V', '1') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
99 { CODEC_ID_WMV2, MKTAG('W', 'M', 'V', '2') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
100 { CODEC_ID_DVVIDEO, MKTAG('d', 'v', 's', 'd') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
101 { CODEC_ID_DVVIDEO, MKTAG('d', 'v', 'h', 'd') },
4960
f8637caf2f37 map dvh1 fourcc to dv, fixes incoming/dvh1_sample
compn
parents: 4925
diff changeset
102 { CODEC_ID_DVVIDEO, MKTAG('d', 'v', 'h', '1') },
3131
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
103 { CODEC_ID_DVVIDEO, MKTAG('d', 'v', 's', 'l') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
104 { CODEC_ID_DVVIDEO, MKTAG('d', 'v', '2', '5') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
105 { CODEC_ID_DVVIDEO, MKTAG('d', 'v', '5', '0') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
106 { CODEC_ID_DVVIDEO, MKTAG('c', 'd', 'v', 'c') }, /* Canopus DV */
4802
f83f6caa42bc add another dv fourcc CDVH
compn
parents: 4784
diff changeset
107 { CODEC_ID_DVVIDEO, MKTAG('C', 'D', 'V', 'H') }, /* Canopus DV */
4061
4911a195fd0e add fourccs from avi files
compn
parents: 4060
diff changeset
108 { CODEC_ID_DVVIDEO, MKTAG('d', 'v', 'c', ' ') },
5427
d275ae9aa603 add dvcs to dvvideo, fixes issue 1604
compn
parents: 5426
diff changeset
109 { CODEC_ID_DVVIDEO, MKTAG('d', 'v', 'c', 's') },
4908
7c92386eb339 dvh1 avi fourcc, dvh1_sample_truncated.avi, issue #1034
bcoudurier
parents: 4897
diff changeset
110 { CODEC_ID_DVVIDEO, MKTAG('d', 'v', 'h', '1') },
3131
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
111 { CODEC_ID_MPEG1VIDEO, MKTAG('m', 'p', 'g', '1') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
112 { CODEC_ID_MPEG1VIDEO, MKTAG('m', 'p', 'g', '2') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
113 { CODEC_ID_MPEG2VIDEO, MKTAG('m', 'p', 'g', '2') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
114 { CODEC_ID_MPEG2VIDEO, MKTAG('M', 'P', 'E', 'G') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
115 { CODEC_ID_MPEG1VIDEO, MKTAG('P', 'I', 'M', '1') },
4061
4911a195fd0e add fourccs from avi files
compn
parents: 4060
diff changeset
116 { CODEC_ID_MPEG2VIDEO, MKTAG('P', 'I', 'M', '2') },
3131
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
117 { CODEC_ID_MPEG1VIDEO, MKTAG('V', 'C', 'R', '2') },
3132
2014993e4399 consistent use of MKTAG() in the codec_bmp_tags table
aurel
parents: 3131
diff changeset
118 { CODEC_ID_MPEG1VIDEO, MKTAG( 1 , 0 , 0 , 16) },
2014993e4399 consistent use of MKTAG() in the codec_bmp_tags table
aurel
parents: 3131
diff changeset
119 { CODEC_ID_MPEG2VIDEO, MKTAG( 2 , 0 , 0 , 16) },
5043
3e581a9edb36 Add fourcc 0x10000004, seems to actually be MPEG4. Fixes a problematic AVI file.
darkshikari
parents: 5024
diff changeset
120 { CODEC_ID_MPEG4, MKTAG( 4 , 0 , 0 , 16) },
3131
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
121 { CODEC_ID_MPEG2VIDEO, MKTAG('D', 'V', 'R', ' ') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
122 { CODEC_ID_MPEG2VIDEO, MKTAG('M', 'M', 'E', 'S') },
4071
a1f5c4042d4f add mpeg2 fourcc and aac format tag from asf
compn
parents: 4065
diff changeset
123 { CODEC_ID_MPEG2VIDEO, MKTAG('L', 'M', 'P', '2') }, /* Lead MPEG2 in avi */
5397
6016c9643d95 slif aka "SoftLab MPEG-2 I-frames Codec" support.
michael
parents: 5340
diff changeset
124 { CODEC_ID_MPEG2VIDEO, MKTAG('s', 'l', 'i', 'f') },
5428
6255bca6b7a6 Support Etymonix MPEG-2 video codec, fixes issue 1603.
cehoyos
parents: 5427
diff changeset
125 { CODEC_ID_MPEG2VIDEO, MKTAG('E', 'M', '2', 'V') },
6102
1803559b765d Added M701 codec_tag for mpeg2video
thardin
parents: 6056
diff changeset
126 { CODEC_ID_MPEG2VIDEO, MKTAG('M', '7', '0', '1') }, /* Matrox MPEG2 intra-only */
3131
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
127 { CODEC_ID_MJPEG, MKTAG('M', 'J', 'P', 'G') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
128 { CODEC_ID_MJPEG, MKTAG('L', 'J', 'P', 'G') },
4061
4911a195fd0e add fourccs from avi files
compn
parents: 4060
diff changeset
129 { CODEC_ID_MJPEG, MKTAG('d', 'm', 'b', '1') },
5307
99be640a6672 Support FourCC mjpa as MJPEG.
cehoyos
parents: 5290
diff changeset
130 { CODEC_ID_MJPEG, MKTAG('m', 'j', 'p', 'a') },
3131
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
131 { CODEC_ID_LJPEG, MKTAG('L', 'J', 'P', 'G') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
132 { CODEC_ID_MJPEG, MKTAG('J', 'P', 'G', 'L') }, /* Pegasus lossless JPEG */
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
133 { CODEC_ID_JPEGLS, MKTAG('M', 'J', 'L', 'S') }, /* JPEG-LS custom FOURCC for avi - encoder */
5999
4c9cebd37fde Add FourCC MJPG for CODEC_ID_JPEGLS.
cehoyos
parents: 5998
diff changeset
134 { CODEC_ID_JPEGLS, MKTAG('M', 'J', 'P', 'G') },
3131
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
135 { CODEC_ID_MJPEG, MKTAG('M', 'J', 'L', 'S') }, /* JPEG-LS custom FOURCC for avi - decoder */
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
136 { CODEC_ID_MJPEG, MKTAG('j', 'p', 'e', 'g') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
137 { CODEC_ID_MJPEG, MKTAG('I', 'J', 'P', 'G') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
138 { CODEC_ID_MJPEG, MKTAG('A', 'V', 'R', 'n') },
4072
b9bb53432c60 add 'ACDV' FourCC (which is just complete JPEG files in individual AVI
melanson
parents: 4071
diff changeset
139 { CODEC_ID_MJPEG, MKTAG('A', 'C', 'D', 'V') },
4113
795f2de1a94b QIVG fourcc, fixes http://rodweb.dip.jp/partner/check.avi
compn
parents: 4112
diff changeset
140 { CODEC_ID_MJPEG, MKTAG('Q', 'I', 'V', 'G') },
4205
41878938d030 add SLMJ fourcc to mjpeg
compn
parents: 4178
diff changeset
141 { CODEC_ID_MJPEG, MKTAG('S', 'L', 'M', 'J') }, /* SL M-JPEG */
4178
84da7f1e6901 cosmetics: CJPG is from Creative Webcam
compn
parents: 4177
diff changeset
142 { CODEC_ID_MJPEG, MKTAG('C', 'J', 'P', 'G') }, /* Creative Webcam JPEG */
5277
9c52d406546b Support Intel JPEG Library Video Codec (still flipped).
cehoyos
parents: 5125
diff changeset
143 { CODEC_ID_MJPEG, MKTAG('I', 'J', 'L', 'V') }, /* Intel JPEG Library Video Codec */
5278
5a730ddcd8fa Support Midvid JPEG Video Codec (still flipped).
cehoyos
parents: 5277
diff changeset
144 { CODEC_ID_MJPEG, MKTAG('M', 'V', 'J', 'P') }, /* Midvid JPEG Video Codec */
5426
ccc14dcb3460 Support AVI1 and AVI2 in avi as MJPEG.
cehoyos
parents: 5397
diff changeset
145 { CODEC_ID_MJPEG, MKTAG('A', 'V', 'I', '1') },
ccc14dcb3460 Support AVI1 and AVI2 in avi as MJPEG.
cehoyos
parents: 5397
diff changeset
146 { CODEC_ID_MJPEG, MKTAG('A', 'V', 'I', '2') },
5429
2abcf559f2c2 (Partly) support Metasoft MJPEG Codec, fixes half of issue 1611.
cehoyos
parents: 5428
diff changeset
147 { CODEC_ID_MJPEG, MKTAG('M', 'T', 'S', 'J') },
5498
e81fb2bec962 add another mjpeg fourcc to riff.c list
compn
parents: 5471
diff changeset
148 { CODEC_ID_MJPEG, MKTAG('Z', 'J', 'P', 'G') }, /* Paradigm Matrix M-JPEG Codec */
3131
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
149 { CODEC_ID_HUFFYUV, MKTAG('H', 'F', 'Y', 'U') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
150 { CODEC_ID_FFVHUFF, MKTAG('F', 'F', 'V', 'H') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
151 { CODEC_ID_CYUV, MKTAG('C', 'Y', 'U', 'V') },
3132
2014993e4399 consistent use of MKTAG() in the codec_bmp_tags table
aurel
parents: 3131
diff changeset
152 { CODEC_ID_RAWVIDEO, MKTAG( 0 , 0 , 0 , 0 ) },
5024
0d2573b3397b Add new FOURCC (0x0003) for raw DIB video, set flip flag accordingly.
darkshikari
parents: 5023
diff changeset
153 { CODEC_ID_RAWVIDEO, MKTAG( 3 , 0 , 0 , 0 ) },
3131
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
154 { CODEC_ID_RAWVIDEO, MKTAG('I', '4', '2', '0') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
155 { CODEC_ID_RAWVIDEO, MKTAG('Y', 'U', 'Y', '2') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
156 { CODEC_ID_RAWVIDEO, MKTAG('Y', '4', '2', '2') },
5335
653730591c20 add some raw codec fourccs, fixes:
compn
parents: 5307
diff changeset
157 { CODEC_ID_RAWVIDEO, MKTAG('V', '4', '2', '2') },
653730591c20 add some raw codec fourccs, fixes:
compn
parents: 5307
diff changeset
158 { CODEC_ID_RAWVIDEO, MKTAG('Y', 'U', 'N', 'V') },
653730591c20 add some raw codec fourccs, fixes:
compn
parents: 5307
diff changeset
159 { CODEC_ID_RAWVIDEO, MKTAG('U', 'Y', 'N', 'V') },
653730591c20 add some raw codec fourccs, fixes:
compn
parents: 5307
diff changeset
160 { CODEC_ID_RAWVIDEO, MKTAG('U', 'Y', 'N', 'Y') },
653730591c20 add some raw codec fourccs, fixes:
compn
parents: 5307
diff changeset
161 { CODEC_ID_RAWVIDEO, MKTAG('u', 'y', 'v', '1') },
653730591c20 add some raw codec fourccs, fixes:
compn
parents: 5307
diff changeset
162 { CODEC_ID_RAWVIDEO, MKTAG('2', 'V', 'u', '1') },
5336
a0cee80f5597 add 2vuy fourcc to riff.c , fixes samples/V-codecs/2vuy.avi
compn
parents: 5335
diff changeset
163 { CODEC_ID_RAWVIDEO, MKTAG('2', 'v', 'u', 'y') },
5335
653730591c20 add some raw codec fourccs, fixes:
compn
parents: 5307
diff changeset
164 { CODEC_ID_RAWVIDEO, MKTAG('P', '4', '2', '2') },
3131
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
165 { CODEC_ID_RAWVIDEO, MKTAG('Y', 'V', '1', '2') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
166 { CODEC_ID_RAWVIDEO, MKTAG('U', 'Y', 'V', 'Y') },
5340
d720f2e99f86 map VYUY fourcc to rawcodec
compn
parents: 5336
diff changeset
167 { CODEC_ID_RAWVIDEO, MKTAG('V', 'Y', 'U', 'Y') },
3131
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
168 { CODEC_ID_RAWVIDEO, MKTAG('I', 'Y', 'U', 'V') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
169 { CODEC_ID_RAWVIDEO, MKTAG('Y', '8', '0', '0') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
170 { CODEC_ID_RAWVIDEO, MKTAG('H', 'D', 'Y', 'C') },
4961
0608a5e415e9 Support YVU9 AVI 4cc.
michael
parents: 4960
diff changeset
171 { CODEC_ID_RAWVIDEO, MKTAG('Y', 'V', 'U', '9') },
5552
f05f12818849 Support decoding of SoftLab-NSK VideoTizer.
cehoyos
parents: 5499
diff changeset
172 { CODEC_ID_RAWVIDEO, MKTAG('V', 'D', 'T', 'Z') }, /* SoftLab-NSK VideoTizer */
5998
ec720621cd71 Add support to the Y411 codec tag, corresponding to the rawvideo pixel
stefano
parents: 5986
diff changeset
173 { CODEC_ID_RAWVIDEO, MKTAG('Y', '4', '1', '1') },
6004
982c13b665cf Add NV12 and NV21 AVI tags.
stefano
parents: 5999
diff changeset
174 { CODEC_ID_RAWVIDEO, MKTAG('N', 'V', '1', '2') },
982c13b665cf Add NV12 and NV21 AVI tags.
stefano
parents: 5999
diff changeset
175 { CODEC_ID_RAWVIDEO, MKTAG('N', 'V', '2', '1') },
6052
d742150345d6 Add missing codec id <-> codec tag entries:
stefano
parents: 6022
diff changeset
176 { CODEC_ID_RAWVIDEO, MKTAG('Y', '4', '1', 'B') },
d742150345d6 Add missing codec id <-> codec tag entries:
stefano
parents: 6022
diff changeset
177 { CODEC_ID_RAWVIDEO, MKTAG('Y', '4', '2', 'B') },
d742150345d6 Add missing codec id <-> codec tag entries:
stefano
parents: 6022
diff changeset
178 { CODEC_ID_RAWVIDEO, MKTAG('Y', 'U', 'V', '9') },
d742150345d6 Add missing codec id <-> codec tag entries:
stefano
parents: 6022
diff changeset
179 { CODEC_ID_RAWVIDEO, MKTAG('Y', 'V', 'U', '9') },
5282
03907bb786c0 Add decoder for "forward uncompressed".
reimar
parents: 5278
diff changeset
180 { CODEC_ID_FRWU, MKTAG('F', 'R', 'W', 'U') },
5470
3f4dbd1e6548 Add decoder for R210 (uncompressed 10-bit RGB) codec.
reimar
parents: 5429
diff changeset
181 { CODEC_ID_R210, MKTAG('r', '2', '1', '0') },
4925
9edddbf8cc9b v210 avi fourcc, v210_720p.avi
bcoudurier
parents: 4908
diff changeset
182 { CODEC_ID_V210, MKTAG('v', '2', '1', '0') },
3131
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
183 { CODEC_ID_INDEO3, MKTAG('I', 'V', '3', '1') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
184 { CODEC_ID_INDEO3, MKTAG('I', 'V', '3', '2') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
185 { CODEC_ID_INDEO4, MKTAG('I', 'V', '4', '1') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
186 { CODEC_ID_INDEO5, MKTAG('I', 'V', '5', '0') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
187 { CODEC_ID_VP3, MKTAG('V', 'P', '3', '1') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
188 { CODEC_ID_VP3, MKTAG('V', 'P', '3', '0') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
189 { CODEC_ID_VP5, MKTAG('V', 'P', '5', '0') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
190 { CODEC_ID_VP6, MKTAG('V', 'P', '6', '0') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
191 { CODEC_ID_VP6, MKTAG('V', 'P', '6', '1') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
192 { CODEC_ID_VP6, MKTAG('V', 'P', '6', '2') },
5986
bbac6af4238c Fix FourCC when remuxing VP6F, regression introduced in r22941.
cehoyos
parents: 5978
diff changeset
193 { CODEC_ID_VP6F, MKTAG('V', 'P', '6', 'F') },
5978
b8882d9bad80 Support VP6F in Matroska.
cehoyos
parents: 5910
diff changeset
194 { CODEC_ID_VP6F, MKTAG('F', 'L', 'V', '4') },
6022
56e0040a97e6 Add VP80 fourcc
conrad
parents: 6004
diff changeset
195 { CODEC_ID_VP8, MKTAG('V', 'P', '8', '0') },
3131
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
196 { CODEC_ID_ASV1, MKTAG('A', 'S', 'V', '1') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
197 { CODEC_ID_ASV2, MKTAG('A', 'S', 'V', '2') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
198 { CODEC_ID_VCR1, MKTAG('V', 'C', 'R', '1') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
199 { CODEC_ID_FFV1, MKTAG('F', 'F', 'V', '1') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
200 { CODEC_ID_XAN_WC4, MKTAG('X', 'x', 'a', 'n') },
4238
9efd09781ed3 add LM20 mimic in avi fourcc
compn
parents: 4206
diff changeset
201 { CODEC_ID_MIMIC, MKTAG('L', 'M', '2', '0') },
3131
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
202 { CODEC_ID_MSRLE, MKTAG('m', 'r', 'l', 'e') },
3132
2014993e4399 consistent use of MKTAG() in the codec_bmp_tags table
aurel
parents: 3131
diff changeset
203 { CODEC_ID_MSRLE, MKTAG( 1 , 0 , 0 , 0 ) },
3928
2768ffe4332b Add fourcc for MS RLE4
kostya
parents: 3908
diff changeset
204 { CODEC_ID_MSRLE, MKTAG( 2 , 0 , 0 , 0 ) },
3131
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
205 { CODEC_ID_MSVIDEO1, MKTAG('M', 'S', 'V', 'C') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
206 { CODEC_ID_MSVIDEO1, MKTAG('m', 's', 'v', 'c') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
207 { CODEC_ID_MSVIDEO1, MKTAG('C', 'R', 'A', 'M') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
208 { CODEC_ID_MSVIDEO1, MKTAG('c', 'r', 'a', 'm') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
209 { CODEC_ID_MSVIDEO1, MKTAG('W', 'H', 'A', 'M') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
210 { CODEC_ID_MSVIDEO1, MKTAG('w', 'h', 'a', 'm') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
211 { CODEC_ID_CINEPAK, MKTAG('c', 'v', 'i', 'd') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
212 { CODEC_ID_TRUEMOTION1, MKTAG('D', 'U', 'C', 'K') },
4306
346301dcdd18 pvez avi fourcc is truemotion1
compn
parents: 4275
diff changeset
213 { CODEC_ID_TRUEMOTION1, MKTAG('P', 'V', 'E', 'Z') },
3131
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
214 { CODEC_ID_MSZH, MKTAG('M', 'S', 'Z', 'H') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
215 { CODEC_ID_ZLIB, MKTAG('Z', 'L', 'I', 'B') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
216 { CODEC_ID_SNOW, MKTAG('S', 'N', 'O', 'W') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
217 { CODEC_ID_4XM, MKTAG('4', 'X', 'M', 'V') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
218 { CODEC_ID_FLV1, MKTAG('F', 'L', 'V', '1') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
219 { CODEC_ID_FLASHSV, MKTAG('F', 'S', 'V', '1') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
220 { CODEC_ID_SVQ1, MKTAG('s', 'v', 'q', '1') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
221 { CODEC_ID_TSCC, MKTAG('t', 's', 'c', 'c') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
222 { CODEC_ID_ULTI, MKTAG('U', 'L', 'T', 'I') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
223 { CODEC_ID_VIXL, MKTAG('V', 'I', 'X', 'L') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
224 { CODEC_ID_QPEG, MKTAG('Q', 'P', 'E', 'G') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
225 { CODEC_ID_QPEG, MKTAG('Q', '1', '.', '0') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
226 { CODEC_ID_QPEG, MKTAG('Q', '1', '.', '1') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
227 { CODEC_ID_WMV3, MKTAG('W', 'M', 'V', '3') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
228 { CODEC_ID_VC1, MKTAG('W', 'V', 'C', '1') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
229 { CODEC_ID_VC1, MKTAG('W', 'M', 'V', 'A') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
230 { CODEC_ID_LOCO, MKTAG('L', 'O', 'C', 'O') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
231 { CODEC_ID_WNV1, MKTAG('W', 'N', 'V', '1') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
232 { CODEC_ID_AASC, MKTAG('A', 'A', 'S', 'C') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
233 { CODEC_ID_INDEO2, MKTAG('R', 'T', '2', '1') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
234 { CODEC_ID_FRAPS, MKTAG('F', 'P', 'S', '1') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
235 { CODEC_ID_THEORA, MKTAG('t', 'h', 'e', 'o') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
236 { CODEC_ID_TRUEMOTION2, MKTAG('T', 'M', '2', '0') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
237 { CODEC_ID_CSCD, MKTAG('C', 'S', 'C', 'D') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
238 { CODEC_ID_ZMBV, MKTAG('Z', 'M', 'B', 'V') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
239 { CODEC_ID_KMVC, MKTAG('K', 'M', 'V', 'C') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
240 { CODEC_ID_CAVS, MKTAG('C', 'A', 'V', 'S') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
241 { CODEC_ID_JPEG2000, MKTAG('M', 'J', '2', 'C') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
242 { CODEC_ID_VMNC, MKTAG('V', 'M', 'n', 'c') },
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
243 { CODEC_ID_TARGA, MKTAG('t', 'g', 'a', ' ') },
4115
05d41346b964 add MPNG fourcc
compn
parents: 4114
diff changeset
244 { CODEC_ID_PNG, MKTAG('M', 'P', 'N', 'G') },
4845
1f3ed3c89790 Add 'PNG1' to PNG fourcc codes.
stefano
parents: 4837
diff changeset
245 { CODEC_ID_PNG, MKTAG('P', 'N', 'G', '1') },
3131
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
246 { CODEC_ID_CLJR, MKTAG('c', 'l', 'j', 'r') },
3558
f615c35681cf Add entry for Dirac codec.
benoit
parents: 3345
diff changeset
247 { CODEC_ID_DIRAC, MKTAG('d', 'r', 'a', 'c') },
4072
b9bb53432c60 add 'ACDV' FourCC (which is just complete JPEG files in individual AVI
melanson
parents: 4071
diff changeset
248 { CODEC_ID_RPZA, MKTAG('a', 'z', 'p', 'r') },
4112
4053a13bfcc7 add rpza avi fourcc
compn
parents: 4084
diff changeset
249 { CODEC_ID_RPZA, MKTAG('R', 'P', 'Z', 'A') },
4053a13bfcc7 add rpza avi fourcc
compn
parents: 4084
diff changeset
250 { CODEC_ID_RPZA, MKTAG('r', 'p', 'z', 'a') },
4359
1e6e303b61fc Add support for fourcc "SP54".
cehoyos
parents: 4308
diff changeset
251 { CODEC_ID_SP5X, MKTAG('S', 'P', '5', '4') },
4784
992db955236a Add AURA 1 and 2 codec IDs and register their FOURCCs
kostya
parents: 4694
diff changeset
252 { CODEC_ID_AURA, MKTAG('A', 'U', 'R', 'A') },
992db955236a Add AURA 1 and 2 codec IDs and register their FOURCCs
kostya
parents: 4694
diff changeset
253 { CODEC_ID_AURA2, MKTAG('A', 'U', 'R', '2') },
5022
003850af7649 DPX (Digital Picture Exchange) image decoder
diego
parents: 4961
diff changeset
254 { CODEC_ID_DPX, MKTAG('d', 'p', 'x', ' ') },
5789
2c96c4c8b6e9 Kega Game Video (KGV1) decoder
daniel
parents: 5655
diff changeset
255 { CODEC_ID_KGV1, MKTAG('K', 'G', 'V', '1') },
3131
a5238e8e81c3 cosmetics: alignment of the codec_bmp_tags table
aurel
parents: 3130
diff changeset
256 { CODEC_ID_NONE, 0 }
1172
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
257 };
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
258
5058
33a244b7ca65 Add ff_ prefixes to exported symbols in libavformat/riff.h.
diego
parents: 5043
diff changeset
259 const AVCodecTag ff_codec_wav_tags[] = {
3064
4b215e8cc932 cosmetics: Sort and prettyprint codec_wav_tags[].
diego
parents: 3060
diff changeset
260 { CODEC_ID_PCM_S16LE, 0x0001 },
4b215e8cc932 cosmetics: Sort and prettyprint codec_wav_tags[].
diego
parents: 3060
diff changeset
261 { CODEC_ID_PCM_U8, 0x0001 }, /* must come after s16le in this list */
4b215e8cc932 cosmetics: Sort and prettyprint codec_wav_tags[].
diego
parents: 3060
diff changeset
262 { CODEC_ID_PCM_S24LE, 0x0001 },
4b215e8cc932 cosmetics: Sort and prettyprint codec_wav_tags[].
diego
parents: 3060
diff changeset
263 { CODEC_ID_PCM_S32LE, 0x0001 },
4b215e8cc932 cosmetics: Sort and prettyprint codec_wav_tags[].
diego
parents: 3060
diff changeset
264 { CODEC_ID_ADPCM_MS, 0x0002 },
3737
704c20dd52a4 Make RIFF-based demuxers handle F32LE and F64LE PCM audio.
pross
parents: 3705
diff changeset
265 { CODEC_ID_PCM_F32LE, 0x0003 },
704c20dd52a4 Make RIFF-based demuxers handle F32LE and F64LE PCM audio.
pross
parents: 3705
diff changeset
266 { CODEC_ID_PCM_F64LE, 0x0003 }, /* must come after f32le in this list */
3064
4b215e8cc932 cosmetics: Sort and prettyprint codec_wav_tags[].
diego
parents: 3060
diff changeset
267 { CODEC_ID_PCM_ALAW, 0x0006 },
4b215e8cc932 cosmetics: Sort and prettyprint codec_wav_tags[].
diego
parents: 3060
diff changeset
268 { CODEC_ID_PCM_MULAW, 0x0007 },
4b215e8cc932 cosmetics: Sort and prettyprint codec_wav_tags[].
diego
parents: 3060
diff changeset
269 { CODEC_ID_WMAVOICE, 0x000A },
4b215e8cc932 cosmetics: Sort and prettyprint codec_wav_tags[].
diego
parents: 3060
diff changeset
270 { CODEC_ID_ADPCM_IMA_WAV, 0x0011 },
3693
2f769a4057e7 Support muxing of Zork PCM audio into RIFF formats.
pross
parents: 3558
diff changeset
271 { CODEC_ID_PCM_ZORK, 0x0011 }, /* must come after adpcm_ima_wav in this list */
3064
4b215e8cc932 cosmetics: Sort and prettyprint codec_wav_tags[].
diego
parents: 3060
diff changeset
272 { CODEC_ID_ADPCM_YAMAHA, 0x0020 },
4b215e8cc932 cosmetics: Sort and prettyprint codec_wav_tags[].
diego
parents: 3060
diff changeset
273 { CODEC_ID_TRUESPEECH, 0x0022 },
4b215e8cc932 cosmetics: Sort and prettyprint codec_wav_tags[].
diego
parents: 3060
diff changeset
274 { CODEC_ID_GSM_MS, 0x0031 },
4b215e8cc932 cosmetics: Sort and prettyprint codec_wav_tags[].
diego
parents: 3060
diff changeset
275 { CODEC_ID_ADPCM_G726, 0x0045 },
4b215e8cc932 cosmetics: Sort and prettyprint codec_wav_tags[].
diego
parents: 3060
diff changeset
276 { CODEC_ID_MP2, 0x0050 },
4b215e8cc932 cosmetics: Sort and prettyprint codec_wav_tags[].
diego
parents: 3060
diff changeset
277 { CODEC_ID_MP3, 0x0055 },
4130
22a0dae5e6ae add amr in avi riff tags
compn
parents: 4129
diff changeset
278 { CODEC_ID_AMR_NB, 0x0057 },
22a0dae5e6ae add amr in avi riff tags
compn
parents: 4129
diff changeset
279 { CODEC_ID_AMR_WB, 0x0058 },
3064
4b215e8cc932 cosmetics: Sort and prettyprint codec_wav_tags[].
diego
parents: 3060
diff changeset
280 { CODEC_ID_ADPCM_IMA_DK4, 0x0061 }, /* rogue format number */
4b215e8cc932 cosmetics: Sort and prettyprint codec_wav_tags[].
diego
parents: 3060
diff changeset
281 { CODEC_ID_ADPCM_IMA_DK3, 0x0062 }, /* rogue format number */
4308
dda76da5252d ADPCM found in Xbox wav files can be decoded with
stefang
parents: 4306
diff changeset
282 { CODEC_ID_ADPCM_IMA_WAV, 0x0069 },
3064
4b215e8cc932 cosmetics: Sort and prettyprint codec_wav_tags[].
diego
parents: 3060
diff changeset
283 { CODEC_ID_VOXWARE, 0x0075 },
4b215e8cc932 cosmetics: Sort and prettyprint codec_wav_tags[].
diego
parents: 3060
diff changeset
284 { CODEC_ID_AAC, 0x00ff },
3944
7141e56c9f69 Add support for Acelp.net fourcc and codecid, remuxing wav to avi should work
banan
parents: 3928
diff changeset
285 { CODEC_ID_SIPR, 0x0130 },
3064
4b215e8cc932 cosmetics: Sort and prettyprint codec_wav_tags[].
diego
parents: 3060
diff changeset
286 { CODEC_ID_WMAV1, 0x0160 },
4b215e8cc932 cosmetics: Sort and prettyprint codec_wav_tags[].
diego
parents: 3060
diff changeset
287 { CODEC_ID_WMAV2, 0x0161 },
4b215e8cc932 cosmetics: Sort and prettyprint codec_wav_tags[].
diego
parents: 3060
diff changeset
288 { CODEC_ID_WMAPRO, 0x0162 },
3094
18517a0b71f3 Add more riff IDs to support remuxing.
banan
parents: 3064
diff changeset
289 { CODEC_ID_WMALOSSLESS, 0x0163 },
3064
4b215e8cc932 cosmetics: Sort and prettyprint codec_wav_tags[].
diego
parents: 3060
diff changeset
290 { CODEC_ID_ADPCM_CT, 0x0200 },
4b215e8cc932 cosmetics: Sort and prettyprint codec_wav_tags[].
diego
parents: 3060
diff changeset
291 { CODEC_ID_ATRAC3, 0x0270 },
4b215e8cc932 cosmetics: Sort and prettyprint codec_wav_tags[].
diego
parents: 3060
diff changeset
292 { CODEC_ID_IMC, 0x0401 },
5655
aa15ce84d338 add netspeak gsm and truespeech wav format tags to riff.c
compn
parents: 5651
diff changeset
293 { CODEC_ID_GSM_MS, 0x1500 },
aa15ce84d338 add netspeak gsm and truespeech wav format tags to riff.c
compn
parents: 5651
diff changeset
294 { CODEC_ID_TRUESPEECH, 0x1501 },
3064
4b215e8cc932 cosmetics: Sort and prettyprint codec_wav_tags[].
diego
parents: 3060
diff changeset
295 { CODEC_ID_AC3, 0x2000 },
4b215e8cc932 cosmetics: Sort and prettyprint codec_wav_tags[].
diego
parents: 3060
diff changeset
296 { CODEC_ID_DTS, 0x2001 },
4b215e8cc932 cosmetics: Sort and prettyprint codec_wav_tags[].
diego
parents: 3060
diff changeset
297 { CODEC_ID_SONIC, 0x2048 },
4b215e8cc932 cosmetics: Sort and prettyprint codec_wav_tags[].
diego
parents: 3060
diff changeset
298 { CODEC_ID_SONIC_LS, 0x2048 },
5023
602c5cd5a1a3 Associate the 0x6c75 TwoCC used in certain Kodak cameras
jai_menon
parents: 5022
diff changeset
299 { CODEC_ID_PCM_MULAW, 0x6c75 },
3064
4b215e8cc932 cosmetics: Sort and prettyprint codec_wav_tags[].
diego
parents: 3060
diff changeset
300 { CODEC_ID_AAC, 0x706d },
4071
a1f5c4042d4f add mpeg2 fourcc and aac format tag from asf
compn
parents: 4065
diff changeset
301 { CODEC_ID_AAC, 0x4143 },
3064
4b215e8cc932 cosmetics: Sort and prettyprint codec_wav_tags[].
diego
parents: 3060
diff changeset
302 { CODEC_ID_FLAC, 0xF1AC },
4b215e8cc932 cosmetics: Sort and prettyprint codec_wav_tags[].
diego
parents: 3060
diff changeset
303 { CODEC_ID_ADPCM_SWF, ('S'<<8)+'F' },
4b215e8cc932 cosmetics: Sort and prettyprint codec_wav_tags[].
diego
parents: 3060
diff changeset
304 { CODEC_ID_VORBIS, ('V'<<8)+'o' }, //HACK/FIXME, does vorbis in WAV/AVI have an (in)official id?
1383
97bd1648eb9a Add a note about illegal codec IDs.
diego
parents: 1382
diff changeset
305
97bd1648eb9a Add a note about illegal codec IDs.
diego
parents: 1382
diff changeset
306 /* FIXME: All of the IDs below are not 16 bit and thus illegal. */
1172
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
307 // for NuppelVideo (nuv.c)
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
308 { CODEC_ID_PCM_S16LE, MKTAG('R', 'A', 'W', 'A') },
3064
4b215e8cc932 cosmetics: Sort and prettyprint codec_wav_tags[].
diego
parents: 3060
diff changeset
309 { CODEC_ID_MP3, MKTAG('L', 'A', 'M', 'E') },
4b215e8cc932 cosmetics: Sort and prettyprint codec_wav_tags[].
diego
parents: 3060
diff changeset
310 { CODEC_ID_MP3, MKTAG('M', 'P', '3', ' ') },
5290
0d5653941bf9 Make AVCodecTag.id enum CodecID and use CODEC_ID_NONE instead of 0.
cehoyos
parents: 5282
diff changeset
311 { CODEC_ID_NONE, 0 },
1172
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
312 };
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
313
4206
c3102b189cb6 Change semantic of CONFIG_*, HAVE_* and ARCH_*.
aurel
parents: 4205
diff changeset
314 #if CONFIG_MUXERS
5058
33a244b7ca65 Add ff_ prefixes to exported symbols in libavformat/riff.h.
diego
parents: 5043
diff changeset
315 int64_t ff_start_tag(ByteIOContext *pb, const char *tag)
1172
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
316 {
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
317 put_tag(pb, tag);
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
318 put_le32(pb, 0);
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
319 return url_ftell(pb);
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
320 }
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
321
5058
33a244b7ca65 Add ff_ prefixes to exported symbols in libavformat/riff.h.
diego
parents: 5043
diff changeset
322 void ff_end_tag(ByteIOContext *pb, int64_t start)
1172
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
323 {
3973
549a09cf23fe Remove offset_t typedef and use int64_t directly instead.
diego
parents: 3944
diff changeset
324 int64_t pos;
1172
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
325
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
326 pos = url_ftell(pb);
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
327 url_fseek(pb, start - 4, SEEK_SET);
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
328 put_le32(pb, (uint32_t)(pos - start));
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
329 url_fseek(pb, pos, SEEK_SET);
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
330 }
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
331
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
332 /* WAVEFORMATEX header */
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
333 /* returns the size or -1 on error */
5058
33a244b7ca65 Add ff_ prefixes to exported symbols in libavformat/riff.h.
diego
parents: 5043
diff changeset
334 int ff_put_wav_header(ByteIOContext *pb, AVCodecContext *enc)
1172
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
335 {
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
336 int bps, blkalign, bytespersec;
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
337 int hdrsize = 18;
4833
d607731c2cf8 Add waveformat-extensible support in the wav muxer.
rbultje
parents: 4802
diff changeset
338 int waveformatextensible;
d607731c2cf8 Add waveformat-extensible support in the wav muxer.
rbultje
parents: 4802
diff changeset
339 uint8_t temp[256];
d607731c2cf8 Add waveformat-extensible support in the wav muxer.
rbultje
parents: 4802
diff changeset
340 uint8_t *riff_extradata= temp;
d607731c2cf8 Add waveformat-extensible support in the wav muxer.
rbultje
parents: 4802
diff changeset
341 uint8_t *riff_extradata_start= temp;
1172
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
342
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
343 if(!enc->codec_tag || enc->codec_tag > 0xffff)
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
344 return -1;
5471
b5af21b34101 It appears that waveformatextensible is mandatory for more cases than
michael
parents: 5470
diff changeset
345 waveformatextensible = (enc->channels > 2 && enc->channel_layout)
b5af21b34101 It appears that waveformatextensible is mandatory for more cases than
michael
parents: 5470
diff changeset
346 || enc->sample_rate > 48000
b5af21b34101 It appears that waveformatextensible is mandatory for more cases than
michael
parents: 5470
diff changeset
347 || av_get_bits_per_sample(enc->codec_id) > 16;
1172
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
348
4833
d607731c2cf8 Add waveformat-extensible support in the wav muxer.
rbultje
parents: 4802
diff changeset
349 if (waveformatextensible) {
d607731c2cf8 Add waveformat-extensible support in the wav muxer.
rbultje
parents: 4802
diff changeset
350 put_le16(pb, 0xfffe);
d607731c2cf8 Add waveformat-extensible support in the wav muxer.
rbultje
parents: 4802
diff changeset
351 } else {
4834
231479c86582 Reindent after r18372.
rbultje
parents: 4833
diff changeset
352 put_le16(pb, enc->codec_tag);
4833
d607731c2cf8 Add waveformat-extensible support in the wav muxer.
rbultje
parents: 4802
diff changeset
353 }
1172
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
354 put_le16(pb, enc->channels);
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
355 put_le32(pb, enc->sample_rate);
3895
5554c668388b simplify bps code by using av_get_bits_per_sample
bcoudurier
parents: 3893
diff changeset
356 if (enc->codec_id == CODEC_ID_MP2 || enc->codec_id == CODEC_ID_MP3 || enc->codec_id == CODEC_ID_GSM_MS) {
1172
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
357 bps = 0;
5499
b63f760bb483 Handle more ADPCM codecs in av_get_bits_per_sample().
daniel
parents: 5498
diff changeset
358 } else if (enc->codec_id == CODEC_ID_ADPCM_G726) {
1172
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
359 bps = 4;
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
360 } else {
3906
b3a0c732d0d7 set default bps to 16 in wav header
bcoudurier
parents: 3895
diff changeset
361 if (!(bps = av_get_bits_per_sample(enc->codec_id)))
b3a0c732d0d7 set default bps to 16 in wav header
bcoudurier
parents: 3895
diff changeset
362 bps = 16; // default to 16
1172
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
363 }
3908
1d3d17de20ba Bump Major version, this commit is almost just renaming bits_per_sample to
michael
parents: 3906
diff changeset
364 if(bps != enc->bits_per_coded_sample && enc->bits_per_coded_sample){
1d3d17de20ba Bump Major version, this commit is almost just renaming bits_per_sample to
michael
parents: 3906
diff changeset
365 av_log(enc, AV_LOG_WARNING, "requested bits_per_coded_sample (%d) and actually stored (%d) differ\n", enc->bits_per_coded_sample, bps);
1805
2c2e787782bb warn if bps from user and what will be stored missmatches
michael
parents: 1803
diff changeset
366 }
1172
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
367
3893
8e7b2616e1ad Fix msgsm in wav, do not set blkalign to frame size, this is wrong,
bcoudurier
parents: 3737
diff changeset
368 if (enc->codec_id == CODEC_ID_MP2 || enc->codec_id == CODEC_ID_MP3 || enc->codec_id == CODEC_ID_AC3) {
2164
3804e39efbfd misc spelling fixes
diego
parents: 2151
diff changeset
369 blkalign = enc->frame_size; //this is wrong, but it seems many demuxers do not work if this is set correctly
1172
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
370 //blkalign = 144 * enc->bit_rate/enc->sample_rate;
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
371 } else if (enc->codec_id == CODEC_ID_ADPCM_G726) { //
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
372 blkalign = 1;
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
373 } else if (enc->block_align != 0) { /* specified by the codec */
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
374 blkalign = enc->block_align;
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
375 } else
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
376 blkalign = enc->channels*bps >> 3;
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
377 if (enc->codec_id == CODEC_ID_PCM_U8 ||
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
378 enc->codec_id == CODEC_ID_PCM_S24LE ||
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
379 enc->codec_id == CODEC_ID_PCM_S32LE ||
3737
704c20dd52a4 Make RIFF-based demuxers handle F32LE and F64LE PCM audio.
pross
parents: 3705
diff changeset
380 enc->codec_id == CODEC_ID_PCM_F32LE ||
704c20dd52a4 Make RIFF-based demuxers handle F32LE and F64LE PCM audio.
pross
parents: 3705
diff changeset
381 enc->codec_id == CODEC_ID_PCM_F64LE ||
1172
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
382 enc->codec_id == CODEC_ID_PCM_S16LE) {
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
383 bytespersec = enc->sample_rate * blkalign;
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
384 } else {
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
385 bytespersec = enc->bit_rate / 8;
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
386 }
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
387 put_le32(pb, bytespersec); /* bytes per second */
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
388 put_le16(pb, blkalign); /* block align */
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
389 put_le16(pb, bps); /* bits per sample */
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
390 if (enc->codec_id == CODEC_ID_MP3) {
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
391 hdrsize += 12;
4833
d607731c2cf8 Add waveformat-extensible support in the wav muxer.
rbultje
parents: 4802
diff changeset
392 bytestream_put_le16(&riff_extradata, 1); /* wID */
d607731c2cf8 Add waveformat-extensible support in the wav muxer.
rbultje
parents: 4802
diff changeset
393 bytestream_put_le32(&riff_extradata, 2); /* fdwFlags */
d607731c2cf8 Add waveformat-extensible support in the wav muxer.
rbultje
parents: 4802
diff changeset
394 bytestream_put_le16(&riff_extradata, 1152); /* nBlockSize */
d607731c2cf8 Add waveformat-extensible support in the wav muxer.
rbultje
parents: 4802
diff changeset
395 bytestream_put_le16(&riff_extradata, 1); /* nFramesPerBlock */
d607731c2cf8 Add waveformat-extensible support in the wav muxer.
rbultje
parents: 4802
diff changeset
396 bytestream_put_le16(&riff_extradata, 1393); /* nCodecDelay */
1172
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
397 } else if (enc->codec_id == CODEC_ID_MP2) {
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
398 hdrsize += 22;
4833
d607731c2cf8 Add waveformat-extensible support in the wav muxer.
rbultje
parents: 4802
diff changeset
399 bytestream_put_le16(&riff_extradata, 2); /* fwHeadLayer */
d607731c2cf8 Add waveformat-extensible support in the wav muxer.
rbultje
parents: 4802
diff changeset
400 bytestream_put_le32(&riff_extradata, enc->bit_rate); /* dwHeadBitrate */
d607731c2cf8 Add waveformat-extensible support in the wav muxer.
rbultje
parents: 4802
diff changeset
401 bytestream_put_le16(&riff_extradata, enc->channels == 2 ? 1 : 8); /* fwHeadMode */
d607731c2cf8 Add waveformat-extensible support in the wav muxer.
rbultje
parents: 4802
diff changeset
402 bytestream_put_le16(&riff_extradata, 0); /* fwHeadModeExt */
d607731c2cf8 Add waveformat-extensible support in the wav muxer.
rbultje
parents: 4802
diff changeset
403 bytestream_put_le16(&riff_extradata, 1); /* wHeadEmphasis */
d607731c2cf8 Add waveformat-extensible support in the wav muxer.
rbultje
parents: 4802
diff changeset
404 bytestream_put_le16(&riff_extradata, 16); /* fwHeadFlags */
d607731c2cf8 Add waveformat-extensible support in the wav muxer.
rbultje
parents: 4802
diff changeset
405 bytestream_put_le32(&riff_extradata, 0); /* dwPTSLow */
d607731c2cf8 Add waveformat-extensible support in the wav muxer.
rbultje
parents: 4802
diff changeset
406 bytestream_put_le32(&riff_extradata, 0); /* dwPTSHigh */
4837
4b74f09970d0 Reduce code duplication.
cehoyos
parents: 4834
diff changeset
407 } else if (enc->codec_id == CODEC_ID_GSM_MS || enc->codec_id == CODEC_ID_ADPCM_IMA_WAV) {
1172
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
408 hdrsize += 2;
4833
d607731c2cf8 Add waveformat-extensible support in the wav muxer.
rbultje
parents: 4802
diff changeset
409 bytestream_put_le16(&riff_extradata, enc->frame_size); /* wSamplesPerBlock */
1172
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
410 } else if(enc->extradata_size){
4833
d607731c2cf8 Add waveformat-extensible support in the wav muxer.
rbultje
parents: 4802
diff changeset
411 riff_extradata_start= enc->extradata;
d607731c2cf8 Add waveformat-extensible support in the wav muxer.
rbultje
parents: 4802
diff changeset
412 riff_extradata= enc->extradata + enc->extradata_size;
1172
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
413 hdrsize += enc->extradata_size;
4833
d607731c2cf8 Add waveformat-extensible support in the wav muxer.
rbultje
parents: 4802
diff changeset
414 } else if (!waveformatextensible){
d607731c2cf8 Add waveformat-extensible support in the wav muxer.
rbultje
parents: 4802
diff changeset
415 hdrsize -= 2;
d607731c2cf8 Add waveformat-extensible support in the wav muxer.
rbultje
parents: 4802
diff changeset
416 }
d607731c2cf8 Add waveformat-extensible support in the wav muxer.
rbultje
parents: 4802
diff changeset
417 if(waveformatextensible) { /* write WAVEFORMATEXTENSIBLE extensions */
d607731c2cf8 Add waveformat-extensible support in the wav muxer.
rbultje
parents: 4802
diff changeset
418 hdrsize += 22;
d607731c2cf8 Add waveformat-extensible support in the wav muxer.
rbultje
parents: 4802
diff changeset
419 put_le16(pb, riff_extradata - riff_extradata_start + 22); /* 22 is WAVEFORMATEXTENSIBLE size */
d607731c2cf8 Add waveformat-extensible support in the wav muxer.
rbultje
parents: 4802
diff changeset
420 put_le16(pb, enc->bits_per_coded_sample); /* ValidBitsPerSample || SamplesPerBlock || Reserved */
d607731c2cf8 Add waveformat-extensible support in the wav muxer.
rbultje
parents: 4802
diff changeset
421 put_le32(pb, enc->channel_layout); /* dwChannelMask */
d607731c2cf8 Add waveformat-extensible support in the wav muxer.
rbultje
parents: 4802
diff changeset
422 put_le32(pb, enc->codec_tag); /* GUID + next 3 */
d607731c2cf8 Add waveformat-extensible support in the wav muxer.
rbultje
parents: 4802
diff changeset
423 put_le32(pb, 0x00100000);
d607731c2cf8 Add waveformat-extensible support in the wav muxer.
rbultje
parents: 4802
diff changeset
424 put_le32(pb, 0xAA000080);
d607731c2cf8 Add waveformat-extensible support in the wav muxer.
rbultje
parents: 4802
diff changeset
425 put_le32(pb, 0x719B3800);
d607731c2cf8 Add waveformat-extensible support in the wav muxer.
rbultje
parents: 4802
diff changeset
426 } else if(riff_extradata - riff_extradata_start) {
d607731c2cf8 Add waveformat-extensible support in the wav muxer.
rbultje
parents: 4802
diff changeset
427 put_le16(pb, riff_extradata - riff_extradata_start);
d607731c2cf8 Add waveformat-extensible support in the wav muxer.
rbultje
parents: 4802
diff changeset
428 }
d607731c2cf8 Add waveformat-extensible support in the wav muxer.
rbultje
parents: 4802
diff changeset
429 put_buffer(pb, riff_extradata_start, riff_extradata - riff_extradata_start);
4834
231479c86582 Reindent after r18372.
rbultje
parents: 4833
diff changeset
430 if(hdrsize&1){
231479c86582 Reindent after r18372.
rbultje
parents: 4833
diff changeset
431 hdrsize++;
231479c86582 Reindent after r18372.
rbultje
parents: 4833
diff changeset
432 put_byte(pb, 0);
231479c86582 Reindent after r18372.
rbultje
parents: 4833
diff changeset
433 }
1172
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
434
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
435 return hdrsize;
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
436 }
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
437
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
438 /* BITMAPINFOHEADER header */
5058
33a244b7ca65 Add ff_ prefixes to exported symbols in libavformat/riff.h.
diego
parents: 5043
diff changeset
439 void ff_put_bmp_header(ByteIOContext *pb, AVCodecContext *enc, const AVCodecTag *tags, int for_asf)
1172
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
440 {
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
441 put_le32(pb, 40 + enc->extradata_size); /* size */
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
442 put_le32(pb, enc->width);
4550
a36f9f2eefcb Fix raw rgb/bgr vertical flip in avi based on info from http://www.fourcc.org/fccbihgt.php.
michael
parents: 4544
diff changeset
443 //We always store RGB TopDown
a36f9f2eefcb Fix raw rgb/bgr vertical flip in avi based on info from http://www.fourcc.org/fccbihgt.php.
michael
parents: 4544
diff changeset
444 put_le32(pb, enc->codec_tag ? enc->height : -enc->height);
1172
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
445 put_le16(pb, 1); /* planes */
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
446
3908
1d3d17de20ba Bump Major version, this commit is almost just renaming bits_per_sample to
michael
parents: 3906
diff changeset
447 put_le16(pb, enc->bits_per_coded_sample ? enc->bits_per_coded_sample : 24); /* depth */
1172
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
448 /* compression type */
1683
8b062c65fe0d remove now useless codec_tag setting code in muxers
michael
parents: 1679
diff changeset
449 put_le32(pb, enc->codec_tag);
1172
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
450 put_le32(pb, enc->width * enc->height * 3);
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
451 put_le32(pb, 0);
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
452 put_le32(pb, 0);
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
453 put_le32(pb, 0);
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
454 put_le32(pb, 0);
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
455
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
456 put_buffer(pb, enc->extradata, enc->extradata_size);
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
457
5839
446f49e8942a riff: don't pad extradata when writing ASF.
benoit
parents: 5789
diff changeset
458 if (!for_asf && enc->extradata_size & 1)
1172
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
459 put_byte(pb, 0);
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
460 }
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
461 #endif //CONFIG_MUXERS
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
462
4206
c3102b189cb6 Change semantic of CONFIG_*, HAVE_* and ARCH_*.
aurel
parents: 4205
diff changeset
463 #if CONFIG_DEMUXERS
1172
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
464 /* We could be given one of the three possible structures here:
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
465 * WAVEFORMAT, PCMWAVEFORMAT or WAVEFORMATEX. Each structure
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
466 * is an expansion of the previous one with the fields added
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
467 * at the bottom. PCMWAVEFORMAT adds 'WORD wBitsPerSample' and
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
468 * WAVEFORMATEX adds 'WORD cbSize' and basically makes itself
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
469 * an openended structure.
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
470 */
5058
33a244b7ca65 Add ff_ prefixes to exported symbols in libavformat/riff.h.
diego
parents: 5043
diff changeset
471 void ff_get_wav_header(ByteIOContext *pb, AVCodecContext *codec, int size)
1172
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
472 {
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
473 int id;
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
474
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
475 id = get_le16(pb);
5910
536e5527c1e0 Define AVMediaType enum, and use it instead of enum CodecType, which
stefano
parents: 5839
diff changeset
476 codec->codec_type = AVMEDIA_TYPE_AUDIO;
1172
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
477 codec->codec_tag = id;
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
478 codec->channels = get_le16(pb);
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
479 codec->sample_rate = get_le32(pb);
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
480 codec->bit_rate = get_le32(pb) * 8;
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
481 codec->block_align = get_le16(pb);
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
482 if (size == 14) { /* We're dealing with plain vanilla WAVEFORMAT */
3908
1d3d17de20ba Bump Major version, this commit is almost just renaming bits_per_sample to
michael
parents: 3906
diff changeset
483 codec->bits_per_coded_sample = 8;
1172
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
484 }else
3908
1d3d17de20ba Bump Major version, this commit is almost just renaming bits_per_sample to
michael
parents: 3906
diff changeset
485 codec->bits_per_coded_sample = get_le16(pb);
1738
67e4f8b8f2df add waveformatextensible support
bcoudurier
parents: 1683
diff changeset
486 if (size >= 18) { /* We're obviously dealing with WAVEFORMATEX */
67e4f8b8f2df add waveformatextensible support
bcoudurier
parents: 1683
diff changeset
487 int cbSize = get_le16(pb); /* cbSize */
67e4f8b8f2df add waveformatextensible support
bcoudurier
parents: 1683
diff changeset
488 size -= 18;
67e4f8b8f2df add waveformatextensible support
bcoudurier
parents: 1683
diff changeset
489 cbSize = FFMIN(size, cbSize);
67e4f8b8f2df add waveformatextensible support
bcoudurier
parents: 1683
diff changeset
490 if (cbSize >= 22 && id == 0xfffe) { /* WAVEFORMATEXTENSIBLE */
3908
1d3d17de20ba Bump Major version, this commit is almost just renaming bits_per_sample to
michael
parents: 3906
diff changeset
491 codec->bits_per_coded_sample = get_le16(pb);
4015
136be670d919 Decode audio channel layout from RIFF/WAV file format.
pross
parents: 3973
diff changeset
492 codec->channel_layout = get_le32(pb); /* dwChannelMask */
1738
67e4f8b8f2df add waveformatextensible support
bcoudurier
parents: 1683
diff changeset
493 id = get_le32(pb); /* 4 first bytes of GUID */
67e4f8b8f2df add waveformatextensible support
bcoudurier
parents: 1683
diff changeset
494 url_fskip(pb, 12); /* skip end of GUID */
67e4f8b8f2df add waveformatextensible support
bcoudurier
parents: 1683
diff changeset
495 cbSize -= 22;
67e4f8b8f2df add waveformatextensible support
bcoudurier
parents: 1683
diff changeset
496 size -= 22;
67e4f8b8f2df add waveformatextensible support
bcoudurier
parents: 1683
diff changeset
497 }
67e4f8b8f2df add waveformatextensible support
bcoudurier
parents: 1683
diff changeset
498 codec->extradata_size = cbSize;
67e4f8b8f2df add waveformatextensible support
bcoudurier
parents: 1683
diff changeset
499 if (cbSize > 0) {
1172
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
500 codec->extradata = av_mallocz(codec->extradata_size + FF_INPUT_BUFFER_PADDING_SIZE);
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
501 get_buffer(pb, codec->extradata, codec->extradata_size);
1738
67e4f8b8f2df add waveformatextensible support
bcoudurier
parents: 1683
diff changeset
502 size -= cbSize;
67e4f8b8f2df add waveformatextensible support
bcoudurier
parents: 1683
diff changeset
503 }
1172
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
504
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
505 /* It is possible for the chunk to contain garbage at the end */
1738
67e4f8b8f2df add waveformatextensible support
bcoudurier
parents: 1683
diff changeset
506 if (size > 0)
67e4f8b8f2df add waveformatextensible support
bcoudurier
parents: 1683
diff changeset
507 url_fskip(pb, size);
1172
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
508 }
5058
33a244b7ca65 Add ff_ prefixes to exported symbols in libavformat/riff.h.
diego
parents: 5043
diff changeset
509 codec->codec_id = ff_wav_codec_get_id(id, codec->bits_per_coded_sample);
1172
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
510 }
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
511
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
512
5058
33a244b7ca65 Add ff_ prefixes to exported symbols in libavformat/riff.h.
diego
parents: 5043
diff changeset
513 enum CodecID ff_wav_codec_get_id(unsigned int tag, int bps)
1172
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
514 {
4129
0116c7e7e3ef Fix two identical warnings when compiling riff.c and nuv.c with icc:
cehoyos
parents: 4115
diff changeset
515 enum CodecID id;
5058
33a244b7ca65 Add ff_ prefixes to exported symbols in libavformat/riff.h.
diego
parents: 5043
diff changeset
516 id = ff_codec_get_id(ff_codec_wav_tags, tag);
1172
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
517 if (id <= 0)
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
518 return id;
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
519 /* handle specific u8 codec */
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
520 if (id == CODEC_ID_PCM_S16LE && bps == 8)
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
521 id = CODEC_ID_PCM_U8;
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
522 if (id == CODEC_ID_PCM_S16LE && bps == 24)
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
523 id = CODEC_ID_PCM_S24LE;
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
524 if (id == CODEC_ID_PCM_S16LE && bps == 32)
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
525 id = CODEC_ID_PCM_S32LE;
3737
704c20dd52a4 Make RIFF-based demuxers handle F32LE and F64LE PCM audio.
pross
parents: 3705
diff changeset
526 if (id == CODEC_ID_PCM_F32LE && bps == 64)
704c20dd52a4 Make RIFF-based demuxers handle F32LE and F64LE PCM audio.
pross
parents: 3705
diff changeset
527 id = CODEC_ID_PCM_F64LE;
2292
f54b2020d564 support silly PCM variant used by zork nemesis
michael
parents: 2287
diff changeset
528 if (id == CODEC_ID_ADPCM_IMA_WAV && bps == 8)
f54b2020d564 support silly PCM variant used by zork nemesis
michael
parents: 2287
diff changeset
529 id = CODEC_ID_PCM_ZORK;
1172
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
530 return id;
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
531 }
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
532 #endif // CONFIG_DEMUXERS
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
533
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
534 void ff_parse_specific_params(AVCodecContext *stream, int *au_rate, int *au_ssize, int *au_scale)
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
535 {
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
536 int gcd;
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
537
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
538 *au_ssize= stream->block_align;
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
539 if(stream->frame_size && stream->sample_rate){
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
540 *au_scale=stream->frame_size;
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
541 *au_rate= stream->sample_rate;
5910
536e5527c1e0 Define AVMediaType enum, and use it instead of enum CodecType, which
stefano
parents: 5839
diff changeset
542 }else if(stream->codec_type == AVMEDIA_TYPE_VIDEO ||
536e5527c1e0 Define AVMediaType enum, and use it instead of enum CodecType, which
stefano
parents: 5839
diff changeset
543 stream->codec_type == AVMEDIA_TYPE_SUBTITLE){
1172
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
544 *au_scale= stream->time_base.num;
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
545 *au_rate = stream->time_base.den;
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
546 }else{
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
547 *au_scale= stream->block_align ? stream->block_align*8 : 8;
3103
137e1fc7d16b Fallback to sample rate if bit rate is 0. This avoids 0 timebases in nut.
michael
parents: 3096
diff changeset
548 *au_rate = stream->bit_rate ? stream->bit_rate : 8*stream->sample_rate;
1172
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
549 }
4242
44f4dca12784 export gcd function as av_gcd()
aurel
parents: 4238
diff changeset
550 gcd= av_gcd(*au_scale, *au_rate);
1172
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
551 *au_scale /= gcd;
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
552 *au_rate /= gcd;
6a5e58d2114b move common stuff from avienc.c and wav.c to new file riff.c
mru
parents:
diff changeset
553 }