From 5d1c2e53ab3ce27b48c138d22bb01ff8e8304f27 Mon Sep 17 00:00:00 2001 From: Vittorio Giovara Date: Thu, 27 Feb 2014 17:07:30 +0100 Subject: [PATCH] h264: Replace mpegvideo-specific MAX_PICTURE_COUNT by private define --- libavcodec/h264.c | 22 +++++++++++----------- libavcodec/h264.h | 2 ++ libavcodec/h264_ps.c | 2 +- 3 files changed, 14 insertions(+), 12 deletions(-) diff --git a/libavcodec/h264.c b/libavcodec/h264.c index 938b0c9394..d78cdb84f4 100644 --- a/libavcodec/h264.c +++ b/libavcodec/h264.c @@ -279,7 +279,7 @@ static void release_unused_pictures(H264Context *h, int remove_current) int i; /* release non reference frames */ - for (i = 0; i < MAX_PICTURE_COUNT; i++) { + for (i = 0; i < H264_MAX_PICTURE_COUNT; i++) { if (h->DPB[i].f.buf[0] && !h->DPB[i].reference && (remove_current || &h->DPB[i] != h->cur_pic_ptr)) { unref_picture(h, &h->DPB[i]); @@ -467,11 +467,11 @@ static int find_unused_picture(H264Context *h) { int i; - for (i = 0; i < MAX_PICTURE_COUNT; i++) { + for (i = 0; i < H264_MAX_PICTURE_COUNT; i++) { if (pic_is_unused(h, &h->DPB[i])) break; } - if (i == MAX_PICTURE_COUNT) + if (i == H264_MAX_PICTURE_COUNT) return AVERROR_INVALIDDATA; if (h->DPB[i].needs_realloc) { @@ -1185,11 +1185,11 @@ static void free_tables(H264Context *h, int free_rbsp) av_buffer_pool_uninit(&h->ref_index_pool); if (free_rbsp && h->DPB) { - for (i = 0; i < MAX_PICTURE_COUNT; i++) + for (i = 0; i < H264_MAX_PICTURE_COUNT; i++) unref_picture(h, &h->DPB[i]); av_freep(&h->DPB); } else if (h->DPB) { - for (i = 0; i < MAX_PICTURE_COUNT; i++) + for (i = 0; i < H264_MAX_PICTURE_COUNT; i++) h->DPB[i].needs_realloc = 1; } @@ -1338,10 +1338,10 @@ int ff_h264_alloc_tables(H264Context *h) init_dequant_tables(h); if (!h->DPB) { - h->DPB = av_mallocz_array(MAX_PICTURE_COUNT, sizeof(*h->DPB)); + h->DPB = av_mallocz_array(H264_MAX_PICTURE_COUNT, sizeof(*h->DPB)); if (!h->DPB) return AVERROR(ENOMEM); - for (i = 0; i < MAX_PICTURE_COUNT; i++) + for (i = 0; i < H264_MAX_PICTURE_COUNT; i++) av_frame_unref(&h->DPB[i].f); av_frame_unref(&h->cur_pic.f); } @@ -1595,7 +1595,7 @@ av_cold int ff_h264_decode_init(AVCodecContext *avctx) #undef REBASE_PICTURE #define REBASE_PICTURE(pic, new_ctx, old_ctx) \ ((pic && pic >= old_ctx->DPB && \ - pic < old_ctx->DPB + MAX_PICTURE_COUNT) ? \ + pic < old_ctx->DPB + H264_MAX_PICTURE_COUNT) ? \ &new_ctx->DPB[pic - old_ctx->DPB] : NULL) static void copy_picture_range(H264Picture **to, H264Picture **from, int count, @@ -1607,7 +1607,7 @@ static void copy_picture_range(H264Picture **to, H264Picture **from, int count, for (i = 0; i < count; i++) { assert((IN_RANGE(from[i], old_base, sizeof(*old_base)) || IN_RANGE(from[i], old_base->DPB, - sizeof(H264Picture) * MAX_PICTURE_COUNT) || + sizeof(H264Picture) * H264_MAX_PICTURE_COUNT) || !from[i])); to[i] = REBASE_PICTURE(from[i], new_base, old_base); } @@ -1767,7 +1767,7 @@ static int decode_update_thread_context(AVCodecContext *dst, h->droppable = h1->droppable; h->low_delay = h1->low_delay; - for (i = 0; i < MAX_PICTURE_COUNT; i++) { + for (i = 0; i < H264_MAX_PICTURE_COUNT; i++) { unref_picture(h, &h->DPB[i]); if (h1->DPB[i].f.buf[0] && (ret = ref_picture(h, &h->DPB[i], &h1->DPB[i])) < 0) @@ -2801,7 +2801,7 @@ static void flush_dpb(AVCodecContext *avctx) flush_change(h); if (h->DPB) - for (i = 0; i < MAX_PICTURE_COUNT; i++) + for (i = 0; i < H264_MAX_PICTURE_COUNT; i++) unref_picture(h, &h->DPB[i]); h->cur_pic_ptr = NULL; unref_picture(h, &h->cur_pic); diff --git a/libavcodec/h264.h b/libavcodec/h264.h index 2b85863008..f31a0701ea 100644 --- a/libavcodec/h264.h +++ b/libavcodec/h264.h @@ -39,6 +39,8 @@ #include "h264qpel.h" #include "rectangle.h" +#define H264_MAX_PICTURE_COUNT 32 + #define MAX_SPS_COUNT 32 #define MAX_PPS_COUNT 256 diff --git a/libavcodec/h264_ps.c b/libavcodec/h264_ps.c index 94efaa2f7a..b5b6a44cb3 100644 --- a/libavcodec/h264_ps.c +++ b/libavcodec/h264_ps.c @@ -400,7 +400,7 @@ int ff_h264_decode_seq_parameter_set(H264Context *h) } sps->ref_frame_count = get_ue_golomb_31(&h->gb); - if (sps->ref_frame_count > MAX_PICTURE_COUNT - 2 || + if (sps->ref_frame_count > H264_MAX_PICTURE_COUNT - 2 || sps->ref_frame_count >= 32U) { av_log(h->avctx, AV_LOG_ERROR, "too many reference frames %d\n", sps->ref_frame_count);