summaryrefslogtreecommitdiff
path: root/libavformat
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
parent582f231142c62a0bd6391efbd5a2ac119d73bb40 (diff)
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')
-rw-r--r--libavformat/asfenc.c4
-rw-r--r--libavformat/riff.c6
2 files changed, 2 insertions, 8 deletions
diff --git a/libavformat/asfenc.c b/libavformat/asfenc.c
index cbd9cb6a49..01f98d2a6f 100644
--- a/libavformat/asfenc.c
+++ b/libavformat/asfenc.c
@@ -434,10 +434,6 @@ static int asf_write_header1(AVFormatContext *s, int64_t file_size, int64_t data
if (enc->codec_type == AVMEDIA_TYPE_AUDIO) {
/* WAVEFORMATEX header */
int wavsize = ff_put_wav_header(pb, enc);
- if ((enc->codec_id != CODEC_ID_MP3) && (enc->codec_id != CODEC_ID_MP2) && (enc->codec_id != CODEC_ID_ADPCM_IMA_WAV) && (enc->extradata_size==0)) {
- wavsize += 2;
- avio_wl16(pb, 0);
- }
if (wavsize < 0)
return -1;
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){