From patchwork Wed Jan 5 21:19:07 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 33094 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:cd86:0:0:0:0:0 with SMTP id d128csp1090051iog; Wed, 5 Jan 2022 13:19:33 -0800 (PST) X-Google-Smtp-Source: ABdhPJwTO7L5j0FhB0/HVuE3deb33iwvGpL/uJL5u8yriS96P8JUdLACLoMU92Kox7saqqCPis/P X-Received: by 2002:a17:906:6a90:: with SMTP id p16mr275680ejr.115.1641417572985; Wed, 05 Jan 2022 13:19:32 -0800 (PST) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id qb4si13867ejc.57.2022.01.05.13.19.32; Wed, 05 Jan 2022 13:19:32 -0800 (PST) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@outlook.com header.s=selector1 header.b="Ov/9cW1d"; arc=fail (body hash mismatch); spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 7B25C68A867; Wed, 5 Jan 2022 23:19:24 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-oln040092072011.outbound.protection.outlook.com [40.92.72.11]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 1CE7F68ADE6 for ; Wed, 5 Jan 2022 23:19:22 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=mO2g95JQXaETyO6tBV4BpC93RDRqk/8l/OHk3+PoKIxSPm2qbprbwYg+T77ZILqEmNggDRb2MqZMeTO14IONXYVE9ItgLxDrcu/wSr725r2Xy3fdDJuSyh8lqshbKDQeYU3JjDBzBboHizpfLr6WSi+JihpJNJcz/RDRXgS9bVMHp/MvSMz69Pe0TzNLLWuIwyVtfVjT1DnjrlvjOlCLTpVNcBuAyWY0Qb1tFJXRuv4/k4g66zQg/BPID6f/QDrE9ePy+rCbVSbh94TGA25XsOShfKNiFwKyOXPj0YINxUFl0LJhlgNyt6kZ3MogTVWRWcoYhjq3eTsUa4+eGpwohQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=l/50PhzHHlZNlmvTiQltFatTJAYYdAOHI8Uv1TnfJFE=; b=MTwrU3E/Od2AOpj3rO6mjQK4ywg7SPFOrFAsyeQWyUHO/BGcH1RZJeMJWWNNQVfNbNiMkSST407wqe1VsI2pRNb0xtdI5yzRFVScSD9HKZM0jmj2MvTa1ftI0i9635gbv+EYxz4z6xWQWgUcWVrXwbwTk7iDRVe9eM3X+51Q1AJoV4vLrrHz7qOFtHcksybT+j9h0w+mXEnACe4NZ6kfMRykb7NFqOoUSXzaEUy+bXlMehvSrPmhf2zovywQpYYNm3ZUNsbMcdat20MOcDu4mvhE1x9DhZmTtFz9H8Zqr3ZqZLjUPNI82B3RSf3Z5B7s8tDbArVgDpYLBz3StJ9fqA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=l/50PhzHHlZNlmvTiQltFatTJAYYdAOHI8Uv1TnfJFE=; b=Ov/9cW1dT5Sh/vzwpFiljs6HetjcuI2CKMQTsocAkdV81sXsg/uUsAgKOf5/eeWpuDwrCWrKR4TGxOBM6x7XrXtEnE9cq89IaP0DPIWF6oavAVwqOsZBPWFfILBVAH8bWpCPWW5yYhalDccXDxt/P73VH/AfWKJ8OxPzvukNn/UQaZ8SyJfh5SMjkNrcqMZAEYyhuM5MN04bqiWLdkkorXA1YryVzPRmvVGDzDFN87D24SYDGe8eBGv8a9MLMj+oSQgaXlROLY9oErBv5amsiRwWnzBYKM92bBNiX0q61Rm2eaOcMzawOQb6W3G7Hguwm+1Oapq6bVe2tKZYP71qcA== Received: from AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) by AM6PR0302MB3398.eurprd03.prod.outlook.com (2603:10a6:209:18::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4844.16; Wed, 5 Jan 2022 21:19:21 +0000 Received: from AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::19fc:be9f:2c9c:53f5]) by AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::19fc:be9f:2c9c:53f5%9]) with mapi id 15.20.4867.009; Wed, 5 Jan 2022 21:19:21 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 5 Jan 2022 22:19:07 +0100 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [7F3fdWx3YZpjAga+pkNq1QFMb3Ma3FZ0] X-ClientProxiedBy: AM8P189CA0011.EURP189.PROD.OUTLOOK.COM (2603:10a6:20b:218::16) To AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) X-Microsoft-Original-Message-ID: <20220105211908.652136-2-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: b6e3f4c5-1878-400b-2cbc-08d9d0910a4a X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiR3EehW4kxQzdNcP2D/mG1J9Co1q/+uUsydTM1ltaItHcCWJlr7E0xKLBhR1sgP1GzcPEQpG59zWJdEwCXV6IAzxZVywrCyQnsJNxoa/jhjTv6ciOteQqosc5Vzy1lvBGJKzxJkHEuqrdZhZRLKoKjG+dmkGdxD+3npL2gi5r/vHA475WJbislVnQykL9apj3/+Cm4Be34Br95kvmP9YmstlMlfg5PtrYOGsFKNiyB+924u5LgY0w5YVI/W/LGWdfcxd05zjyiFe8yYH0ECxsWPHQMavHN6bbRTL5Z+nWjUmCcLk5xFkr/D1R1iVmz4rkD4f9FpqrEKfiyuVbbELsh8H8Tr3Pgr+mhRO+0NIuwG9QUYgfdaxPLC73Ndzew5oMZ0pCpCXVux+C2X3fj4ehca41CUmaYB9QJ5sE0DQshTDSKwW5kA4ZYoZPgaMX2bU5wkSKaUq6dX8KqGylO9oV3Xw3Cf3KNg8UGY8Uc44xp0+QudFcbWEDCm074BWSerHyC7KCH1JvejsXNrh958ueiAveIYDBGpWpu+eGtCJz7Gp0BIr01QLInrJzHB84TUF7Raqy09nZSAGSzb30FjL3Yo+aevmZ/HyeHjSpCpK0gaASnKc2A8hkdtbKsXYjaUMJm+uesL8akAmLrOJDHiRdxkes4ReH+41afmgXFFbrVvT2K5Kt/gIR+ezrYDUEprmi5OGNgdWN0xeRQSHH8flAKqBaZQFKZdHzAsHJZhmx3AYdjQP9OymvjNVaqIbiavZWA= X-MS-TrafficTypeDiagnostic: AM6PR0302MB3398:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: iMePPk1BSbeJWJEqn/geLGb9bo5Juo4rtvOnvCRNtOCVY41H/oWCRUY/fQZXucTubclLEtH5nTjfaSMs1eO3p0YlhK0TWfLU9aznWjONQPuz3jP4yzjBccc/oGcIJvcxo8wNxKsynT2sy5M9mpXDmc7Zbp+W0G/6dVWtdGOBQYckUL1mZetsdDgnXxnAtatE5oIrA4D/x/U+MDkCIbK5poR+VyzEqoM1WQn4tKTb+UmYnBSIddzjy0+ZJK9vbihzexpM3ZMXlYPgLvjke+t9nC/ymmIRlSV9DzFd1uBakUL2VUzx2YK4KDOWPSplsamarQ97YZJyKrf0KriY8uhtM2b/fZIUeujRUiCpkP4cmFGglT7qK4JFXgFz26VaFrlpjMBEYUh6McVSaq57+Q2Al0BujmoiuLNZWVT8Nk13R2B2oHmbJwzcYTgOZmpI3zHXgWyH/dmNi6KdpYaKp4xNFwx8/SU9jeb4hievwhGAPmzATnFj0YKKymXW7RUV//tD/OtCGnFMxOWCw+K+eSJDocHb/x6kRQFQGD2Kru/jwuxW6w2T1C3uHkZe3lU2SgV/pfPGvp/QEmIBW8/lVmqcFg== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: KYSFYR8pjT7hMpOROa1CUutz4a/mKT+g3ki4LM06dhwNLQVsawFB+lRc6KsUdSjlJcjH6auVRaL2x6Gry+AlBuYPm0+/ZebAHnUxbPCeTBkFDD5xYtcwQDCyOisdoIZBszzaUFfZgDfSlvTdEX3LErKZYrF9I2dF54jbKdttxg00Kh9XEXre+oGYt+9BC6MdHbpZmiNTMQbtPEh4YRCQOC3oTixZVHJKU5Km7DbMSKTL270h53jAZTC4/NyOl5wh3y8d2jkVTKJgBG75OmuUN1rxYtgyzHY6QlSXf3btemJbEZz8lEz8+eKePDm0vt5TKhw9RsJ6IQu3zf6sca7loRToAARD+Ah2ezkHbA8LdVRv00nxI6LCNcaCveCpjS9U28fgQXv8lPGKYsKKgHAmvZmQt69FF0z4DYLBtlN7hm0t855gXUmd0qITDFVDK1aNh59q/nSp6yRcKzYBoFCMVtoepR4yf4vSWIsZqJAVnnAqNKb566lOEAJMIZM/jbfGrVWrhh49q9ngn2+SOQse0TMXuMjI+qkurv7MRNR4SH3B8MYTmoqEDdADK4LzxrhvUoD8U/kMsgjmMribFWQoifh4Qq/nsZKgJSA/LAITxchDrmEKaTXMwJ2+B/BQ5eEzcDX9dEFW8AiH9GQQ7uk3JgBPXJijl2VfglHxfImf5F7RCLy6EcRVbuHM5gmYE3VHc0kQaeP0yBhqefubBa2G/cH/8aWc1jgfQcc43qqZ2MONuD1gpQuk1iuE7dicLQUDFGo4fFa2a0e4JCklUsEi5x5BYOMI1S/TXxXOFuBBreO9abdZx1aD8X3hVqBhn+FVBayVHTLl+Hnmp8E34O7urhFBdS1PQvtKCfwxvF5HtwAXik/3BVKfj2EaFpab/xLnVtLx4qZI08Q35xVZgbcJLduFjLhiv6cXa8x0CKjZRkVaybzYzpj9r1CyGcSTrYwmioVTmN4116kZKpEnC2uw6Q== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: b6e3f4c5-1878-400b-2cbc-08d9d0910a4a X-MS-Exchange-CrossTenant-AuthSource: AM7PR03MB6660.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jan 2022 21:19:21.3615 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR0302MB3398 Subject: [FFmpeg-devel] [PATCH 3/4] avcodec/hevcdec: Combine related data into structure X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: fgMkBzNZPLVs Signed-off-by: Andreas Rheinhardt --- libavcodec/hevcdec.c | 28 +++++++++++++--------------- libavcodec/hevcdec.h | 8 ++++++-- 2 files changed, 19 insertions(+), 17 deletions(-) diff --git a/libavcodec/hevcdec.c b/libavcodec/hevcdec.c index 85a1b9f47a..fc0dc7a584 100644 --- a/libavcodec/hevcdec.c +++ b/libavcodec/hevcdec.c @@ -78,8 +78,7 @@ static void pic_arrays_free(HEVCContext *s) av_freep(&s->vertical_bs); av_freep(&s->sh.entry_point_offset); - av_freep(&s->sh.size); - av_freep(&s->sh.offset); + av_freep(&s->sh.entry_points); av_buffer_pool_uninit(&s->tab_mvf_pool); av_buffer_pool_uninit(&s->rpl_tab_pool); @@ -915,12 +914,10 @@ static int hls_slice_header(HEVCContext *s) } av_freep(&sh->entry_point_offset); - av_freep(&sh->offset); - av_freep(&sh->size); + av_freep(&sh->entry_points); sh->entry_point_offset = av_malloc_array(sh->num_entry_point_offsets, sizeof(unsigned)); - sh->offset = av_malloc_array(sh->num_entry_point_offsets, sizeof(int)); - sh->size = av_malloc_array(sh->num_entry_point_offsets, sizeof(int)); - if (!sh->entry_point_offset || !sh->offset || !sh->size) { + FF_ALLOC_TYPED_ARRAY(sh->entry_points, sh->num_entry_point_offsets); + if (!sh->entry_point_offset || !sh->entry_points) { sh->num_entry_point_offsets = 0; av_log(s->avctx, AV_LOG_ERROR, "Failed to allocate memory\n"); return AVERROR(ENOMEM); @@ -2552,10 +2549,11 @@ static int hls_decode_entry_wpp(AVCodecContext *avctxt, void *input_ctb_row, int lc = s->HEVClc; if(ctb_row) { - ret = init_get_bits8(&lc->gb, s->data + s->sh.offset[ctb_row - 1], s->sh.size[ctb_row - 1]); + const EntryPoint *const entry_point = &s->sh.entry_points[ctb_row - 1]; + ret = init_get_bits8(&lc->gb, s->data + entry_point->offset, entry_point->size); if (ret < 0) goto error; - ff_init_cabac_decoder(&lc->cc, s->data + s->sh.offset[(ctb_row)-1], s->sh.size[ctb_row - 1]); + ff_init_cabac_decoder(&lc->cc, s->data + entry_point->offset, entry_point->size); } while(more_data && ctb_addr_ts < s->ps.sps->ctb_size) { @@ -2675,9 +2673,10 @@ static int hls_slice_data_wpp(HEVCContext *s, const H2645NAL *nal) cmpt++; } } - s->sh.size[i - 1] = s->sh.entry_point_offset[i] - cmpt; - s->sh.offset[i - 1] = offset; - + s->sh.entry_points[i - 1] = (EntryPoint){ + .size = s->sh.entry_point_offset[i] - cmpt, + .offset = offset + }; } if (s->sh.num_entry_point_offsets != 0) { offset += s->sh.entry_point_offset[s->sh.num_entry_point_offsets - 1] - cmpt; @@ -2686,9 +2685,8 @@ static int hls_slice_data_wpp(HEVCContext *s, const H2645NAL *nal) res = AVERROR_INVALIDDATA; goto error; } - s->sh.size[s->sh.num_entry_point_offsets - 1] = length - offset; - s->sh.offset[s->sh.num_entry_point_offsets - 1] = offset; - + s->sh.entry_points[s->sh.num_entry_point_offsets - 1] = + (EntryPoint){ .size = length - offset, .offset = offset }; } s->data = data; diff --git a/libavcodec/hevcdec.h b/libavcodec/hevcdec.h index 157bc6926f..76ad262558 100644 --- a/libavcodec/hevcdec.h +++ b/libavcodec/hevcdec.h @@ -246,6 +246,11 @@ typedef struct RefPicListTab { RefPicList refPicList[2]; } RefPicListTab; +typedef struct EntryPoint { + int offset; + int size; +} EntryPoint; + typedef struct SliceHeader { unsigned int pps_id; @@ -300,8 +305,7 @@ typedef struct SliceHeader { unsigned int max_num_merge_cand; ///< 5 - 5_minus_max_num_merge_cand unsigned *entry_point_offset; - int * offset; - int * size; + EntryPoint *entry_points; int num_entry_point_offsets; int8_t slice_qp;