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

Reply via email to