lavf/xwma: Support wmapro.
authorCarl Eugen Hoyos <cehoyos@ag.or.at>
Sun, 25 Oct 2015 16:37:17 +0000 (17:37 +0100)
committerCarl Eugen Hoyos <cehoyos@ag.or.at>
Sun, 25 Oct 2015 16:37:17 +0000 (17:37 +0100)
Fixes ticket #4963.

libavformat/xwma.c

index 9edad7d..d516b76 100644 (file)
@@ -85,7 +85,8 @@ static int xwma_read_header(AVFormatContext *s)
      * extradata for that. Thus, ask the user for feedback, but try to go on
      * anyway.
      */
-    if (st->codec->codec_id != AV_CODEC_ID_WMAV2) {
+    if (st->codec->codec_id != AV_CODEC_ID_WMAV2 &&
+        st->codec->codec_id != AV_CODEC_ID_WMAPRO) {
         avpriv_request_sample(s, "Unexpected codec (tag 0x04%x; id %d)",
                               st->codec->codec_tag, st->codec->codec_id);
     } else {
@@ -103,6 +104,13 @@ static int xwma_read_header(AVFormatContext *s)
              */
             avpriv_request_sample(s, "Unexpected extradata (%d bytes)",
                                   st->codec->extradata_size);
+        } else if (st->codec->codec_id == AV_CODEC_ID_WMAPRO) {
+            if (ff_alloc_extradata(st->codec, 18))
+                return AVERROR(ENOMEM);
+
+            memset(st->codec->extradata, 0, st->codec->extradata_size);
+            st->codec->extradata[ 0] = st->codec->bits_per_coded_sample;
+            st->codec->extradata[14] = 224;
         } else {
             if (ff_alloc_extradata(st->codec, 6))
                 return AVERROR(ENOMEM);