aboutsummaryrefslogtreecommitdiffstats
path: root/libavformat/riff.c
diff options
context:
space:
mode:
authorJohn Brooks <john.brooks@bluecherry.net>2011-10-13 08:34:20 +0000
committerJanne Grunau <janne-libav@jannau.net>2011-10-14 13:28:58 +0200
commit2c4e08d89327595f7f4be57dda4b3775e1198d5e (patch)
tree8d5ea42065bb095e6cfd854ef3cdbae4b65cbe0b /libavformat/riff.c
parent582f231142c62a0bd6391efbd5a2ac119d73bb40 (diff)
downloadffmpeg-2c4e08d89327595f7f4be57dda4b3775e1198d5e.tar.gz
riff: always generate a proper WAVEFORMATEX structure in ff_put_wav_header
The cbSize field should be included in all cases, even with PCM where its value is ignored. Fixes encoding PCM audio in Matroska for some players which insist on a full WAVEFORMATEX structure for A_MS/ACM audio. Since fate uses wav files for the audio test a larger number of tests has changed checksums or shifted positions due to the 2 byte longer wave header. Signed-off-by: Janne Grunau <janne-libav@jannau.net>
Diffstat (limited to 'libavformat/riff.c')
-rw-r--r--libavformat/riff.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/libavformat/riff.c b/libavformat/riff.c
index fec3c8851a..8587806647 100644
--- a/libavformat/riff.c
+++ b/libavformat/riff.c
@@ -439,8 +439,6 @@ int ff_put_wav_header(AVIOContext *pb, AVCodecContext *enc)
riff_extradata_start= enc->extradata;
riff_extradata= enc->extradata + enc->extradata_size;
hdrsize += enc->extradata_size;
- } else if (!waveformatextensible){
- hdrsize -= 2;
}
if(waveformatextensible) { /* write WAVEFORMATEXTENSIBLE extensions */
hdrsize += 22;
@@ -451,8 +449,8 @@ int ff_put_wav_header(AVIOContext *pb, AVCodecContext *enc)
avio_wl32(pb, 0x00100000);
avio_wl32(pb, 0xAA000080);
avio_wl32(pb, 0x719B3800);
- } else if(riff_extradata - riff_extradata_start) {
- avio_wl16(pb, riff_extradata - riff_extradata_start);
+ } else {
+ avio_wl16(pb, riff_extradata - riff_extradata_start); /* cbSize */
}
avio_write(pb, riff_extradata_start, riff_extradata - riff_extradata_start);
if(hdrsize&1){