Commit a0e44414 authored by Andrew Wason's avatar Andrew Wason Committed by Michael Niedermayer

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 89ddff92 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: 's avatarMichael Niedermayer <michaelni@gmx.at>
parent 1b84cf41
...@@ -3124,7 +3124,6 @@ static int mov_write_header(AVFormatContext *s) ...@@ -3124,7 +3124,6 @@ static int mov_write_header(AVFormatContext *s)
}else if(st->codec->frame_size > 1){ /* assume compressed audio */ }else if(st->codec->frame_size > 1){ /* assume compressed audio */
track->audio_vbr = 1; track->audio_vbr = 1;
}else{ }else{
st->codec->frame_size = 1;
track->sample_size = (av_get_bits_per_sample(st->codec->codec_id) >> 3) * st->codec->channels; track->sample_size = (av_get_bits_per_sample(st->codec->codec_id) >> 3) * st->codec->channels;
} }
if (track->mode != MODE_MOV) { if (track->mode != MODE_MOV) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment