From patchwork Wed Dec 8 20:23:58 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 32179 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:cd86:0:0:0:0:0 with SMTP id d128csp854218iog; Wed, 8 Dec 2021 12:24:51 -0800 (PST) X-Google-Smtp-Source: ABdhPJz1NA4/cv5v7sODGLNoXaAGUZN4WZKSu61J0ma3NIlL4iMpBFMxSHxI0Doek/8g4lrocLg6 X-Received: by 2002:a05:6402:168a:: with SMTP id a10mr22161487edv.219.1638995090949; Wed, 08 Dec 2021 12:24:50 -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 x20si6302868edd.541.2021.12.08.12.24.49; Wed, 08 Dec 2021 12:24:50 -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=l0rSIvCq; 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 4C5C668057C; Wed, 8 Dec 2021 22:24:32 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR02-VE1-obe.outbound.protection.outlook.com (mail-oln040092069030.outbound.protection.outlook.com [40.92.69.30]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 166F668057C for ; Wed, 8 Dec 2021 22:24:25 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=h1SQ9ZyJWeNBjP9nbbaWvqNz6S2Q3X9/9TwE5LY0ASqPT4mpTiZkQL4/jVQTVLdrgnMd6rpA22ly6QINBpzlAeoaLCwY+QUp3n/qct5prTcUDuH/VFTtTAdfCIXpAMHZh0bZPA83DUQINWFXiQZqofHioKxXHU4PrJUVWI3O9iX4zAwVu4uc5vd6K6NmpMhHWlyl7m9j/jaJdrVdSAn0cYOI0/iDFVxk1zTOGPP6IxLHJkdmDco3/MPcNp7qLDXukaBL0/lAO8HSS9zCM4ucmgP2UXZszZOIux55CfDxrEvKok9qsU1+Z8SCizeOubISEK9ZBAGLT3xyex1GRmr9qw== 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=rUoiPqF7Kkyf202M13aehyoGIMnLtsFsVqX1eM8xj5U=; b=ld0oB6LcMKoS87GKOJ/BmKhs0enoI7+3qOZk8ytge4A1KP3+h/qIP0Ob+NGjh7NePdAy9ifgZg/H1/KsuTE/4opeemFPGMl9tH0uTcK+xBHlEjNef6a29Cwv0eJDQtqDKfguI7dNrRmUPGG11TuIiSavSqoz7qpC+xWO75fgfMTj4y5+G0QfEPchR6/RrzCigqYSyr1AOishtLwlr9NqYfpKmtEWkDK9A0MmUFFJZ3K75Iq/Uc22cTtKSzbxDw3a8qv27vBi+Z1M83V4FfH2E+7k51ARWe8CQ7j3y7ysTMeGTyEbJoVnvIDukcGHqgn4GMbttp0vuCk0pkc8iaG/Hg== 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=rUoiPqF7Kkyf202M13aehyoGIMnLtsFsVqX1eM8xj5U=; b=l0rSIvCqpoNtKXrwK9TrRFi4oh0bukDzTthIU7iUjY/VatP55t7Ujb4pS+vKt5rdX45BpwDcrZbcA6373PEvHN+dm7kL1+rO7n6o7QN3ztR90JMhk8wE6sVyHsuhiHn0XyA5wQ6kToQJsQz943jt8LSHMyoE6/+BxFUvlOSfS3gvhbIDlrrU3VPv7YJBtdlL5at3D7yZLFgxSMCL/JsmojxY5EdEqU9Ik/uRDlQ74TYU7y75kMjP1zVkPt4ZSKniekHZw0nqE93VpsB3p1KvfToTtFYQWBncprC2QOo2LCM4APkbPq9UYe7vA0buHJEATKKPmm09yewa7kv6p9BoEg== Received: from AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) by AM6PR03MB3832.eurprd03.prod.outlook.com (2603:10a6:20b:18::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4755.21; Wed, 8 Dec 2021 20:24:19 +0000 Received: from AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::f0dc:92f5:6bc2:45ca]) by AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::f0dc:92f5:6bc2:45ca%4]) with mapi id 15.20.4755.024; Wed, 8 Dec 2021 20:24:19 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 8 Dec 2021 21:23:58 +0100 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [XlSZU4LGbbt5l/RPxksrgcypD0Bwo2Px] X-ClientProxiedBy: AM0PR06CA0089.eurprd06.prod.outlook.com (2603:10a6:208:fa::30) To AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) X-Microsoft-Original-Message-ID: <20211208202359.593906-4-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from sblaptop.fritz.box (188.192.248.74) by AM0PR06CA0089.eurprd06.prod.outlook.com (2603:10a6:208:fa::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4755.20 via Frontend Transport; Wed, 8 Dec 2021 20:24:19 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 409b61ec-91b6-4f1c-2d16-08d9ba88b6d9 X-MS-Exchange-SLBlob-MailProps: gjx25WM8ZNUJNPNrsFw39+IRsSLFO7mf5dHzA4wUhKkNvgRBJyUCnb7e0PPkg+Ag6BSl3XOwLod/mYCLMhiYPTuPO+n0clU5LIfIrZbgB6yCIS5lusylkb4j6d/uIEBChRsMD1/qyGskWW8kEpG2rGTtxlT4j2cuIdomrqelMK/1+SkVPcILsvnsjbaKNLWVPhMBwts514bF62tXnYTSfGwd5X2B2VObWB2j66EmJj7sYdz/Ddnbh0hnisZyYw6qlF6FgkoZOeXHzvNNzns1PGvGxvFL2SyHT1Vf9BC8Ah4c8K4N+6IdSJsqE4T2SMUQYVjVvYAN1hRTpQAYfUb+aJEmXYOeQF1Okn+MZY+txCaLR2uVmkJ/+Fzk/SzXkhX6ha0ileF782kReInu11NVJ//XsPJrw86WhVyN/3jPJlyfLz8JSf6u1+K6230usUa9AGu2yDVqKvUSDPNclUZHWzrpFhzVxWIL0jh1dGCBPrMd5nI9hBt+coZ9hM0wqp/dAeut3N7xlCdSjW+L525LM/v8JP2mGqClTYST/A6Ar3ftDxcRr0Lp5dG6056SiQOFkCBp1mRinWAJ7GeZYS1AwxTF6tbyyqNMVRH62e+Mrwlkgba4dbflxiC8hpj0lwAJ+3Zeh1gXcOE97lyazsTgVvuGnvlVNOqwKfrd667aY/KlsggBhJEVvivZPbF6RafE/czo6EpJyzGKeVnBqZZ8hFtWF/CHlo9CV6cvIThUt6w= X-MS-TrafficTypeDiagnostic: AM6PR03MB3832:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: qepbZmYyXgfybSJsDdcZbaykTp6fVqqkjZjcY34Ppfn0pe+HpEOdkV/R9XuEm9gfNxl0EwxqdQEumEEGhdH/SVQfGs7uTUzlasljRurqr8qDJyDOM02VVnDBev3b4YVkKVVqvR5W7QPMLu9r3KbPBKZPytkkQXwIFAmLOEvAX6q2wBf9fGVPzIGDv92CyVKF6mFHxBL+2RVOutDWa+vpvgsOJiVDoRu/AGUMO0FTZrJj0soKp3c01M5fTjoiUnKs6tVRO7D1ci7uOkjucNkEwj3LyK6GQYj66YXG0KWaGsiYhMxg2qMiXG3cKrzP04L+Rj8FVTEGRKLwvjjSs5ak4u8QLpP7icLyMb29VziURhySntVPTD8LP8RDvvlPd05z6XIGAobxQ+r/x1slhETiddu3Wfv82PFxAtLQ7/mE3PgmWflNpBiY50zfyO0OMZp8N+b8Nlp+88+qP2onIOm+IQgnKt/lMx6vMVr9Oxl/cY7MXFIe0sotm/hyDYjx6wBWvG8V1Vr2fkw13ddn10rA7Ic1kaDK2IdLJW+otUNUnt3WCmkVzB62Y2mz5a0ni09/IVILAcnPKkyZ/qvXaKXAJw== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: /uQ+okdfDomFxfg20NrE0fUCtDMKSesOlrOwln+1lgVGIDuCRGJFOFI9LiDJJlBcNcNUAWSWKAPSaeegG03NZfUAz3XJkz6EHsNS2Lx0aShs39cb2Zw4xHUxVixmM5xPY1vgFxw41aYFY6TvCKVGUn7eVayVi+aTrT+HCNfXzsCxh9GN6cq1AEda3xP6/sbLX5vER/kvkLR9CARN+GHZ8eeLPXt8dYaF2O2FhPfshCcvo7sCawBlzTjwlSWiqmCFvw/IUjCWnPlZq/bqXWuKWOstWAlS0CQXZDjscNaX8t5zUqqkzh8qOzE1j8l+MRZcn5zTlokBRdBT0xs6Q6l1ojcEWOGlJkNu7qWA0eonJck/mSvtzoArZH2VMatyHPhCKqautjGkWcx6sAsZ1iXz7asjy/Q0hUSjYOAEV8cCzxDAQ9b4oPUbc7+k0zSsOkj0JMOX9zHCPvpf75kcWNRQqG04qxZfL61s+CqIBgq7cExKGUTFA6W6oMy/6tWG/TPlgrKe2bvF66Y4LlnAZzcO0BalIPSx2qKAN2onklMLbdoY6PflCvOfjWMj3ydC6jwwoxwWVUKC0fVZf4gMSHp2NuGDqqz9KQHT5rPJ4m/1WH4vI5l6BSOn9FjI8MLnmE0DTa54wP/C8JsYFwhW9DsTAFasaVkT65Jj4bo6qjJUXxrNXvL+t1HuzgIGntTOnl7yKNGxI3VA+LKz/4wDmjKN+gk6LjdBr65ZlcIUcevQ10TFk/b3fdXvEjNr6uy3r3olPmKwGGLgmiouTeu38W7kAFQTBZCGrww1iJ4/WLqjQk9XkLUneT1xTLK8m14fOCcuaxwyfAipUVTJoKpPwIabmg8CwJD4TzSHpkgyzb3tcWNAtCgUPSs5pL9jB1oi+I+Cx4aLs3YaV8sAIjZ78f6EGJ5pbH0z0xGEcDbyAR2ckjpbiyhHa+FJPLEwuVgF94R+gc8BsHXj5195oboFRZC8sw== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 409b61ec-91b6-4f1c-2d16-08d9ba88b6d9 X-MS-Exchange-CrossTenant-AuthSource: AM7PR03MB6660.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Dec 2021 20:24:19.8296 (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: AM6PR03MB3832 Subject: [FFmpeg-devel] [PATCH 5/6] avcodec/movtextdec: Switch to pointer comparisons and bytestream API 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: Wrk7QrWretNQ Improves readability and avoids a redundant index variable that was mistakenly called "tracksize". Signed-off-by: Andreas Rheinhardt --- libavcodec/movtextdec.c | 36 ++++++++++++++---------------------- 1 file changed, 14 insertions(+), 22 deletions(-) diff --git a/libavcodec/movtextdec.c b/libavcodec/movtextdec.c index 967c0adf7f..63709eb54b 100644 --- a/libavcodec/movtextdec.c +++ b/libavcodec/movtextdec.c @@ -102,7 +102,6 @@ typedef struct { MovTextDefault d; uint8_t box_flags; uint16_t style_entries, ftab_entries; - uint64_t tracksize; int readorder; int frame_width; int frame_height; @@ -481,9 +480,7 @@ static int mov_text_decode_frame(AVCodecContext *avctx, int ret; AVBPrint buf; const char *ptr = avpkt->data, *end; - int text_length, tsmb_type, ret_tsmb; - uint64_t tsmb_size; - const uint8_t *tsmb; + int text_length; size_t i; if (!ptr || avpkt->size < 2) @@ -510,27 +507,23 @@ static int mov_text_decode_frame(AVCodecContext *avctx, mov_text_cleanup(m); - tsmb_size = 0; - m->tracksize = 2 + text_length; m->style_entries = 0; m->box_flags = 0; // Note that the spec recommends lines be no longer than 2048 characters. av_bprint_init(&buf, 0, AV_BPRINT_SIZE_UNLIMITED); - if (text_length + 2 != avpkt->size) { - while (m->tracksize + 8 <= avpkt->size) { - int size_var; - // A box is a minimum of 8 bytes. - tsmb = ptr + m->tracksize - 2; - tsmb_size = AV_RB32(tsmb); - tsmb += 4; - tsmb_type = AV_RB32(tsmb); - tsmb += 4; + if (text_length + 2 < avpkt->size) { + const uint8_t *tsmb = end; + const uint8_t *const tsmb_end = avpkt->data + avpkt->size; + // A box is a minimum of 8 bytes. + while (tsmb_end - tsmb >= 8) { + uint64_t tsmb_size = bytestream_get_be32(&tsmb); + uint32_t tsmb_type = bytestream_get_be32(&tsmb); + int size_var, ret_tsmb; if (tsmb_size == 1) { - if (m->tracksize + 16 > avpkt->size) + if (tsmb_end - tsmb < 8) break; - tsmb_size = AV_RB64(tsmb); - tsmb += 8; + tsmb_size = bytestream_get_be64(&tsmb); size_var = 16; } else size_var = 8; @@ -540,13 +533,11 @@ static int mov_text_decode_frame(AVCodecContext *avctx, av_log(avctx, AV_LOG_ERROR, "tsmb_size invalid\n"); return AVERROR_INVALIDDATA; } + tsmb_size -= size_var; - if (tsmb_size > avpkt->size - m->tracksize) + if (tsmb_end - tsmb < tsmb_size) break; - m->tracksize += tsmb_size; - tsmb_size -= size_var; - for (i = 0; i < box_count; i++) { if (tsmb_type == box_types[i].type) { if (tsmb_size < box_types[i].base_size) @@ -556,6 +547,7 @@ static int mov_text_decode_frame(AVCodecContext *avctx, break; } } + tsmb += tsmb_size; } text_to_ass(&buf, ptr, end, avctx); mov_text_cleanup(m);