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 */