aboutsummaryrefslogtreecommitdiff
path: root/libavformat
diff options
context:
space:
mode:
authorCarl Eugen Hoyos2011-05-17 01:47:12 +0200
committerCarl Eugen Hoyos2011-05-17 01:47:12 +0200
commit6d721f714ee61d6e244b980113aa24d5afcbfee0 (patch)
tree1bf68ef3c6ecb7011698999d3b820875a0d08d96 /libavformat
parentd2549ba9df1a1aac8c0ae19bfca2c81e508ba02e (diff)
Fix ff_mov_write_chan() so it can be used by other muxers.
Diffstat (limited to 'libavformat')
-rw-r--r--libavformat/cafenc.c6
-rw-r--r--libavformat/isom.c10
-rw-r--r--libavformat/isom.h3
3 files changed, 7 insertions, 12 deletions
diff --git a/libavformat/cafenc.c b/libavformat/cafenc.c
index 0f33c6b592..13636f30ee 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 3259128d3a..45ccdd2864 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 6649d85739..2b64486129 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 */