Fixes audio playback in some players (e.g. VLC) that expect a full
WAVEFORMATEX structure where we were generating WAVEFORMAT

Signed-off-by: John Brooks <[email protected]>
---
 libavformat/matroskaenc.c |    7 ++++++-
 1 files changed, 6 insertions(+), 1 deletions(-)

diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c
index 02d10af..a59ab38 100644
--- a/libavformat/matroskaenc.c
+++ b/libavformat/matroskaenc.c
@@ -490,6 +490,7 @@ static int mkv_write_codecprivate(AVFormatContext *s, 
AVIOContext *pb, AVCodecCo
 
     } else if (codec->codec_type == AVMEDIA_TYPE_AUDIO) {
         unsigned int tag;
+        int wavsize;
         tag = ff_codec_get_tag(ff_codec_wav_tags, codec->codec_id);
         if (!tag) {
             av_log(s, AV_LOG_ERROR, "No wav codec ID found.\n");
@@ -498,7 +499,11 @@ static int mkv_write_codecprivate(AVFormatContext *s, 
AVIOContext *pb, AVCodecCo
         if (!codec->codec_tag)
             codec->codec_tag = tag;
 
-        ff_put_wav_header(dyn_cp, codec);
+        wavsize = ff_put_wav_header(dyn_cp, codec);
+        if (wavsize < 18) {
+            /* Add WAVEFORMATEX cbSize field to WAVEFORMAT */
+            avio_wl16(dyn_cp, 0);
+        }
     }
 
     codecpriv_size = avio_close_dyn_buf(dyn_cp, &codecpriv);
-- 
1.7.4.1

_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to