mirror of
				https://github.com/nyanmisaka/ffmpeg-rockchip.git
				synced 2025-10-31 12:36:41 +08:00 
			
		
		
		
	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
	 Justin Ruggles
					Justin Ruggles