diff --git a/libavcodec/internal.h b/libavcodec/internal.h index e5b1958596..231d4b6809 100644 --- a/libavcodec/internal.h +++ b/libavcodec/internal.h @@ -30,6 +30,8 @@ #include "libavutil/pixfmt.h" #include "avcodec.h" +#define FF_SANE_NB_CHANNELS 128U + typedef struct InternalBuffer { uint8_t *base[AV_NUM_DATA_POINTERS]; uint8_t *data[AV_NUM_DATA_POINTERS]; diff --git a/libavcodec/pcm.c b/libavcodec/pcm.c index 1f8f22d172..832cb43851 100644 --- a/libavcodec/pcm.c +++ b/libavcodec/pcm.c @@ -31,8 +31,6 @@ #include "mathops.h" #include "pcm_tablegen.h" -#define MAX_CHANNELS 64 - static av_cold int pcm_encode_init(AVCodecContext *avctx) { avctx->frame_size = 0; @@ -210,7 +208,7 @@ static av_cold int pcm_decode_init(AVCodecContext *avctx) PCMDecode *s = avctx->priv_data; int i; - if (avctx->channels <= 0 || avctx->channels > MAX_CHANNELS) { + if (avctx->channels <= 0) { av_log(avctx, AV_LOG_ERROR, "PCM channels out of bounds\n"); return AVERROR(EINVAL); } @@ -340,7 +338,7 @@ static int pcm_decode_frame(AVCodecContext *avctx, void *data, break; case AV_CODEC_ID_PCM_S16LE_PLANAR: { - const uint8_t *src2[MAX_CHANNELS]; + const uint8_t *src2[FF_SANE_NB_CHANNELS]; n /= avctx->channels; for (c = 0; c < avctx->channels; c++) src2[c] = &src[c * n * 2]; diff --git a/libavcodec/utils.c b/libavcodec/utils.c index 8daacbe8cf..b4e7ed6b6b 100644 --- a/libavcodec/utils.c +++ b/libavcodec/utils.c @@ -758,8 +758,7 @@ int attribute_align_arg avcodec_open2(AVCodecContext *avctx, const AVCodec *code if (av_codec_is_decoder(codec)) av_freep(&avctx->subtitle_header); -#define SANE_NB_CHANNELS 128U - if (avctx->channels > SANE_NB_CHANNELS) { + if (avctx->channels > FF_SANE_NB_CHANNELS) { ret = AVERROR(EINVAL); goto free_and_end; }