Only set channels in the stream if previously unset, fixes resampling crash on broken dca frames

Originally committed as revision 12780 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
Benjamin Larsson 2008-04-10 06:15:17 +00:00
parent fd31550d23
commit 4a24837e07
1 changed files with 8 additions and 1 deletions

View File

@ -1173,7 +1173,14 @@ static int dca_decode_frame(AVCodecContext * avctx,
s->output = DCA_STEREO;
}
/* There is nothing that prevents a dts frame to change channel configuration
but FFmpeg doesn't support that so only set the channels if it is previously
unset. Ideally during the first probe for channels the crc should be checked
and only set avctx->channels when the crc is ok. Right now the decoder could
set the channels based on a broken first frame.*/
if (!avctx->channels)
avctx->channels = channels;
if(*data_size < (s->sample_blocks / 8) * 256 * sizeof(int16_t) * channels)
return -1;
*data_size = 0;