From patchwork Wed Jan 5 21:19:08 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 33095 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:cd86:0:0:0:0:0 with SMTP id d128csp1090144iog; Wed, 5 Jan 2022 13:19:42 -0800 (PST) X-Google-Smtp-Source: ABdhPJzuNXWjgM+HfKhSezz7iM7zKFfsmb1yT12o1TDSpUXqtkaT8NF9F70uS8ENfCeLiIsCMR1t X-Received: by 2002:a05:6402:8:: with SMTP id d8mr54360201edu.61.1641417581844; Wed, 05 Jan 2022 13:19:41 -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 r20si5423ejr.392.2022.01.05.13.19.41; Wed, 05 Jan 2022 13:19:41 -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=MbGx+gBC; 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 9285F68AE3C; Wed, 5 Jan 2022 23:19:31 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05olkn2088.outbound.protection.outlook.com [40.92.90.88]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 1D05868A8EE for ; Wed, 5 Jan 2022 23:19:29 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=OJ8oBJeKyZmHhkErk9qzWFi3Z7tiiJqLCs3hCIlB2/f2tRkyRIngNqNDJbFEu72wbDQr4XgOU/CCVw59uCGa2dFTBk8T8E5YbG+Ruh8nKzQOg5PD/unoZsMNy/7MWWSogQeHNEr24LIRp6VWuL9mHGx+TBy0+PPoKKIiZendfA6vUMORMkVex+WKh5vQH3gPgCkFEyaQIIrljErqdAyhjA4KiR1/in8jd1n1SKKuZetGgqvf9ABsgFGZO2P5wS7syrCrUqICq29BCIDQezWXPcexqSL8SJR9cv6OF39Kpt0rT2FH3LYo1LTkAj1fwkg9boH5wLmB+t+U1op290irGQ== 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=mEpI4nBHDwcEKZeqbHbNygBPCfG5PnDgEXvc95rrOew=; b=k17tOqhDuT7olNlnLLhy6VjFT1uWWeKo1bIYVnRpBoecOlho5xROK5A/caWWyC8rwXwmjOWQEOXBKqMmr1uFgy99oYqKCl87rTEs981ouNv6RqvP8fUDKqwJ/bI/HFyka7yigqZ7bnJnqdwBop7Phjv0xqn6cM3wgUlQF6fHb19BWdzgy94YCD24rsx8UUuTf8Mc0FtDLMnU05x7dGmf2zm39FqnXtDOJ+ZpeGuXOwQvmWi+RRPFeZ7uK9+LCMSQdC47VyEpt2HfHhMfpVr3snB68pAlejUuJvhVByxdzEUWCEbfkxTbu6JSoDQSz1ZMupWr6LujR4X+4qzaIuOhNA== 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=mEpI4nBHDwcEKZeqbHbNygBPCfG5PnDgEXvc95rrOew=; b=MbGx+gBCi0XbBilYiHq5VCqqZtF1JJiFsp/xe4YhbuC85ZoA4Vp1haRFdZyDzaq3L26Fl8qsPvdg47+PzDdpz5SiCEj+Skmqb3hiubAq8RXyCsNqsmdT6v8wK0L+/CF2Edg+OsNGXHEKy+9m0jj8KfXM+cxwJ42fv7jZQF0FV1k7UXZzzSWuC+E3dYodf2K0I65uW5I220gxeV1Kp2eQzwkkeTixPajwFmJLmDJIh0mbOEBIFSGr2NXAKd00MTFz6Gv1NKSEU7OKF7uK9xHPZ3DoNxBQXB2+XyFbwnSD+RQPC9owDkoquAcjhrzT63C4vaVkOxRD/SaqqKPyy4sQJw== 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:28 +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:28 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 5 Jan 2022 22:19:08 +0100 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [PiY2E/uIU61tLVbCu1yrTLP39S9euoA/] 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-3-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 4ea35a0f-7fe0-4233-ac49-08d9d0910eb9 X-MS-Exchange-SLBlob-MailProps: gjx25WM8ZNWm3GLoeUntTG6KfWWWbWhlUZwqY0FFvGdaYAeweS8kNPIVdB3FI2gPeX6/npVY4in+y+ZfBE+NBuGH4mxRPweq7uPC69FOF94790fNix9EX9hLggQ7VctdqGvK9pnPTtsqklPMjkto4qIc4cWfyZNEzCQEeddex29T3Mss/RyNAeHqVNtsk8Cfw/HRy9eVxyUBBN/c02JdaeIS26voL/j3xM+Mo5lrvoEqplOcONkfKqpZDUTRmcKh1tanJsVnR+/FZgFX41nxtsOMgcfkcuY+VhiHPe4/nLmc66tCmvnClD4LRPcZ98exPPgmj2Tdu99K9jREsdwLhPaQYWVDDbh32fMsqw2gllNT25i/43a0BSP3xsabFysRk9/ea2iXEamXx32rFpgJKE9qghbx1utTEgOH9yKxGEPMQmWDeh4EareKGvV6rcQJfK5QZ6XPVJOPdAN+OTR4YOz1JQSzlDluzW+xvMNwz6rEtVIOiy5Ig5zF8IW47GYXa9PG3do2d9wJilp2WTLgVx4J4fGx9mOn3I0YDs9oIoXfrnH6h4pbwkFHRDP3CyzeJGlmQUKkbXFqiz2jI5yGIjhuDCIXXYg2qo4KUKmHdIFXqEK/wp7KyK9IXr6cGxKsgn1aWYGSZBVXEzmfwqfjqCIuVZa5nz/9FSaqX1PX+2iyY+bmXgXtIfWMMEfaU4HU+/Wx9Cvjdd6bJteK3/Lb5CJSoTmBh1xIu6VFF02hTbw= X-MS-TrafficTypeDiagnostic: AM6PR0302MB3398:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: G4XLDIFBgNc9UMuLLAk0QoTeAruJICQ4z8+QC9otHfSlvhr10zoL/Ve2xpsfRq04ZpMBN68iSB3RZYTkPPjfq4zDtBeDwxWVfVR1A+ifzKFRP8Lsfp/5ZXjIVDpaChuptbVaJFBW8rFuaogAlCIkkY6Cb9nOwMC+TloMngsaGKTmZ+8PFiI7W47Ve4VwDPUUIkYaKbzpwEBuMdHvOr8S1EeetRw3j8bqFGzV2VPQ6YQra3FwMA6h1cWf3AM/vGUgvhDmYagneqgG0XRqM0xhOEpu4MwutaMjVpFSsxRZlYu4z0CuYWHmLt3Znbeop1qoYAWSBwNQJ/vqUWydj31c3MBe8SRlKMezAuV0aVIOI7XV2Vpnv7WvFjE37mkCP/rz2PMn+ma6NZCwE3exCIYWe0j8NhzNRpClHu2EooakTMO6IzbvLM4p5Xb3HY/sU3tLL6w2bx90Ht7PXw0Oz9qDCWkDAVmxKRknP3NDBX6qugR8ScCj1bUjxhxoabeRnQwvstLmFBDK5aJnb8RaND0MPzm5Q2B/KUItMophpgt6iSiElkeb5VYAdlFW5VhTsYFRx6s8NhFdK6IRbTGLbbnN0A== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Kl7uNS1YZR0At9tYh29p6/kAoI9OvUGKWldcTLTQ/tWK95VA/i90lKMMAHeIj2J4SQTjMi8zs2GqC2mi0Tq8cmnxIFzx9D8IS82AkBeGq/E4/45Uk1uAlQ5Tvtm5hfvWHklqyFn3wdWtp5jd/talafTjplW8FpEuc/v2YVA0hzKEQ1gNIqdjgTfwTtUY42xoQCpeMB3ow5sbJN3Id2FlEAIA3ibf0x/ellIi4aurOWTF55Y2nlFrMbi3MlI78PbHEvskOfpQmTDbPK/TIvr+sdh/rLNHYi2iRiX8kJzQTf2PeU/VyEqtbkirby7cIMtWLsGYTBsTnmRANf9g08SOZ1qICrtj2BIaqgEpUH7iA4eko60IMuS6gAKn01wuz1jgemcdvQAAzi+T/vKwQ98JwGjrDYQ836ZhozMmpwabDTwlXmZ6JRprY6cgPgjhUSqe8XskkVg0zszrjIOQt2UpTATABmlidE09EurENsO3rbBhhJdnlSVZMisoCiHZ3whg6SXjzpXWwnYKBzF4y2noIfrIlaQA+7hvHBfLlDibwYLniw36n55h7C+cigOjJF+FSVaXodUvUHjjbUn/5D0oo1f+IDFBB6bAGPxBLlZUEgb71/Bnn4XD8JoRFfbi/sepkY3vg2wAmpItIMEwC5W0O4dnUfkgJhCx/ZNMEBTj46OI/tTiIomf3ANmT0nyo6hrLQadnwQVd/5PnQMk+eHcBMoXwVUz2pJBOzd6wrrP3aG3bhms5evVANwB15SnUOdQ2FPmW70yw8VYhEH8znP1LqK3YOYCx71w+OZoCi2okcFgp40S7uKkfDh55xm18DEAoQ0uqdWzcgmHhAJByEOzNsv1t7ErjINKGPHvGhxrFSETOaGjj1mMjT/QtVkJL0KUCirIr8pQoyINoMLn9JtJz7+lrGF0OmZQmLjuIZuLUgcZLWNAkHYIskOQ2k1iaSCXkBkZrBVjCLD0JTUbndrEAA== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4ea35a0f-7fe0-4233-ac49-08d9d0910eb9 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:28.7239 (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 4/4] avcodec/hevcdec: Avoid redundant entry_point_offsets array 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: eGo57S5drchq Instead modify the offsets in place. Signed-off-by: Andreas Rheinhardt --- libavcodec/hevcdec.c | 19 +++++++++---------- libavcodec/hevcdec.h | 1 - 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/libavcodec/hevcdec.c b/libavcodec/hevcdec.c index fc0dc7a584..6aa14455d0 100644 --- a/libavcodec/hevcdec.c +++ b/libavcodec/hevcdec.c @@ -77,7 +77,6 @@ static void pic_arrays_free(HEVCContext *s) av_freep(&s->horizontal_bs); av_freep(&s->vertical_bs); - av_freep(&s->sh.entry_point_offset); av_freep(&s->sh.entry_points); av_buffer_pool_uninit(&s->tab_mvf_pool); @@ -913,18 +912,16 @@ static int hls_slice_header(HEVCContext *s) return AVERROR_INVALIDDATA; } - av_freep(&sh->entry_point_offset); av_freep(&sh->entry_points); - sh->entry_point_offset = av_malloc_array(sh->num_entry_point_offsets, sizeof(unsigned)); FF_ALLOC_TYPED_ARRAY(sh->entry_points, sh->num_entry_point_offsets); - if (!sh->entry_point_offset || !sh->entry_points) { + if (!sh->entry_points) { sh->num_entry_point_offsets = 0; av_log(s->avctx, AV_LOG_ERROR, "Failed to allocate memory\n"); return AVERROR(ENOMEM); } for (i = 0; i < sh->num_entry_point_offsets; i++) { unsigned val = get_bits_long(gb, offset_len); - sh->entry_point_offset[i] = val + 1; // +1; // +1 to get the size + sh->entry_points[i].offset = val + 1; // +1; // +1 to get the size } if (s->threads_number > 1 && (s->ps.pps->num_tile_rows > 1 || s->ps.pps->num_tile_columns > 1)) { s->enable_parallel_tiles = 0; // TODO: you can enable tiles in parallel here @@ -2657,29 +2654,31 @@ static int hls_slice_data_wpp(HEVCContext *s, const H2645NAL *nal) offset = (lc->gb.index >> 3); - for (j = 0, cmpt = 0, startheader = offset + s->sh.entry_point_offset[0]; j < nal->skipped_bytes; j++) { + for (j = 0, cmpt = 0, startheader = offset + s->sh.entry_points[0].offset; j < nal->skipped_bytes; j++) { if (nal->skipped_bytes_pos[j] >= offset && nal->skipped_bytes_pos[j] < startheader) { startheader--; cmpt++; } } + /* Convert the entry_points offsets from being pre-0x03-escaping + * to post-0x03-escaping and set sizes. */ for (i = 1; i < s->sh.num_entry_point_offsets; i++) { - offset += (s->sh.entry_point_offset[i - 1] - cmpt); + offset += (s->sh.entry_points[i - 1].offset - cmpt); for (j = 0, cmpt = 0, startheader = offset - + s->sh.entry_point_offset[i]; j < nal->skipped_bytes; j++) { + + s->sh.entry_points[i].offset; j < nal->skipped_bytes; j++) { if (nal->skipped_bytes_pos[j] >= offset && nal->skipped_bytes_pos[j] < startheader) { startheader--; cmpt++; } } s->sh.entry_points[i - 1] = (EntryPoint){ - .size = s->sh.entry_point_offset[i] - cmpt, + .size = s->sh.entry_points[i].offset - 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; + offset += s->sh.entry_points[s->sh.num_entry_point_offsets - 1].offset - cmpt; if (length < offset) { av_log(s->avctx, AV_LOG_ERROR, "entry_point_offset table is corrupted\n"); res = AVERROR_INVALIDDATA; diff --git a/libavcodec/hevcdec.h b/libavcodec/hevcdec.h index 76ad262558..9ac04555f4 100644 --- a/libavcodec/hevcdec.h +++ b/libavcodec/hevcdec.h @@ -304,7 +304,6 @@ typedef struct SliceHeader { unsigned int max_num_merge_cand; ///< 5 - 5_minus_max_num_merge_cand - unsigned *entry_point_offset; EntryPoint *entry_points; int num_entry_point_offsets;