diff options
author | Carl Eugen Hoyos <cehoyos@ag.or.at> | 2014-05-26 19:06:23 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2014-05-26 20:28:07 +0200 |
commit | 2d56f0d05475d3f8abb1dd11b8a61873a444e286 (patch) | |
tree | b2811860a64dc44b7182201b8dd698679388883c /libavformat/cafenc.c | |
parent | 2db89765f3fc5e1fdf12fc0158feef23db8ce2c1 (diff) | |
download | ffmpeg-2d56f0d05475d3f8abb1dd11b8a61873a444e286.tar.gz |
Write the actual mp3 frame size when muxing into caf if available.
Fixes ticket #3648.
Diffstat (limited to 'libavformat/cafenc.c')
-rw-r--r-- | libavformat/cafenc.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/libavformat/cafenc.c b/libavformat/cafenc.c index 8926f0f2f7..3a732a3ba3 100644 --- a/libavformat/cafenc.c +++ b/libavformat/cafenc.c @@ -107,6 +107,7 @@ static int caf_write_header(AVFormatContext *s) AVDictionaryEntry *t = NULL; unsigned int codec_tag = ff_codec_get_tag(ff_codec_caf_tags, enc->codec_id); int64_t chunk_size = 0; + int frame_size = enc->frame_size; if (s->nb_streams != 1) { av_log(s, AV_LOG_ERROR, "CAF files have exactly one stream\n"); @@ -144,6 +145,9 @@ static int caf_write_header(AVFormatContext *s) return AVERROR_INVALIDDATA; } + if (enc->codec_id != AV_CODEC_ID_MP3 || frame_size != 576) + frame_size = samples_per_packet(enc->codec_id, enc->channels); + ffio_wfourcc(pb, "caff"); //< mFileType avio_wb16(pb, 1); //< mFileVersion avio_wb16(pb, 0); //< mFileFlags @@ -154,7 +158,7 @@ static int caf_write_header(AVFormatContext *s) avio_wl32(pb, codec_tag); //< mFormatID avio_wb32(pb, codec_flags(enc->codec_id)); //< mFormatFlags avio_wb32(pb, enc->block_align); //< mBytesPerPacket - avio_wb32(pb, samples_per_packet(enc->codec_id, enc->channels)); //< mFramesPerPacket + avio_wb32(pb, frame_size); //< mFramesPerPacket avio_wb32(pb, enc->channels); //< mChannelsPerFrame avio_wb32(pb, av_get_bits_per_sample(enc->codec_id)); //< mBitsPerChannel |