From patchwork Fri May 29 05:02:30 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lance Wang X-Patchwork-Id: 19959 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 4F6B8449F72 for ; Fri, 29 May 2020 08:02:54 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 3AF5568AEEB; Fri, 29 May 2020 08:02:54 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pj1-f65.google.com (mail-pj1-f65.google.com [209.85.216.65]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 29AF8680D37 for ; Fri, 29 May 2020 08:02:47 +0300 (EEST) Received: by mail-pj1-f65.google.com with SMTP id z15so2772166pjb.0 for ; Thu, 28 May 2020 22:02:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=p5yO7l+wmlKNJUtofWlV7iTUynUniQNW7SmCXn21NQE=; b=rG+RcF33cCyHKvH/sr9OqUSRc09KastiFJwrfLRUuMDtkVptK0DUEsG7MJzrbSjdJf bFu07HTQFfRl33y0DHuEbcUgaph8Jd4kHCBHbWX6GP+CLbKtsLudAnd70w+zjF9bR8+/ oH7Wgd2tQPcqfRIUbluiBsD7x9Lu8C9dQYUcqkxRwPMik03sFeROa0spfIRPvDrdRpHV e3g5vxumzs7kXJUdlhZJBYWEnGsMZwfDf14FtVaAapP08Rgn+m6YYE7X1mwkUZDycYHy Wcx3B34KZRDTV/q0Y+Mt85GaNYM7ADZBEOuYaM+RCXhHkXXH1eAxyHEqJiAXLygbmfw1 8XcQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=p5yO7l+wmlKNJUtofWlV7iTUynUniQNW7SmCXn21NQE=; b=r6Efpif55/mU1Ylj6HbVH/Dg9zKr9Cl63uCIyAjbisiBSc589VBaIy5C4tA/KlKzgj QWc1EYH37m76mVtjVN8XDS/qlPlDHM3I+f9/1rCsEDAjHWz+5G8WY1aEV9nUPl2qwmqg IqS7rCtz0fuY5b8misUQj+zvOi8zbrZWSiDpCoMXKEi/vSGmaDO7IlfY0r6NmytSc1eb 5cIggCpco1WHruj5IfLsCDL6scxY1UxPmY6wAohLLKlLxXyPUnpfl/Pp0kJjTcNocNjJ uEqGyC1RdID1XZ8kdNct005c/fTUmfM+wZ0ze+VTdV/sYAf1OQu+7PA3rUAMPzxs9NTH Ny8A== X-Gm-Message-State: AOAM533eD5guKKSKFef+l6evDkli66+hIxLfetvfg8WbCHSHIA7Y42iu WYIJTe6SxAtLDEpEoxJ0zMR0Bn7S X-Google-Smtp-Source: ABdhPJzUODlrqtFbOiE4rsQnG16I7id2h7XXXU9CS9MD33FVyYuBKEvop3mrGyUujKBPhpAMVXmZUw== X-Received: by 2002:a17:902:7e4e:: with SMTP id a14mr6895504pln.329.1590728565160; Thu, 28 May 2020 22:02:45 -0700 (PDT) Received: from vpn2.localdomain ([161.117.202.209]) by smtp.gmail.com with ESMTPSA id w73sm6351517pfd.113.2020.05.28.22.02.43 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 28 May 2020 22:02:44 -0700 (PDT) From: lance.lmwang@gmail.com To: ffmpeg-devel@ffmpeg.org Date: Fri, 29 May 2020 13:02:30 +0800 Message-Id: <1590728554-23471-3-git-send-email-lance.lmwang@gmail.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1590728554-23471-1-git-send-email-lance.lmwang@gmail.com> References: <1590674250-32571-1-git-send-email-lance.lmwang@gmail.com> <1590728554-23471-1-git-send-email-lance.lmwang@gmail.com> Subject: [FFmpeg-devel] [PATCH v2 3/7] avcodec/h264dec: replace FF_ALLOCZ{_ARRAY}_OR_GOTO with av_mallocz_array() X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: Limin Wang MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: Limin Wang remove the fail goto label and return AVERROR(ENOMEM) directly Signed-off-by: Limin Wang --- libavcodec/h264dec.c | 60 +++++++++++++------------------------------- 1 file changed, 17 insertions(+), 43 deletions(-) diff --git a/libavcodec/h264dec.c b/libavcodec/h264dec.c index 951b8c4802..b3bd8c8a67 100644 --- a/libavcodec/h264dec.c +++ b/libavcodec/h264dec.c @@ -185,38 +185,24 @@ int ff_h264_alloc_tables(H264Context *h) const int st_size = big_mb_num + h->mb_stride; int x, y; - FF_ALLOCZ_ARRAY_OR_GOTO(h->avctx, h->intra4x4_pred_mode, - row_mb_num, 8 * sizeof(uint8_t), fail) + if (!(h->intra4x4_pred_mode = av_mallocz_array(row_mb_num * 8, sizeof(uint8_t))) || + !(h->non_zero_count = av_mallocz_array(big_mb_num * 48, sizeof(uint8_t))) || + !(h->slice_table_base = av_mallocz_array(st_size, sizeof(*h->slice_table_base))) || + !(h->cbp_table = av_mallocz_array(big_mb_num, sizeof(uint16_t))) || + !(h->chroma_pred_mode_table = av_mallocz_array(big_mb_num, sizeof(uint8_t))) || + !(h->mvd_table[0] = av_mallocz_array(row_mb_num * 16, sizeof(uint8_t))) || + !(h->mvd_table[1] = av_mallocz_array(row_mb_num * 16, sizeof(uint8_t))) || + !(h->direct_table = av_mallocz_array(big_mb_num * 4, sizeof(uint8_t))) || + !(h->list_counts = av_mallocz_array(big_mb_num, sizeof(uint8_t))) || + !(h->mb2b_xy = av_mallocz_array(big_mb_num, sizeof(uint32_t))) || + !(h->mb2br_xy = av_mallocz_array(big_mb_num, sizeof(uint32_t)))) + return AVERROR(ENOMEM); h->slice_ctx[0].intra4x4_pred_mode = h->intra4x4_pred_mode; - - FF_ALLOCZ_OR_GOTO(h->avctx, h->non_zero_count, - big_mb_num * 48 * sizeof(uint8_t), fail) - FF_ALLOCZ_OR_GOTO(h->avctx, h->slice_table_base, - st_size * sizeof(*h->slice_table_base), fail) - FF_ALLOCZ_OR_GOTO(h->avctx, h->cbp_table, - big_mb_num * sizeof(uint16_t), fail) - FF_ALLOCZ_OR_GOTO(h->avctx, h->chroma_pred_mode_table, - big_mb_num * sizeof(uint8_t), fail) - FF_ALLOCZ_ARRAY_OR_GOTO(h->avctx, h->mvd_table[0], - row_mb_num, 16 * sizeof(uint8_t), fail); - FF_ALLOCZ_ARRAY_OR_GOTO(h->avctx, h->mvd_table[1], - row_mb_num, 16 * sizeof(uint8_t), fail); h->slice_ctx[0].mvd_table[0] = h->mvd_table[0]; h->slice_ctx[0].mvd_table[1] = h->mvd_table[1]; - - FF_ALLOCZ_OR_GOTO(h->avctx, h->direct_table, - 4 * big_mb_num * sizeof(uint8_t), fail); - FF_ALLOCZ_OR_GOTO(h->avctx, h->list_counts, - big_mb_num * sizeof(uint8_t), fail) - memset(h->slice_table_base, -1, st_size * sizeof(*h->slice_table_base)); h->slice_table = h->slice_table_base + h->mb_stride * 2 + 1; - - FF_ALLOCZ_OR_GOTO(h->avctx, h->mb2b_xy, - big_mb_num * sizeof(uint32_t), fail); - FF_ALLOCZ_OR_GOTO(h->avctx, h->mb2br_xy, - big_mb_num * sizeof(uint32_t), fail); for (y = 0; y < h->mb_height; y++) for (x = 0; x < h->mb_width; x++) { const int mb_xy = x + y * h->mb_stride; @@ -227,9 +213,6 @@ int ff_h264_alloc_tables(H264Context *h) } return 0; - -fail: - return AVERROR(ENOMEM); } /** @@ -270,8 +253,11 @@ int ff_h264_slice_context_init(H264Context *h, H264SliceContext *sl) er->b8_stride = h->mb_width * 2 + 1; // error resilience code looks cleaner with this - FF_ALLOCZ_OR_GOTO(h->avctx, er->mb_index2xy, - (h->mb_num + 1) * sizeof(int), fail); + if (!(er->mb_index2xy = av_mallocz_array(h->mb_num + 1, sizeof(int))) || + !(er->error_status_table = av_mallocz_array(mb_array_size, sizeof(uint8_t))) || + !(er->er_temp_buffer = av_mallocz_array(er_size, sizeof(uint8_t))) || + !(sl->dc_val_base = av_mallocz_array(yc_size, sizeof(int16_t)))) + return AVERROR(ENOMEM); // ff_h264_free_tables will clean up for us for (y = 0; y < h->mb_height; y++) for (x = 0; x < h->mb_width; x++) @@ -279,15 +265,6 @@ int ff_h264_slice_context_init(H264Context *h, H264SliceContext *sl) er->mb_index2xy[h->mb_height * h->mb_width] = (h->mb_height - 1) * h->mb_stride + h->mb_width; - - FF_ALLOCZ_OR_GOTO(h->avctx, er->error_status_table, - mb_array_size * sizeof(uint8_t), fail); - - FF_ALLOC_OR_GOTO(h->avctx, er->er_temp_buffer, - er_size * sizeof(uint8_t), fail); - - FF_ALLOCZ_OR_GOTO(h->avctx, sl->dc_val_base, - yc_size * sizeof(int16_t), fail); er->dc_val[0] = sl->dc_val_base + h->mb_width * 2 + 2; er->dc_val[1] = sl->dc_val_base + y_size + h->mb_stride + 1; er->dc_val[2] = er->dc_val[1] + c_size; @@ -296,9 +273,6 @@ int ff_h264_slice_context_init(H264Context *h, H264SliceContext *sl) } return 0; - -fail: - return AVERROR(ENOMEM); // ff_h264_free_tables will clean up for us } static int h264_init_context(AVCodecContext *avctx, H264Context *h)