diff options
author | Carl Eugen Hoyos <cehoyos@ag.or.at> | 2011-05-17 01:47:12 +0200 |
---|---|---|
committer | Carl Eugen Hoyos <cehoyos@ag.or.at> | 2011-05-17 01:47:12 +0200 |
commit | 6d721f714ee61d6e244b980113aa24d5afcbfee0 (patch) | |
tree | 1bf68ef3c6ecb7011698999d3b820875a0d08d96 | |
parent | d2549ba9df1a1aac8c0ae19bfca2c81e508ba02e (diff) | |
download | ffmpeg-6d721f714ee61d6e244b980113aa24d5afcbfee0.tar.gz |
Fix ff_mov_write_chan() so it can be used by other muxers.
-rw-r--r-- | libavformat/cafenc.c | 6 | ||||
-rw-r--r-- | libavformat/isom.c | 10 | ||||
-rw-r--r-- | libavformat/isom.h | 3 |
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 */ |