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.
---
libavformat/asfenc.c | 4 ----
libavformat/riff.c | 6 ++----
2 files changed, 2 insertions(+), 8 deletions(-)
diff --git a/libavformat/asfenc.c b/libavformat/asfenc.c
index cbd9cb6..01f98d2 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 fec3c88..8587806 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){
--
1.7.4.1
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel