From a0e44414dfc4ab2d9aa5fdd207fa6ea5f39658e8 Mon Sep 17 00:00:00 2001 From: Andrew Wason Date: Fri, 17 Feb 2012 16:24:18 +0100 Subject: [PATCH] movenc: leave st->codec->frame_size as is instead of forcing it to 1. Muxing pcm audio in MOV using avcodec_encode_audio() was failing because avcodec_encode_audio() returns an incorrect packet size of 4 bytes. This can be reproduced by modifying the sample ffmpeg/doc/examples/muxing.c to encode PCM, see ML patch muxing-test.diff I git bisected and commit 89ddff92a385 is the one that broke this. In mov_write_header() if st->codec->frame_size <= 1 it sets it to 1. Then avcodec_encode_audio() sets frame->nb_samples = avctx->frame_size, and frame->nb_samples of 1 is used to compute a packet size of 4 bytes. Signed-off-by: Michael Niedermayer --- libavformat/movenc.c | 1 - 1 file changed, 1 deletion(-) diff --git a/libavformat/movenc.c b/libavformat/movenc.c index 2c96f34a6b..1f56fe14fb 100644 --- a/libavformat/movenc.c +++ b/libavformat/movenc.c @@ -3124,7 +3124,6 @@ static int mov_write_header(AVFormatContext *s) }else if(st->codec->frame_size > 1){ /* assume compressed audio */ track->audio_vbr = 1; }else{ - st->codec->frame_size = 1; track->sample_size = (av_get_bits_per_sample(st->codec->codec_id) >> 3) * st->codec->channels; } if (track->mode != MODE_MOV) {