---
 libavformat/movenc.c |   19 +++++++++++++++++--
 1 files changed, 17 insertions(+), 2 deletions(-)

diff --git a/libavformat/movenc.c b/libavformat/movenc.c
index dc0c040..6896519 100644
--- a/libavformat/movenc.c
+++ b/libavformat/movenc.c
@@ -349,6 +349,15 @@ static int mov_write_ms_tag(AVIOContext *pb, MOVTrack 
*track)
     return updateSize(pb, pos);
 }
 
+static int mov_write_wfex_tag(AVIOContext *pb, MOVTrack *track)
+{
+    int64_t pos = avio_tell(pb);
+    avio_wb32(pb, 0);
+    ffio_wfourcc(pb, "wfex");
+    ff_put_wav_header(pb, track->enc);
+    return updateSize(pb, pos);
+}
+
 static int mov_write_chan_tag(AVIOContext *pb, MOVTrack *track)
 {
     uint32_t layout_tag, bitmap;
@@ -513,6 +522,8 @@ static int mov_write_audio_tag(AVIOContext *pb, MOVTrack 
*track)
         mov_write_ac3_tag(pb, track);
     else if(track->enc->codec_id == CODEC_ID_ALAC)
         mov_write_extradata_tag(pb, track);
+    else if(track->enc->codec_id == CODEC_ID_WMAPRO)
+        mov_write_wfex_tag(pb, track);
     else if(track->vosLen > 0)
         mov_write_glbl_tag(pb, track);
 
@@ -762,9 +773,13 @@ static int mov_find_codec_tag(AVFormatContext *s, MOVTrack 
*track)
 {
     int tag = track->enc->codec_tag;
 
-    if (track->mode == MODE_MP4 || track->mode == MODE_PSP || track->mode == 
MODE_ISM)
+    if (track->mode == MODE_MP4 || track->mode == MODE_PSP)
+        tag = mp4_get_codec_tag(s, track);
+    else if (track->mode == MODE_ISM) {
         tag = mp4_get_codec_tag(s, track);
-    else if (track->mode == MODE_IPOD)
+        if (!tag && track->enc->codec_id == CODEC_ID_WMAPRO)
+            tag = MKTAG('w', 'm', 'a', ' ');
+    } else if (track->mode == MODE_IPOD)
         tag = ipod_get_codec_tag(s, track);
     else if (track->mode & MODE_3GP)
         tag = ff_codec_get_tag(codec_3gp_tags, track->enc->codec_id);
-- 
1.7.3.1

_______________________________________________
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to