lavc: move SANE_NB_CHANNELS to internal.h and use it in the PCM decoders
This commit is contained in:
		@@ -30,6 +30,8 @@
 | 
				
			|||||||
#include "libavutil/pixfmt.h"
 | 
					#include "libavutil/pixfmt.h"
 | 
				
			||||||
#include "avcodec.h"
 | 
					#include "avcodec.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define FF_SANE_NB_CHANNELS 128U
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef struct InternalBuffer {
 | 
					typedef struct InternalBuffer {
 | 
				
			||||||
    uint8_t *base[AV_NUM_DATA_POINTERS];
 | 
					    uint8_t *base[AV_NUM_DATA_POINTERS];
 | 
				
			||||||
    uint8_t *data[AV_NUM_DATA_POINTERS];
 | 
					    uint8_t *data[AV_NUM_DATA_POINTERS];
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -31,8 +31,6 @@
 | 
				
			|||||||
#include "mathops.h"
 | 
					#include "mathops.h"
 | 
				
			||||||
#include "pcm_tablegen.h"
 | 
					#include "pcm_tablegen.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define MAX_CHANNELS 64
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static av_cold int pcm_encode_init(AVCodecContext *avctx)
 | 
					static av_cold int pcm_encode_init(AVCodecContext *avctx)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    avctx->frame_size = 0;
 | 
					    avctx->frame_size = 0;
 | 
				
			||||||
@@ -210,7 +208,7 @@ static av_cold int pcm_decode_init(AVCodecContext *avctx)
 | 
				
			|||||||
    PCMDecode *s = avctx->priv_data;
 | 
					    PCMDecode *s = avctx->priv_data;
 | 
				
			||||||
    int i;
 | 
					    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");
 | 
					        av_log(avctx, AV_LOG_ERROR, "PCM channels out of bounds\n");
 | 
				
			||||||
        return AVERROR(EINVAL);
 | 
					        return AVERROR(EINVAL);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -340,7 +338,7 @@ static int pcm_decode_frame(AVCodecContext *avctx, void *data,
 | 
				
			|||||||
        break;
 | 
					        break;
 | 
				
			||||||
    case AV_CODEC_ID_PCM_S16LE_PLANAR:
 | 
					    case AV_CODEC_ID_PCM_S16LE_PLANAR:
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        const uint8_t *src2[MAX_CHANNELS];
 | 
					        const uint8_t *src2[FF_SANE_NB_CHANNELS];
 | 
				
			||||||
        n /= avctx->channels;
 | 
					        n /= avctx->channels;
 | 
				
			||||||
        for (c = 0; c < avctx->channels; c++)
 | 
					        for (c = 0; c < avctx->channels; c++)
 | 
				
			||||||
            src2[c] = &src[c * n * 2];
 | 
					            src2[c] = &src[c * n * 2];
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -758,8 +758,7 @@ int attribute_align_arg avcodec_open2(AVCodecContext *avctx, const AVCodec *code
 | 
				
			|||||||
    if (av_codec_is_decoder(codec))
 | 
					    if (av_codec_is_decoder(codec))
 | 
				
			||||||
        av_freep(&avctx->subtitle_header);
 | 
					        av_freep(&avctx->subtitle_header);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define SANE_NB_CHANNELS 128U
 | 
					    if (avctx->channels > FF_SANE_NB_CHANNELS) {
 | 
				
			||||||
    if (avctx->channels > SANE_NB_CHANNELS) {
 | 
					 | 
				
			||||||
        ret = AVERROR(EINVAL);
 | 
					        ret = AVERROR(EINVAL);
 | 
				
			||||||
        goto free_and_end;
 | 
					        goto free_and_end;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user