From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 8575B40B44 for ; Fri, 4 Feb 2022 15:17:14 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 2134768B27E; Fri, 4 Feb 2022 17:17:07 +0200 (EET) Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05olkn2060.outbound.protection.outlook.com [40.92.90.60]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 3DE3468B274 for ; Fri, 4 Feb 2022 17:17:00 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=HaVrbDkv/+SFh0LJ4NXT3FDMQsUpEuYBrsB2+LMp7jXxfE7nAPv67XqXTBEibBr3I9RYlicdNjLp/OefYWQcF27bzm3v3/gJoF8whLHaN1p6wJC2pewQD2uBCbNVzGL/dnmwliIrw3V7VIrirhQ61EWPqVL3LU+LJyEjDaliyPWzPeEhY/93YbAFBTa380TvovuWtn4rI3W9aLdKthEm92/9YzJGZYtSbGiCy9O8HG7qBzFi+QKiHmc1izwszysNwhycCkmfE/y/XtRAnmBp7WpYXfIc5UdwoW5qDGYQ4YSZ9RQImqB4hCf7hu5HaHn8z47aryj+7tsud5AvxSJSCA== 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=Zu/rd6TbmSv/02Gtu0YBT7Yd/AAB9RxF8xkFoh1MmCY=; b=lPTDXH3hhM5Zu6pPVR2HkGaabWCRkXmpW452HJVBTQIxP6hzmFbsSveAA5Rk3XJKcFAg04keFd41tcpxNSFhQkNcX2JdUo3SUtR7BaygIuC4cS0aWJlpn8HnZhP9j5YO/cXXm8QRf5n3LqmuKbVgmjmaURTzG7SZfvAO7kWlRj7q4v2aW7Ke0P98AUXNo5O4e4x+koYtzBe2s4JOikaxqKoGvM5awW3dis+iHGw+BuMCVxqLb7Vaps6KSF2YAXcXeC2F5atc63ae0xpgUTch7zyKUAz7hqvZRXor+a0ul1A6yXDOAwIfKyztLduAcvFQGWuEA3TcdzqpE5HWIEdtTA== 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=Zu/rd6TbmSv/02Gtu0YBT7Yd/AAB9RxF8xkFoh1MmCY=; b=eldfPeNeTgyfOHEwIWt6jDwxC0y/mb8/Mk4yRX8s4Q1eflJht5lZHqrfa02huFZPgClgXoFdXo/pq/YwyJrXVlP4Oyqw7vw3d1KsJhXalO/oruHE+VKMNja6boiczVHWL+WhxiLtdH6Pj1ZxyerBhq1SgK0BWRD68DgOVBNmrp1eOo3EV1k6EvqpeQzzYD4P099BjKOn2ddBgA6j8td1Yy83fTVNxaVnRR9YTkOkg/8H3cgFfZYnUxnvNMvcUckm0FQhujFv6I2kRq9bwrayoxQPHITDqjV+V6sJya3eHMWXbo4MVXdkB5T4hvoTdRHKU8UDF8DCGtkc+YodOaw59g== Received: from AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) by VI1PR03MB4703.eurprd03.prod.outlook.com (2603:10a6:803:5d::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4951.12; Fri, 4 Feb 2022 15:16:58 +0000 Received: from AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::ac56:2ff4:d304:ab22]) by AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::ac56:2ff4:d304:ab22%5]) with mapi id 15.20.4951.014; Fri, 4 Feb 2022 15:16:58 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Fri, 4 Feb 2022 16:16:45 +0100 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [YWvRYqq+IlUmJ3bDEZ7p30oIALPejjYV] X-ClientProxiedBy: AM5PR0101CA0032.eurprd01.prod.exchangelabs.com (2603:10a6:206:16::45) To AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) X-Microsoft-Original-Message-ID: <20220204151648.2148917-3-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 2f64b249-2979-4f8d-ab1f-08d9e7f162fc X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiSjtu7sMDnYCqklgc/dtjmmeeI6J50wBVBJueMvqx6KlW+nCNcBSCFuZtdi1VPWkf4OZcj5TBrDxWEYEC0RfuInodbd9U/z0LTEB6lTE6LDgrjm26jdPquiF57WzADRemoBXWhB7Qk7WzN5LVT5yHJmv0gkHh3u2Pi8kIfIsrj86zS63/fSrz+ejhnV34wrl+6oXyKc+W7RrEZ/t4OjqKxN2gaSXazauDaYrNDldLJWCgCGtiZ9e8FXIEF3XPOnf1Ycz8Enc0wQrP+kGGupdhYPoglpS2mdjkHCa2bI6dthQ3tIhOQ6Bt5vrtoqzTuSOKQdBnANTXEV4E5ZFvyXtDIPqow1XXzH2xFeUOBm891k3p7TzSW76DGVPhPMElaJyRQRiofxZApMFA6P3m3qi2Sd1zQ8QtbHK6PLuu/vJt2/nFJ7LnjImjNfvKK9Q9eP6LNxnKy37yDsWwNFqJGWiwZzSd2MLAft6XOtAzL5Jxabkn0M5oqnwn29Wh+iqYXlZOETeWeTtNsAvSKWRuGt8XgWE6kt0nuPGQsdf+9isaleOOtSsfJRYUy6HC7WZf1Ob7V01wyeOtGSv+UsdGTysITk0H8YDiq0pAIB4lLhfCA78CnuBWPK44KE3sgGZCgXyxZ/hlF8ZQul0bGeblBAKzBaIcFqc389lH6x7tvYodZsbNGP31C9xK9xek8F92lHe3kX/YfxfoC8db7yk4R0lxoa6yM/Kpfvj1PSEOzU1VjiRbBIUCeaoDPEpEWXci+d8Sk= X-MS-TrafficTypeDiagnostic: VI1PR03MB4703:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 9/aQpsBGrzh2uiZ4gD+VxNqXq0UcrLVOGZLqE3RFJDDk7yiyE1ndTFLzhdIa+S9RXPh2zEaN/02kQzYcUK3kUTA33CQPAFEWTaiAjnDEsdF9U33qzkDBffT0g8IdmRfd9yLIQ9SdoZhqZMQlxR6TGptXJ3Dxsk36CqYGQDnBAR6XM7MnJJB9uHq3jJLH0/JP6sKsrIwyvMP576eSLxM8jTS/Cl7x2/NxQew7uRENdL3JU0vBbqoDfwyHuEYuheIZq+Gp524OoVyGkioHhWCkO5++vvytRsuGeHAZByhPlA9ydJPnlvRXqju1PE4eRYkrJ+RdlTjTZf4vw77sT9SH9TdQG3IIoPMW0XVv7uXnujRkAMOn0mmUrDssicFTZEWTu3k6oBluqfn0fCQOD2mAT4Gu1Xw/zxDOEkBgVtWn0wUkWFgJpU4EgpAhdVF8XvTn4X+AQJ/gBDiSc95oVyNV302ska7nJHUgizgLkNVM2x+1tH8E37Mf9GKGRRStq1QeTNAPMbpiFwm2KQE4Tczw6eBzEA+Upz9A57v3zgv3DaS/7Cc5TecfvEy9fyIOCss0bgQju7w07Jx2wcPaQeR5ng== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?elbuo3cZ91yrmesRgNkLVo9kKS6xcf8HQ/rrmN8oGjoB7X2oBSP+3SXD+3/R?= =?us-ascii?Q?bK30vNL2RWsWfTRSMklOoDblXUy9LRy9/kTzeHwFBuMIFNXhjC5vODks4DLG?= =?us-ascii?Q?+AftEAy77ZJYjHbvKCPq50yxi/MB7EiBHqELTZBeY/+Cp+7dowVtUmWl0jDa?= =?us-ascii?Q?fwUP3KfqKzhfiSaMSPbRNeT4ID/XJxxCZAvk7yi6vH6dFB0Y7rndc5EceNCp?= =?us-ascii?Q?+E0srAacsw+lepwKJjj6ydLdv51j2gkU2CbFlBF4UA5JJqDP/IpXmmQcNbow?= =?us-ascii?Q?xjwB9LgXZmL6JsPo2cbsckJrENs99arheQv2m813InCwgkQusggFYry4+4Q+?= =?us-ascii?Q?N1hOA86peseid1fQVgiMJQwal+de4Do7zatssprvWO7lzlRtjpfU51ii/3qL?= =?us-ascii?Q?LBqaizhqvqkkPZOc+zhaFUzcmZB4Gow7v5kTKxnWnJf73pwTKQ167cBJmSoS?= =?us-ascii?Q?OP4re0wGhP3BELi0PIqLmsIhOPDUHfagBfaz07wGbWYOyGsDjieu9GF9guNj?= =?us-ascii?Q?+mk1fhbXcm7HU6fkvYUuqMLBHD/0YuUiL99lqcmZnc73vsYAgTVOx948+cg8?= =?us-ascii?Q?/c7PIOswmJWtugZgkyjAh7L1HDMxmVf4PTzt3MPMYq52optpjCoQvvda3Ca0?= =?us-ascii?Q?KZh4lnEr3MNrccrlNXJu0ipVXpHA0o73YMdNZOUZ3AqU9pQHiaBrqCbLDRBm?= =?us-ascii?Q?9BX/8ftcPnvncayf7z6r0eGke9Zpc0tSt2QM5ATbcVKZJCGqNrmieTHbfsT8?= =?us-ascii?Q?mABeglK+PULKEzTusl9lZ5YqgH80p0c6q1D2I/625V+wtKPoavJHt81nSCon?= =?us-ascii?Q?79xhUfG+rDNUF70fQ2BW0+E3BNaYQzMaxV5DdNZ/smQ7qCpRFcQyuDK3KkC/?= =?us-ascii?Q?LyN7Ta6jW6ySbEc3g5bfxcXJk48CtuQO54Bc8SdfSZRfkObywK/9ZPdPC2SG?= =?us-ascii?Q?L2WqIb/wVp9whAhC1wFqwQ=3D=3D?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2f64b249-2979-4f8d-ab1f-08d9e7f162fc X-MS-Exchange-CrossTenant-AuthSource: AM7PR03MB6660.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Feb 2022 15:16:58.5371 (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: VI1PR03MB4703 Subject: [FFmpeg-devel] [PATCH 4/7] avcodec/cbs_mpeg2: Simplify splitting fragment 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 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: avpriv_find_start_code() supports non-contiguous buffers by maintaining a state that allows to find start codes that span across multiple buffers; a consequence thereof is that avpriv_find_start_code() is given a zero-sized buffer, it does not modify this state, so that it appears as if a start code was found if the state contained a start code. This can e.g. happen with Sequence End units in MPEG-2 and to counter this, cbs_mpeg2_split_fragment() reset the state when it has already encountered the end of the fragment in order to add the last unit (if it is only of the form 00 00 01 xy) only once; it also used a flag to set whether this is the final unit. Yet this can be improved by simply resetting state unconditionally (thereby avoiding a branch); the flag can be removed by just checking whether we have a valid start code (of the next unit to add) at the end. Signed-off-by: Andreas Rheinhardt --- libavcodec/cbs_mpeg2.c | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/libavcodec/cbs_mpeg2.c b/libavcodec/cbs_mpeg2.c index 2bf38c6001..90d667ddc8 100644 --- a/libavcodec/cbs_mpeg2.c +++ b/libavcodec/cbs_mpeg2.c @@ -149,7 +149,6 @@ static int cbs_mpeg2_split_fragment(CodedBitstreamContext *ctx, uint32_t start_code = -1; size_t unit_size; int err; - int final = 0; start = avpriv_find_start_code(frag->data, frag->data + frag->data_size, &start_code); @@ -161,14 +160,11 @@ static int cbs_mpeg2_split_fragment(CodedBitstreamContext *ctx, do { unit_type = start_code & 0xff; - if (start == frag->data + frag->data_size) { - // The last four bytes form a start code which constitutes - // a unit of its own. In this situation avpriv_find_start_code - // won't modify start_code at all so modify start_code so that - // the next unit will be treated as the last unit. - start_code = 0; - } - + // Reset start_code to ensure that avpriv_find_start_code() + // really reads a new start code and does not reuse the old + // start code in any way (as e.g. happens when there is a + // Sequence End unit at the very end of a packet). + start_code = UINT32_MAX; end = avpriv_find_start_code(start--, frag->data + frag->data_size, &start_code); @@ -183,7 +179,6 @@ static int cbs_mpeg2_split_fragment(CodedBitstreamContext *ctx, } else { // We didn't find a start code, so this is the final unit. unit_size = end - start; - final = 1; } err = ff_cbs_append_unit_data(frag, unit_type, (uint8_t*)start, @@ -192,7 +187,7 @@ static int cbs_mpeg2_split_fragment(CodedBitstreamContext *ctx, return err; start = end; - } while (!final); + } while ((start_code >> 8) == 0x000001); return 0; } -- 2.32.0 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".