mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
Add check for changing number of channels in DCA.
Fixes issue 2505.
This commit is contained in:
parent
59e2118e97
commit
1360f07e22
@ -273,6 +273,7 @@ typedef struct {
|
||||
|
||||
/* Primary audio coding header */
|
||||
int subframes; ///< number of subframes
|
||||
int is_channels_set; ///< check for if the channel number is already set
|
||||
int total_channels; ///< number of channels including extensions
|
||||
int prim_channels; ///< number of primary audio channels
|
||||
int subband_activity[DCA_PRIM_CHANNELS_MAX]; ///< subband activity count
|
||||
@ -1774,7 +1775,15 @@ static int dca_decode_frame(AVCodecContext * avctx,
|
||||
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 (s->is_channels_set == 0) {
|
||||
s->is_channels_set = 1;
|
||||
avctx->channels = channels;
|
||||
}
|
||||
if (avctx->channels != channels) {
|
||||
av_log(avctx, AV_LOG_ERROR, "DCA decoder does not support number of "
|
||||
"channels changing in stream. Skipping frame.\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (*data_size < (s->sample_blocks / 8) * 256 * sizeof(int16_t) * channels)
|
||||
return -1;
|
||||
|
Loading…
Reference in New Issue
Block a user