[FFmpeg-cvslog] Fix ff_mov_write_chan() so it can be used by other muxers.

Carl Eugen Hoyos git at videolan.org
Tue May 17 01:59:06 CEST 2011


ffmpeg | branch: master | Carl Eugen Hoyos <cehoyos at ag.or.at> | Tue May 17 01:47:12 2011 +0200| [6d721f714ee61d6e244b980113aa24d5afcbfee0] | committer: Carl Eugen Hoyos

Fix ff_mov_write_chan() so it can be used by other muxers.

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=6d721f714ee61d6e244b980113aa24d5afcbfee0
---

 libavformat/cafenc.c |    6 +++++-
 libavformat/isom.c   |   10 +---------
 libavformat/isom.h   |    3 +--
 3 files changed, 7 insertions(+), 12 deletions(-)

diff --git a/libavformat/cafenc.c b/libavformat/cafenc.c
index 0f33c6b..13636f3 100644
--- a/libavformat/cafenc.c
+++ b/libavformat/cafenc.c
@@ -134,7 +134,11 @@ static int caf_write_header(AVFormatContext *s)
     avio_wb32(pb, enc->channels);                     //< mChannelsPerFrame
     avio_wb32(pb, enc->bits_per_coded_sample);        //< mBitsPerChannel
 
-    ff_mov_write_chan(s, enc->channel_layout, "chan");
+    if (enc->channel_layout) {
+        ffio_wfourcc(pb, "chan");
+        avio_wb64(pb, 12);
+        ff_mov_write_chan(pb, enc->channel_layout);
+    }
 
     ffio_wfourcc(pb, "data"); //< Audio Data chunk
     caf->data = avio_tell(pb);
diff --git a/libavformat/isom.c b/libavformat/isom.c
index 3259128..45ccdd2 100644
--- a/libavformat/isom.c
+++ b/libavformat/isom.c
@@ -27,7 +27,6 @@
 #include "internal.h"
 #include "isom.h"
 #include "riff.h"
-#include "avio_internal.h"
 #include "libavcodec/mpeg4audio.h"
 #include "libavcodec/mpegaudiodata.h"
 
@@ -484,24 +483,17 @@ void ff_mov_read_chan(AVFormatContext *s, int64_t size, AVCodecContext *codec)
     avio_skip(pb, 8);
 }
 
-void ff_mov_write_chan(AVFormatContext *s, int64_t channel_layout,
-                       const char *chunk_type)
+void ff_mov_write_chan(AVIOContext *pb, int64_t channel_layout)
 {
-    AVIOContext *pb = s->pb;
     const MovChannelLayout *layouts;
     uint32_t layout_tag = 0;
 
-    if (!channel_layout)
-        return;
-
     for (layouts = mov_channel_layout; layouts->channel_layout; layouts++)
         if (channel_layout == layouts->channel_layout) {
             layout_tag = layouts->layout_tag;
             break;
         }
 
-    ffio_wfourcc(pb, chunk_type);
-    avio_wb64(pb, 12);             //< mChunkSize
     if (layout_tag) {
         avio_wb32(pb, layout_tag); //< mChannelLayoutTag
         avio_wb32(pb, 0);          //< mChannelBitmap
diff --git a/libavformat/isom.h b/libavformat/isom.h
index 6649d85..2b64486 100644
--- a/libavformat/isom.h
+++ b/libavformat/isom.h
@@ -157,7 +157,6 @@ enum CodecID ff_mov_get_lpcm_codec_id(int bps, int flags);
 
 int ff_mov_read_stsd_entries(MOVContext *c, AVIOContext *pb, int entries);
 void ff_mov_read_chan(AVFormatContext *s, int64_t size, AVCodecContext *codec);
-void ff_mov_write_chan(AVFormatContext *s, int64_t channel_layout,
-                       const char *chunk_type);
+void ff_mov_write_chan(AVIOContext *pb, int64_t channel_layout);
 
 #endif /* AVFORMAT_ISOM_H */



More information about the ffmpeg-cvslog mailing list