From patchwork Tue Feb 1 21:20:49 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Scott Theisen X-Patchwork-Id: 34045 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6602:2c4e:0:0:0:0 with SMTP id x14csp983072iov; Tue, 1 Feb 2022 13:21:30 -0800 (PST) X-Google-Smtp-Source: ABdhPJxtlR/+7I46mR4G8cL5zDfquHgL7YgrbTZGlkDYE576x77OLP0XSoF4G1ECJRov+HhLnbZ3 X-Received: by 2002:a05:6402:11c7:: with SMTP id j7mr27303972edw.124.1643750490297; Tue, 01 Feb 2022 13:21:30 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1643750490; cv=none; d=google.com; s=arc-20160816; b=PedsrOw3Y+TM++bvwczhrZk5pcNOMnCj/J1gN41UQLT7Et0B/MlEpuUnh/IRj+p+ub yNfXaV0o9HR5g2zAbsSSUUQhBUgxaCWP6HUoAlOMC2Di71FFgDZ+Gn9XVMZTiuExjhnj E2uEhaNVr5DkwPNTBe8SeCU9Vb4MViobamYjXRkk8S6YHTyCeXu2BmEd2b3JRDtcxn6Y BX0ZzbmR8ovQh9hauEpbk7HKLLbbBs6lBbLenDE6wuxS5UdwceunjoyEBGCrLeepztAP Hu+a6eo9nxJ/KeCb720Emi6u7f9uJ7WTxiEsa3h/jqWCgzatfFI/FCp/mv784FpY97fK qkTw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature:delivered-to; bh=gDFxUlqMl/nlgv0K0EZRbzuLDvMBAwlQCpM0vkdZ1Rg=; b=aagvAL6j++4+7zuB6CkT8/TA4Bne7gB8vAw+Dx0DiICgROjC//j9f/zEsB8sUM+REU xpRRTy2ObWWClscYRpqFMoa90vPGs7jWtmY3V4wfQCDnQSqA2dWodhEQcchh+bwcfBUf cLMG/gnZinKfC2OmjGs+w16YR+cIoQH2OkHN3IIM1YMDswdCGkC6eTU24zLdPZXvayV1 BtXYO1tl3DyWGpteA6CHJdToqubVYcDW8mogpNWplvUU6QpyJ2Dq3qsq/CV47KDQSxXT Q/wD8s4TAmwC390kXPtKs8B9SZxI0taWoW15Z55jmpN7Ana9wPh6mPQkpekC9o2gpqY2 oMxw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=KKmikr37; 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=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id w8si2386995ede.635.2022.02.01.13.21.26; Tue, 01 Feb 2022 13:21:30 -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=@gmail.com header.s=20210112 header.b=KKmikr37; 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=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 3C34268AFB4; Tue, 1 Feb 2022 23:21:15 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qv1-f52.google.com (mail-qv1-f52.google.com [209.85.219.52]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 860D6689CFC for ; Tue, 1 Feb 2022 23:21:08 +0200 (EET) Received: by mail-qv1-f52.google.com with SMTP id i19so17199361qvx.12 for ; Tue, 01 Feb 2022 13:21:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=9dy4aYoVFlHLEy5HO7CVsCAQrO5cMvHaBQi63n/yq/0=; b=KKmikr379ilfHj+xWFiyDFiPX1YLBYmrek2bIPwT81hU3lEX5NXy49YogqZtf0ybnd 1VXZj57eTrV7o9Vo6kJIJEYbRR2QxpSjFf3VEq1DBcvv8AyHISz4iMUy8WgiaKIA8PqJ OoIQlp0wIiDtfYmM/py+JmiOqwAaPBnVoGwjqp5sPIb4YQDNrpFxSz6xaR5cvXTK89Zp 8FupfMhTN3/Mx4VATy+5zdhJ6SM0hRi68XmXw/JGlV+fs/QzoHNGp9WZfX4K6bMNFwu3 WdaO7ITXM4rd16Oj2W1hDwzoMbB2146LEZr6UGis5siBKaFKZepFkAOuUITXVljuzQgy DsgA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=9dy4aYoVFlHLEy5HO7CVsCAQrO5cMvHaBQi63n/yq/0=; b=fzpmy4UUUIsve/SCVLCDfnIzgcPd8vTNMb1SElINKkiHIk3Kq49Juq9AL6l76s5bWm JpxyUstFmzknpUBwAsHJzSr96fLuNz1B9UCGyWLRku1IRaTc1EQRvFGIAPzznzW9uRpt xuKPseTH8y+y+wv/oyliSfMJ4LXm6v1VFRlm9n38wTlXKJBTKVSf2zc86e/bufBw2XTy 6vseR4aVOZHLB+YYAtIbChQkL1wx6nwZbqyT0CLRwgjXpUkvulhb3cMGxGk+zmx6RoCk B28g8EM5bZbtGPJqIA4+KnRCkKBUL4VSqXd4GfB8vWTQ9muAMph2YSaDqN9ZBeMnRG/M 6PLA== X-Gm-Message-State: AOAM533ygbxD0qN0sW9KMf39WBav+1qdfoLpmIjOQjplBxdvUuOJiIsd g8OQ5VHZhIQivS6BXub+6X7hBbVy59lp4A== X-Received: by 2002:a05:6214:224b:: with SMTP id c11mr23793174qvc.114.1643750466837; Tue, 01 Feb 2022 13:21:06 -0800 (PST) Received: from localhost.localdomain ([151.200.235.219]) by smtp.gmail.com with ESMTPSA id ay18sm2928225qkb.8.2022.02.01.13.21.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Feb 2022 13:21:06 -0800 (PST) From: Scott Theisen To: ffmpeg-devel@ffmpeg.org Date: Tue, 1 Feb 2022 16:20:49 -0500 Message-Id: <20220201212056.29712-2-scott.the.elm@gmail.com> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20220201212056.29712-1-scott.the.elm@gmail.com> References: <20220201212056.29712-1-scott.the.elm@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/8] avpriv_find_start_code(): readability enhancement part 1 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: Scott Theisen Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: v05AknBpXX/s No functional change. --- libavcodec/utils.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/libavcodec/utils.c b/libavcodec/utils.c index b19befef21..cb4437edc2 100644 --- a/libavcodec/utils.c +++ b/libavcodec/utils.c @@ -967,10 +967,14 @@ const uint8_t *avpriv_find_start_code(const uint8_t *av_restrict p, } } - p = FFMIN(p, end) - 4; - *state = AV_RB32(p); + if (p > end) + p = end; + // this will cause the last 4 bytes before end to be read, + // i.e. no out of bounds memory access occurs - return p + 4; + *state = AV_RB32(p - 4); // read the previous 4 bytes + + return p; } AVCPBProperties *av_cpb_properties_alloc(size_t *size) From patchwork Tue Feb 1 21:20:50 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Scott Theisen X-Patchwork-Id: 34046 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6602:2c4e:0:0:0:0 with SMTP id x14csp983142iov; Tue, 1 Feb 2022 13:21:36 -0800 (PST) X-Google-Smtp-Source: ABdhPJwAZkf1FUwVqnyQadxEni9IZtDOOeRKu6NXntvewbW4ZZLjEW76zUWyNjqmdjy8ji+ZZzwy X-Received: by 2002:aa7:df16:: with SMTP id c22mr27270945edy.177.1643750496390; Tue, 01 Feb 2022 13:21:36 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1643750496; cv=none; d=google.com; s=arc-20160816; b=VBnZvv9KrNL+X2m7qGagFz1YXu5fBvVZlEm3xk+YRCO+sTIyPYVMC8qqxbJuw1avZm GLM5lVyjevPSUk2yztQ5jXlGY6r4I6MR9q2Kv0qHZZwa3B67AFRfVh0GJUJEG7zTIq71 0mfybvNpRwux4WnKfiGMQu2a7mixGPptPJKacv2cXyTZpacCog2mID+i4QVi7ag54Fyb AaqetImNVR9Oq4p4q6ncPdw8uG3rspokAldAkzCPNr8uC3/DYJjNW6BIIqRMYd6rCSW4 2vNhX286C/pCWmndcSvfYF4p/sOxb7J3tS9D1g0tfIQoz2fGhYkTcOSekG/0Vl2RkJC3 11KQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature:delivered-to; bh=iK3gCIkjua0MWVkRZaC4hUjAO8yNrJD5ZAIFxMPpCok=; b=YzpWF79DSbEgh0Bh6ICJOy5DbZteH3KVqmeu1iJA6m6TAduX0eQ7h6QENbdJmY3F5n j3j7je8vlCghq38SaUYOK3qdMVMvjdPQb0PZcyb9YH4Oj9zg3c/72Z0rFbEjR1TvS2Va 3DwtYhb5KfFt/ko8tPIjpFtyS5I+QGdtU58gNtQFxnGNN4e5atheGJyd96PFgP5u9F/d /MV5iKx9tbJlLcm6njXWB4VMb6H5PW8lqS4SLkJ+7GMhVMLQzTPjbewOoInndsrsNcxt 7Y8kRgVEIdhCMFK/St+VOozi0lfveMJP57soUIM7CyckTugzWUq/V6DTbOkJIC/ljnRF 33gA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=Fec50Poo; 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=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id hd40si10418086ejc.568.2022.02.01.13.21.35; Tue, 01 Feb 2022 13:21:36 -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=@gmail.com header.s=20210112 header.b=Fec50Poo; 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=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 16B6168AFF0; Tue, 1 Feb 2022 23:21:16 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qt1-f179.google.com (mail-qt1-f179.google.com [209.85.160.179]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2377868AF51 for ; Tue, 1 Feb 2022 23:21:09 +0200 (EET) Received: by mail-qt1-f179.google.com with SMTP id r14so15641757qtt.5 for ; Tue, 01 Feb 2022 13:21:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=MYRFh3Do6ITTaR9nSjPNKOI/Rvooyr5jCtxMJSTvGl4=; b=Fec50Poo5cJ2hOQ/gcHnPhd0gvhgnT0VIv2J42Kg6OGHB4cZd2IQ7HJmlbwe5/y/ac EsBI9E2CatfAiTPQaiuXhofxobxXP2LmQWaInN1lfd1bupf8456Cq82rizmJbGGtip8o CYR5A6A5qe0YJ7twyZS9u9wMNwaECafzXs4SMoVVu9oZAxPisTdr+VBYsQGMhzPUCgwW GKgG/+5aUKidJdLX0B4ZJEespZwKm+VZjXAq7v0dLYNHhtMXUux8tgCgoaRE9XWONy1v GiEeTpOxx3E2fuLTSJ11+6IEjRVpOxpjV69Loi9ERnx1hEWmOOO1mX2Tnu/D5s5EhemS N0jQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=MYRFh3Do6ITTaR9nSjPNKOI/Rvooyr5jCtxMJSTvGl4=; b=hEITZjN5Y8tP1HNzKS17aCuH3s/NwmOe8sTBFrJocISc3Ch7gvjkFLO83mYm0qnK+r uXg6n7JLGTKHaiybQZDtUOSipOm+quiybhBkw3kibsw/mRuLTx4ShNebCdaI8Lk/2KB4 9TaqKqqVd9iwVxcmiXZ2ma2WU8EnY893hOEpUyI3uRGjXg7MRdrPw3G4jgMU23MydJxr e8ZEPe2dIEbcMxWjVUNAYzKl12dnz37h2VuDGHHuyVdqL4yMi1DYMdMIK6vM03M433ua e/qt8a7L4zF8QXidZlo/B9uj7THWTj2yQtmCmAfedYZnomoeuQLEuDIyTJuzi0hssBfe 4M5w== X-Gm-Message-State: AOAM532iJamKI5xnm+gksyd2rHZwntcZ0Ybcc/yqNfZpNvuBrB/vRrI+ 4K68gWEhhNcfAq/F2bqOKuMBgsetaZ/ZrQ== X-Received: by 2002:a05:622a:199e:: with SMTP id u30mr15386582qtc.564.1643750467576; Tue, 01 Feb 2022 13:21:07 -0800 (PST) Received: from localhost.localdomain ([151.200.235.219]) by smtp.gmail.com with ESMTPSA id ay18sm2928225qkb.8.2022.02.01.13.21.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Feb 2022 13:21:07 -0800 (PST) From: Scott Theisen To: ffmpeg-devel@ffmpeg.org Date: Tue, 1 Feb 2022 16:20:50 -0500 Message-Id: <20220201212056.29712-3-scott.the.elm@gmail.com> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20220201212056.29712-1-scott.the.elm@gmail.com> References: <20220201212056.29712-1-scott.the.elm@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 2/8] avpriv_find_start_code(): rewrite while loop and add comments for clarity 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: Scott Theisen Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: scgM6xVf7MZa The expected number of iterations may increase by one for an input of alternating 0 and 1 bytes. Instead of incrementing by 2 everytime, it now alternates between incrementing by 1 and by 3. No functional change, but now much clearer. --- libavcodec/utils.c | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/libavcodec/utils.c b/libavcodec/utils.c index cb4437edc2..882f90be79 100644 --- a/libavcodec/utils.c +++ b/libavcodec/utils.c @@ -957,12 +957,26 @@ const uint8_t *avpriv_find_start_code(const uint8_t *av_restrict p, return p; } + /* with memory address increasing left to right, we are looking for (in hexadecimal): + * 00 00 01 XX + * p points at the address which should have the value of XX + */ while (p < end) { - if (p[-1] > 1 ) p += 3; - else if (p[-2] ) p += 2; - else if (p[-3]|(p[-1]-1)) p++; + // UU UU UU + if (p[-1] > 1) p += 3; // start check over with 3 new bytes + else if (p[-1] == 0) p++; // could be in a start code, so check next byte + // this should be one comparison against 1 since p is unsigned, + // i.e. p[-1] == 0 is equivalent to p[-1] < 1 + + // UU UU 01 + else if (p[-2] != 0) p += 2; // we have UU YY 01, so increment by 2 + // to start check over with 3 new bytes + // UU 00 01 + else if (p[-3] != 0) p += 3; // we have YY 00 01, so increment by 3 + // to start check over with 3 new bytes + // 00 00 01 else { - p++; + p++; // p now points at the address following the start code value XX break; } } @@ -972,7 +986,8 @@ const uint8_t *avpriv_find_start_code(const uint8_t *av_restrict p, // this will cause the last 4 bytes before end to be read, // i.e. no out of bounds memory access occurs - *state = AV_RB32(p - 4); // read the previous 4 bytes + *state = AV_RB32(p - 4); + // read the previous 4 bytes, i.e. bytes {p - 4, p - 3, p - 2, p - 1} return p; } From patchwork Tue Feb 1 21:20:51 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Scott Theisen X-Patchwork-Id: 34047 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6602:2c4e:0:0:0:0 with SMTP id x14csp983263iov; Tue, 1 Feb 2022 13:21:47 -0800 (PST) X-Google-Smtp-Source: ABdhPJyZoV7wJYg8ImzTeGdMXmaUwA5UAdhR7THbQ2X1lvj1LbJteBiCroDSMClFaUNWedkEBfDx X-Received: by 2002:a17:907:7286:: with SMTP id dt6mr22500365ejc.285.1643750507227; Tue, 01 Feb 2022 13:21:47 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1643750507; cv=none; d=google.com; s=arc-20160816; b=JBLmx6+uzIrNeZPRdlehbCBp85vbAZUrcUwbm2iKF95g69BDDIuK6cU5qYHxzSp+We mFZg4HLyjie8p4JGa/Ak62gZyZeJTtICodxuAoQn9wDhOT6KHmDSHbwRvYYYl2U6PfiV 0PIRqgKExPVcdI/h8Ng1ZTIEb3IabIzz1QbFmYqFZOFYw5bFVNJL4myUVRHANTE1oOLh PUVw7l0FJpv9KDDPSBP5Pau0UPfH6y1hqomG//1zwE+jqLVR1iL/0dir7YS3ipcXtOzg i22Ny6+hnNK3jCfNi5fW1hBM6sXWm+ojUdZWLLcyIleZmmAGEJgu2uuRzvdpCRvmPoN3 XRuQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature:delivered-to; bh=XPuUS9OEpqHmVEYldhELHn8Lxyw0zNCUK+QOmZoGXow=; b=N0aAYUqNyHfOJgVW1QtN4etaReYBBmLoW5Q2IigndH65Ffp0aoiazBKIcMqAalZUQJ IEAopbKaN80Q6VWt5RXUEl6uoO0ouej3r2Dk8hgQFYrLv6ipZ1dNL9UlEWA2f1v/t04J lz2EmvzqtTn6sLeHFQHK7WzrgR/YxOgGowvkmjpQSd9rNWmBJuWp4/ZKTrBqbpwxn8uU zH6w/OkggVM4fVBUDga+8LKJhUkKRMdxA2K8U0edEpY2tYVLaipsi2GQLyISKhPNrg1l f2+GEQRhTZywVWgs6yjDrMX2rgNTxHWxr13DceKXDgqNaTTxxR0YnBnbLNW+W6I+Qd6y ljtw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=Ce+MmGex; 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=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id 7si9124517ejh.752.2022.02.01.13.21.46; Tue, 01 Feb 2022 13:21:47 -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=@gmail.com header.s=20210112 header.b=Ce+MmGex; 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=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 0F8F968B01B; Tue, 1 Feb 2022 23:21:17 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qk1-f169.google.com (mail-qk1-f169.google.com [209.85.222.169]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B0D2268AF71 for ; Tue, 1 Feb 2022 23:21:09 +0200 (EET) Received: by mail-qk1-f169.google.com with SMTP id o10so16427211qkg.0 for ; Tue, 01 Feb 2022 13:21:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=HYYGPGAIvrNnww5f39ybFiTJm6f8Gl1N+q59NK1yVao=; b=Ce+MmGexvnJawMcVMv9dZ6CSsaXrTHfTFI+0eaNQETr/7stdGjIWvaHBa1UZV8jTUJ gQmvbaGle5Lvi6uC5Zz7lD14aWYt8jehAiR0I6NqJFFqm6FFILN80hGuJZ10tNcPWfFq lzYdrYim4Yk2flBbXQnHL4KSEW0+faV44IRXjZAWhAfInR5cVY0BjmSkuCi9R6QpFl+W /k6G4Fm/sOjTYr45uQN30BFri5W39DQTFRlnf481k4z8cWfqNjCzbWJw/Bo1b/L9wSB9 urZEWPiESAbRoeAHZKlQhoqZI7UblFI5oHrsm7VO+GR9+gxPT1tQ2lyrplR/Zq0lr6Gg giyA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=HYYGPGAIvrNnww5f39ybFiTJm6f8Gl1N+q59NK1yVao=; b=iqTBHa6oze23kXTErFqctW70F7RSgtRR85EqDuU31BlxIlemnS7EadFVizaiJ7CdZA id7TXUqMVPgJ9j9jHpPnV146w3ONmTV+0yQgkJijdTnrYV0cIsydr3CCHNroZZB8KYt5 fd8R+tLc8ipYx88sH6RQzr4hRDhPwrUE4e6DKP/Z6Uf+3SzK07IjKOJtp3GOIxO6wpMa h/mj6tfWu4FFe/OTuGnsWRSmWGrFWbJV4uMmG7TEdEZ4kHnJlSQxQZXN0jd7ESdbF+7j JHn6CnBIrpC31IXC83/7+JIkRQ8CQqPg2Wefa0upBZNBCXPBra1AomXrwUJPYWAQ6A6B VkiQ== X-Gm-Message-State: AOAM531IXnqgnquytiLNY+aeb6O6tlVKDev7fQhwx07op2s6Iix07xu0 8KB3PGxiERnOIlyluXHABZ/eEog6A4/AQA== X-Received: by 2002:a05:620a:2687:: with SMTP id c7mr15611743qkp.341.1643750468274; Tue, 01 Feb 2022 13:21:08 -0800 (PST) Received: from localhost.localdomain ([151.200.235.219]) by smtp.gmail.com with ESMTPSA id ay18sm2928225qkb.8.2022.02.01.13.21.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Feb 2022 13:21:07 -0800 (PST) From: Scott Theisen To: ffmpeg-devel@ffmpeg.org Date: Tue, 1 Feb 2022 16:20:51 -0500 Message-Id: <20220201212056.29712-4-scott.the.elm@gmail.com> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20220201212056.29712-1-scott.the.elm@gmail.com> References: <20220201212056.29712-1-scott.the.elm@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 3/8] avpriv_find_start_code(): make the state parameter output only 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: Scott Theisen Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: +vzNpehtnRY9 --- libavcodec/cbs_mpeg2.c | 8 -------- libavcodec/mpeg12dec.c | 5 ++--- libavcodec/mpeg4_unpack_bframes_bsf.c | 1 - libavcodec/mpegvideo_parser.c | 3 +-- libavcodec/utils.c | 1 + libavformat/rtpenc_mpv.c | 3 +-- 6 files changed, 5 insertions(+), 16 deletions(-) diff --git a/libavcodec/cbs_mpeg2.c b/libavcodec/cbs_mpeg2.c index 26400f279f..03ea49cbca 100644 --- a/libavcodec/cbs_mpeg2.c +++ b/libavcodec/cbs_mpeg2.c @@ -160,14 +160,6 @@ static int cbs_mpeg2_split_fragment(CodedBitstreamContext *ctx, for (i = 0;; i++) { 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; - } - end = avpriv_find_start_code(start--, frag->data + frag->data_size, &start_code); diff --git a/libavcodec/mpeg12dec.c b/libavcodec/mpeg12dec.c index 4a7bd6d466..1110fcb319 100644 --- a/libavcodec/mpeg12dec.c +++ b/libavcodec/mpeg12dec.c @@ -1770,7 +1770,7 @@ static int mpeg_decode_slice(MpegEncContext *s, int mb_y, if (avctx->hwaccel && avctx->hwaccel->decode_slice) { const uint8_t *buf_end, *buf_start = *buf - 4; /* include start_code */ - int start_code = -1; + uint32_t start_code; buf_end = avpriv_find_start_code(buf_start + 2, *buf + buf_size, &start_code); if (buf_end < *buf + buf_size) buf_end -= 4; @@ -2020,7 +2020,6 @@ static int slice_decode_thread(AVCodecContext *c, void *arg) if (s->mb_y == s->end_mb_y) return 0; - start_code = -1; buf = avpriv_find_start_code(buf, s->gb.buffer_end, &start_code); if (start_code < SLICE_MIN_START_CODE || start_code > SLICE_MAX_START_CODE) return AVERROR_INVALIDDATA; @@ -2475,7 +2474,7 @@ static int decode_chunks(AVCodecContext *avctx, AVFrame *picture, for (;;) { /* find next start code */ - uint32_t start_code = -1; + uint32_t start_code; buf_ptr = avpriv_find_start_code(buf_ptr, buf_end, &start_code); if (start_code > 0x1ff) { if (!skip_frame) { diff --git a/libavcodec/mpeg4_unpack_bframes_bsf.c b/libavcodec/mpeg4_unpack_bframes_bsf.c index 6f8595713d..8b3fda0b03 100644 --- a/libavcodec/mpeg4_unpack_bframes_bsf.c +++ b/libavcodec/mpeg4_unpack_bframes_bsf.c @@ -36,7 +36,6 @@ static void scan_buffer(const uint8_t *buf, int buf_size, const uint8_t *end = buf + buf_size, *pos = buf; while (pos < end) { - startcode = -1; pos = avpriv_find_start_code(pos, end, &startcode); if (startcode == USER_DATA_STARTCODE && pos_p) { diff --git a/libavcodec/mpegvideo_parser.c b/libavcodec/mpegvideo_parser.c index c5dc867d24..c991a82405 100644 --- a/libavcodec/mpegvideo_parser.c +++ b/libavcodec/mpegvideo_parser.c @@ -105,7 +105,6 @@ static void mpegvideo_extract_headers(AVCodecParserContext *s, { struct MpvParseContext *pc = s->priv_data; const uint8_t *buf_end = buf + buf_size; - uint32_t start_code; int frame_rate_index, ext_type, bytes_left; int frame_rate_ext_n, frame_rate_ext_d; int top_field_first, repeat_first_field, progressive_frame; @@ -120,7 +119,7 @@ static void mpegvideo_extract_headers(AVCodecParserContext *s, s->repeat_pict = 0; while (buf < buf_end) { - start_code= -1; + uint32_t start_code; buf= avpriv_find_start_code(buf, buf_end, &start_code); bytes_left = buf_end - buf; switch(start_code) { diff --git a/libavcodec/utils.c b/libavcodec/utils.c index 882f90be79..cf88e0a759 100644 --- a/libavcodec/utils.c +++ b/libavcodec/utils.c @@ -950,6 +950,7 @@ const uint8_t *avpriv_find_start_code(const uint8_t *av_restrict p, if (p >= end) return end; + *state = ~0; for (i = 0; i < 3; i++) { uint32_t tmp = *state << 8; *state = tmp + *(p++); diff --git a/libavformat/rtpenc_mpv.c b/libavformat/rtpenc_mpv.c index 4b45f51772..bb63c9bdc6 100644 --- a/libavformat/rtpenc_mpv.c +++ b/libavformat/rtpenc_mpv.c @@ -51,11 +51,10 @@ void ff_rtp_send_mpegvideo(AVFormatContext *s1, const uint8_t *buf1, int size) end_of_slice = 1; } else { const uint8_t *r, *r1; - int start_code; r1 = buf1; while (1) { - start_code = -1; + uint32_t start_code; r = avpriv_find_start_code(r1, end, &start_code); if((start_code & 0xFFFFFF00) == 0x100) { /* New start code found */ From patchwork Tue Feb 1 21:20:52 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Scott Theisen X-Patchwork-Id: 34048 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6602:2c4e:0:0:0:0 with SMTP id x14csp983386iov; Tue, 1 Feb 2022 13:21:59 -0800 (PST) X-Google-Smtp-Source: ABdhPJwVDRyDm+ufpUQpBs43mET5gCDS/HS4/31jE4tCcJewNyepv1YOQRTPWhoZdSQglDRGD5es X-Received: by 2002:a17:907:a089:: with SMTP id hu9mr23031409ejc.680.1643750519241; Tue, 01 Feb 2022 13:21:59 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1643750519; cv=none; d=google.com; s=arc-20160816; b=h9vupCsH7757IjSignqyQ6HjrCMXP5+qPSivvGSh5lpYQm8Sxutna8ANvcZg/ImGBF pJ8QY1wTkhQ7AqOfqaW5gzEM7wpzu791aGlu7BiDfOPypFVGNcdeolj+jlezyr/HN+XX maFTGtSJxjAYUwlqM5DO1ORNl44K3cYb4jiqMU6g+rmBhkawfTIPh8+U0OdwMphXbD7a ICzM55CzdCo7zols901tVZslSAH9fom4jB3Nu0PJyYZNMqleOb6w+peS7yeas4AZhFd7 IeUj+2/Q3V/WxfueI9L/tTx3dsKMdvFQlgSU1PxvC/fIcPaFt0YMHpsuendW7OXCDxxL CL1Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature:delivered-to; bh=uXAF4lWE0NfUySV3vJHiTITqG/CpH+wqw8y8cZeNVTk=; b=wkxZK6zdDBw5lDJdDv8Saqwx9Y4Ys+akiVMjPMpZqNcAZJ6W1wMPQb18tsy30tDDBe k9Gn9TOuF6I5r8lZssAkvrKqpfac2YCja1mJaDZOKiuGNg1ae/lagB4lz2SLtwoKMHUn dxnP5oRzP03q1w3H9jQY7KSfhDVRIhmWBfSf9oA1dnpk0lxYKpV2Qmdb7sWd2akUXZSa KNOVstvlIkVJJswvZFS9+OWPWXhdvNSjgnB86GmMZ8x66a5V8CkWKthFWOxwLKW8tYee wp8BbhkO0IKtipKti7vKdROQfYLeDUCLwhyj7tpy60jP/s6XRfIQtH58FPWl/uMQWlK0 9B1g== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=FmIHaR9W; 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=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id 3si9573749ejl.245.2022.02.01.13.21.58; Tue, 01 Feb 2022 13:21:59 -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=@gmail.com header.s=20210112 header.b=FmIHaR9W; 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=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 1317B689CFC; Tue, 1 Feb 2022 23:21:18 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qv1-f54.google.com (mail-qv1-f54.google.com [209.85.219.54]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 79E6568AF51 for ; Tue, 1 Feb 2022 23:21:10 +0200 (EET) Received: by mail-qv1-f54.google.com with SMTP id s6so17201690qvv.11 for ; Tue, 01 Feb 2022 13:21:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=KICQncTemsfuvM5Sv3D7PxnsDlwbqR9+01/x1cqDRgE=; b=FmIHaR9WtxuI/WdfMKdm4+KaxAwywZu5l49vAOFSYprfgrdC4NLOBsGTesYCL/plbq XmnxOagONB1Cceyo04x9I4V9QhuIe/bRH8++GyXAjXdf6EitO0+nich+JRjnWtqU/g/d ZH/sx8yUuqMh3TgW1CWRHmjHmYPQKlgNmpN9j7mdPzan06gGFUACs46T8T44xOOgmHx3 n6oINMLTL17h7NOzuDUgMINV/E3j2EDzdt1R/3osU9DyThib9tDjfcyKklXXqy4EeVdh Hittn0YAf2Z4ySRAawFtMYj+2ZmLmGv1YYo8nhH5jZhfcFCeHB6Ss9fQQ1a9kj2LmNi6 grEg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=KICQncTemsfuvM5Sv3D7PxnsDlwbqR9+01/x1cqDRgE=; b=tNL+HWU1i+vM1X/2c4f4p0yKiOGEyetkTr9WhulBmdAkD9a0gBcN3iaqeYxWvF06cv cY5tqxeEry3VuQcqDc8k5HOeCJuumhWnDZGG4r2x3UqizBlD47EkFPHBz3BGhCeD0v+v ilANm1igvjaNQtBWd5yGEkoo1KaljEzcCtdeZTsFE1SYNcn2gVYi/qVaJMYhxdpTPF+Z Ew1xWxFUvpNUy6b9m9hCqLjyA6YYJgDzZ+VeoAQb6kDnFqsoUWF7AE1YB00RwS71JI13 DTXO4KeVAjK4TYifopSYCAjPpDAqkWJyKrl3SAEXIrUOrz6CHbrToCwHBp+8aTYKVRm/ Gnyg== X-Gm-Message-State: AOAM53157qNfyo7ECRbrcDgYdFoTwf35haOhbRvWQlvEdyPC+RU/ctaJ o1VkdQ04iEmrLE+bKFdPNsofUZTpWU+TUA== X-Received: by 2002:a05:6214:27cd:: with SMTP id ge13mr24412661qvb.40.1643750469037; Tue, 01 Feb 2022 13:21:09 -0800 (PST) Received: from localhost.localdomain ([151.200.235.219]) by smtp.gmail.com with ESMTPSA id ay18sm2928225qkb.8.2022.02.01.13.21.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Feb 2022 13:21:08 -0800 (PST) From: Scott Theisen To: ffmpeg-devel@ffmpeg.org Date: Tue, 1 Feb 2022 16:20:52 -0500 Message-Id: <20220201212056.29712-5-scott.the.elm@gmail.com> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20220201212056.29712-1-scott.the.elm@gmail.com> References: <20220201212056.29712-1-scott.the.elm@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 4/8] avpriv_find_start_code(): add doxygen comment and rename a parameter 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: Scott Theisen Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: IeITSQA8dLpk --- libavcodec/internal.h | 15 ++++++++++++++- libavcodec/utils.c | 10 +++++----- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/libavcodec/internal.h b/libavcodec/internal.h index 72ca1553f6..07098e1522 100644 --- a/libavcodec/internal.h +++ b/libavcodec/internal.h @@ -285,9 +285,22 @@ int ff_thread_can_start_frame(AVCodecContext *avctx); int avpriv_h264_has_num_reorder_frames(AVCodecContext *avctx); +/** + * Find the first start code in the buffer p. A start code is a sequence of 4 + * bytes, with memory address increasing left to right and in hexadecimal, with + * the value 00 00 01 XX, where XX represents any value. + * + * @param[in] p A pointer to the start of the memory buffer to scan. + * @param[in] end A pointer to the past the end memory address for the buffer + * given by p. p must be <= end. + * + * @param[out] start_code The found start code if it exists, otherwise an invalid start code. + * @return A pointer to the memory address following the found start code, or end + * if no start code was found. + */ const uint8_t *avpriv_find_start_code(const uint8_t *p, const uint8_t *end, - uint32_t *state); + uint32_t *start_code); int avpriv_codec_get_cap_skip_frame_fill_param(const AVCodec *codec); diff --git a/libavcodec/utils.c b/libavcodec/utils.c index cf88e0a759..54c9dd056d 100644 --- a/libavcodec/utils.c +++ b/libavcodec/utils.c @@ -942,7 +942,7 @@ void ff_thread_report_progress2(AVCodecContext *avctx, int field, int thread, in const uint8_t *avpriv_find_start_code(const uint8_t *av_restrict p, const uint8_t *end, - uint32_t *av_restrict state) + uint32_t *av_restrict start_code) { int i; @@ -950,10 +950,10 @@ const uint8_t *avpriv_find_start_code(const uint8_t *av_restrict p, if (p >= end) return end; - *state = ~0; + *start_code = ~0; for (i = 0; i < 3; i++) { - uint32_t tmp = *state << 8; - *state = tmp + *(p++); + uint32_t tmp = *start_code << 8; + *start_code = tmp + *(p++); if (tmp == 0x100 || p == end) return p; } @@ -987,7 +987,7 @@ const uint8_t *avpriv_find_start_code(const uint8_t *av_restrict p, // this will cause the last 4 bytes before end to be read, // i.e. no out of bounds memory access occurs - *state = AV_RB32(p - 4); + *start_code = AV_RB32(p - 4); // read the previous 4 bytes, i.e. bytes {p - 4, p - 3, p - 2, p - 1} return p; From patchwork Tue Feb 1 21:20:53 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Scott Theisen X-Patchwork-Id: 34049 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6602:2c4e:0:0:0:0 with SMTP id x14csp983504iov; Tue, 1 Feb 2022 13:22:11 -0800 (PST) X-Google-Smtp-Source: ABdhPJzdaUR1Umtq6Ok/mMMdEVghRMeEAGB445Ewf/vK6axxNYGNnmNy0OWBb1e71fOOP1B4qMoy X-Received: by 2002:a05:6402:348a:: with SMTP id v10mr27344629edc.249.1643750531623; Tue, 01 Feb 2022 13:22:11 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1643750531; cv=none; d=google.com; s=arc-20160816; b=KwToKcnA6dE/b6KwCItBp6FSWkCp6/PrPiMvDhpgtN/wo0LkarNaGcJo1xh3i4XVZJ bCGcvpCULVqk93wwElO0qmvtUMNPZLuSiBMfxvR3BKslnsDO7WYCWxyoOjQTUGKbLqr9 CuOCdIuKNyaworGB22feOoNALqo/U1SFdVETrEZYU4LV9yuAVw9TmK3Wdn23QcgfJiAT XPCMwy2SNNenj3/SUpPIU7riWNKwtGjH6Tl1fjfqtbFx8eppzZfVM+dYcmQ3rC/waIv2 26E5cdHJ89riy9DRlwtCJFXJazxkMqAmXGnjzx75PhWlP9DqEyI41uYHvmlt3TWEPEmc Hdlw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature:delivered-to; bh=xyFOlqR0m3M8p9juqWeFpJbPwkYnV/pDlL6n7bqLF04=; b=hAIgTE/q1FOygqbxQJCZnQo8vXPdgU9oWjEUWAgNqj+7ATYLVoqGeXJDyM5kvYGgwW 1/rpDj1aOIeGBldXEDJSBUubqweOJ+daNGhol08+JxRqYvBnpjuVtIytzcR7imPnS3kK Q3mAxOCG+nwfC4Wp3h4EnEh8m5Lg3Ff5bWhGYKgCUXOPNpBiwAEhyyMw7YTsHdrRxkgr iatr0VZBSMBqW4n6f+vNbuGeGdEICETYnPECoBJW5BCib4SAc97SjidOOo+o3f69c/YJ NXBXDwq4UGJ2hO/1DVXnvZN2RW9mAJlgaSZlVTo2uDXh0MEGI6lwu2M/HVog5t87K+I8 bCjA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=nhTDsuIY; 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=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id x13si9577077eds.134.2022.02.01.13.22.10; Tue, 01 Feb 2022 13:22:11 -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=@gmail.com header.s=20210112 header.b=nhTDsuIY; 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=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 056A368AD28; Tue, 1 Feb 2022 23:21:19 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qv1-f44.google.com (mail-qv1-f44.google.com [209.85.219.44]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 34D9868AFAB for ; Tue, 1 Feb 2022 23:21:11 +0200 (EET) Received: by mail-qv1-f44.google.com with SMTP id d8so17261397qvv.2 for ; Tue, 01 Feb 2022 13:21:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=X2N5XKzDYx58j9X2eT8mygoUZncUAn6a6PB0VDV2pgQ=; b=nhTDsuIYWex+8zHDljc7yI0NenVojq5nRftWET/jTRSZ0PGhKTlqXGA3r3Da8NnV34 C8ShBodgS0K+RXzoQjafU9sKBiSkYMES1pGhCcbgDKE6J0Y3FQ66VkV2mYofSZj9Uqc6 X5D9pCXEKkXtmjQzO2yyDrFj2Xcc8TFvz86uM02mN8Sw8K31G/OGEHbREf9H4kGZtJg9 14ozILJ3P+0gcxweCeMBS3oRRzHp7QtddzpVQmCK7UnBAVAcsHVkOtU71at9UbHHRPj0 zH2vmFHksv6pRbbf9sYbP/KjsQ9fSWqtLPjL8wuCviKzIu/Mq+TqMqRuZzsYmPjcVs8T x1Lw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=X2N5XKzDYx58j9X2eT8mygoUZncUAn6a6PB0VDV2pgQ=; b=l0labO91QHF1wmqB8u836ZA4KEX7V4OFqzVTtu8AOJmqCX6OMhy7z4t/xt/y+1JqEd 98NOQWz825tHPPNYFKl0agm6pgUMqzb6KKJfafkHuP/EE60x4kywGJ5ZXfkDgf9IdQwR vwQLwDKBGFutd7HGeNxcmugZya2L/gYbYeIVBpnTy6Cl2/zzn2yok94qz2jYI9vILv5+ GLHZzJQuHcEEGY/tM8nyLdfq7yhu/iIEXf60ketfjHN1ui/icDOZ5De3gHdlmN14FyUS GfulUOTa3UVnDoc9iwxgBjGVKYZQkuctl3tRiri/ICgCNZ2OdOh+wfbD7cT4feF6u0lH 9agw== X-Gm-Message-State: AOAM533s7WQkqxbMumOBGQW9ooHjoSYjI3wFtk2IGTG9jXfKj9XMrBPO 9oZq9zzkeTlv9HGwAg8AU6vocFYUpRz9Tg== X-Received: by 2002:a05:6214:1bcc:: with SMTP id m12mr24418935qvc.76.1643750469833; Tue, 01 Feb 2022 13:21:09 -0800 (PST) Received: from localhost.localdomain ([151.200.235.219]) by smtp.gmail.com with ESMTPSA id ay18sm2928225qkb.8.2022.02.01.13.21.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Feb 2022 13:21:09 -0800 (PST) From: Scott Theisen To: ffmpeg-devel@ffmpeg.org Date: Tue, 1 Feb 2022 16:20:53 -0500 Message-Id: <20220201212056.29712-6-scott.the.elm@gmail.com> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20220201212056.29712-1-scott.the.elm@gmail.com> References: <20220201212056.29712-1-scott.the.elm@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 5/8] avpriv_find_start_code(): replace unnecessary for loop 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: Scott Theisen Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: H+CFaNs1QTcu start_code will still be invalid, i.e. all ones, but will no longer have up to the first three bytes in p shifted in. --- libavcodec/utils.c | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/libavcodec/utils.c b/libavcodec/utils.c index 54c9dd056d..b4c5fa5009 100644 --- a/libavcodec/utils.c +++ b/libavcodec/utils.c @@ -944,19 +944,14 @@ const uint8_t *avpriv_find_start_code(const uint8_t *av_restrict p, const uint8_t *end, uint32_t *av_restrict start_code) { - int i; + *start_code = ~0; av_assert0(p <= end); - if (p >= end) + // minimum length for a start code + if (p + 4 > end) return end; - *start_code = ~0; - for (i = 0; i < 3; i++) { - uint32_t tmp = *start_code << 8; - *start_code = tmp + *(p++); - if (tmp == 0x100 || p == end) - return p; - } + p += 3; // offset for negative indices in while loop /* with memory address increasing left to right, we are looking for (in hexadecimal): * 00 00 01 XX From patchwork Tue Feb 1 21:20:54 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Scott Theisen X-Patchwork-Id: 34050 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6602:2c4e:0:0:0:0 with SMTP id x14csp983623iov; Tue, 1 Feb 2022 13:22:22 -0800 (PST) X-Google-Smtp-Source: ABdhPJzFr+4K9uwUVTFlNechA4+g8hG1ISv4IKK+DM6hou7jhyejNI+xR3DFIQsaOtNf9/YSnVI2 X-Received: by 2002:aa7:d312:: with SMTP id p18mr26442986edq.49.1643750542273; Tue, 01 Feb 2022 13:22:22 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1643750542; cv=none; d=google.com; s=arc-20160816; b=aHuOJDtHgA1Hqp1Ixwbsb/dY8zAuS1lO3bh5a6dDBR5KQrnq2VqeD0BuZJZoInYas3 6Jyn2+XUAP8napvqX2x2ve/bdaIBDbvQQOLi8R5U/wkIzupWdZLt6NpKWTlFld1fsz5B DoJBpGgxJFufTKWo15+lmiUAmurzZvVqTlQWu1m0BKUPGl19BscTcLiqTVjBQFXyfffY 6PEOHgpiWzsNHBpjOk62gSqoeUrxi8GyT95CnbUOjzpp3cP24hO6o5DAUVtGprG3pt4X HffiejcAzlQvlY0ymkrxULlTMk27F6j8yi9e4LOCBLfh8m3nXpAqhY4ANyWGwEsNWwZy VqAw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature:delivered-to; bh=hrn2z/O7F42z/QO5oC+Bl78S/+yaoW/fNbrf4HcLxPo=; b=QeMwZ5YfkrfaJ47LDvE0gRNTVK5WoY+Cb6GSl6x31I+LizDlXdgWMqCIHE+YV4bHiF zEjghmBtg0hpMVt75Qr75FA0OUIBQjkRx4UyiWC3IZt+LHYp8RYeKRc/uvGPphEgSHq+ zm/jCW8FyJ1tA1LZ1BaVrGJ/aiMS7W4LXq1b09ygEqiC9VFo9MDN5kyUffEw2TI0UxJX Rj8BpK86FR5uyBaUOuzCZaip1pmTtqXj99/CuNsYqJ7lXO0WZu3ywGYHpcBW1u8RLS66 a8ZSVhv5cVK+hzJKWtyVQL4BEgv1iUYputLk8YbSlqZcbQoBfc2bkt16Xc2VmvAUAWSm LXGA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b="mVwD/WYx"; 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=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id d1si9631233edq.633.2022.02.01.13.22.21; Tue, 01 Feb 2022 13:22:22 -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=@gmail.com header.s=20210112 header.b="mVwD/WYx"; 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=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id D6C4668B094; Tue, 1 Feb 2022 23:21:19 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qv1-f45.google.com (mail-qv1-f45.google.com [209.85.219.45]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 335E1688180 for ; Tue, 1 Feb 2022 23:21:12 +0200 (EET) Received: by mail-qv1-f45.google.com with SMTP id a7so17255995qvl.1 for ; Tue, 01 Feb 2022 13:21:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=YwfZ84bqx6sfEVAEs3drKRehb16E0Ayb1E2OZ8KCxTQ=; b=mVwD/WYxMF6osp8XIy0KTLYGX6evqvhbNRzfbVZKmc73TZp4q4MOn+ByHnAWBxh73E 34VYRZaU0pYovh/ol53I/VlwZnRjbMpVXUYCQXQ0q/onJ7iL4BD9FsTmvJlHrIq6du9b zLz8Nbof73TbzpAFtwqema56+p5xLPKHLnjYHebpyW5tPKu7rZQXe/wDRorIsdPULC+c hcvf0TXhCNTfl3uFbMJyE419zlo7Akh2YWH4zWGyvHt7UjqQ1pJhC5jPoYVn0nr+cgzt 8Cl6hjMIlMfM0cdNTDqTxImd+/bnDgq6l9utq/FolhoG0gLimX8JVS2fB1eeblKjOJOm l8lg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=YwfZ84bqx6sfEVAEs3drKRehb16E0Ayb1E2OZ8KCxTQ=; b=dOv0Xy9pdxwNDy7NuVgLoCg6tanlYC2IZOpJg2pMyQcKM3PpljAjvvnRYVT49Swn6y StiNqlF39q1ijptyjXbXbJBOXH1XhAxJhZLuTflw53NZ0U1wA+X9hYcoD6Q+MjARR690 uo+m+54ZpyDBvZlYncVs/5PTKn3B7e4AFhBavoZph/Qrh/W5qZbc4q4GQxj4gw8Sfn2O cSm17GhdYgMhA8qKFKBecoNXlusZecSYr01Glu3IuTx35vD0/BqcsbHk5is8LxSK/nFQ FbYCVB114vSZSXJ8jPAvikd00rk68d/UJUcqJM+eu6yt8cflhQBnXdT4dsfWBgDJryZh Qx+w== X-Gm-Message-State: AOAM533Py5qk/rVdvGr6g84EZv0zxFMcLDEDOKZMcHJG9+Lxp1G9RoP/ b5KiyIbSdWWGeEfaEn3JYabyhkBFTuAwbA== X-Received: by 2002:ad4:5bc4:: with SMTP id t4mr24225731qvt.38.1643750470476; Tue, 01 Feb 2022 13:21:10 -0800 (PST) Received: from localhost.localdomain ([151.200.235.219]) by smtp.gmail.com with ESMTPSA id ay18sm2928225qkb.8.2022.02.01.13.21.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Feb 2022 13:21:10 -0800 (PST) From: Scott Theisen To: ffmpeg-devel@ffmpeg.org Date: Tue, 1 Feb 2022 16:20:54 -0500 Message-Id: <20220201212056.29712-7-scott.the.elm@gmail.com> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20220201212056.29712-1-scott.the.elm@gmail.com> References: <20220201212056.29712-1-scott.the.elm@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 6/8] avcodec/internal.h: create avpriv_start_code_is_valid() 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: Scott Theisen Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: j5/J+uMGJf9+ --- libavcodec/cavsdec.c | 2 +- libavcodec/cbs_mpeg2.c | 4 ++-- libavcodec/extract_extradata_bsf.c | 2 +- libavcodec/internal.h | 14 ++++++++++++++ libavcodec/mpeg12.c | 2 +- libavcodec/mpeg12dec.c | 2 +- libavcodec/mpegvideo_parser.c | 2 +- libavcodec/remove_extradata_bsf.c | 8 +++----- libavcodec/vaapi_vc1.c | 2 +- libavcodec/vc1_common.h | 4 +--- libavcodec/vc1dec.c | 2 +- libavformat/avs2dec.c | 4 ++-- libavformat/avs3dec.c | 4 ++-- libavformat/cavsvideodec.c | 2 +- libavformat/mpegvideodec.c | 2 +- libavformat/rtpenc_mpv.c | 2 +- 16 files changed, 34 insertions(+), 24 deletions(-) diff --git a/libavcodec/cavsdec.c b/libavcodec/cavsdec.c index 692c77eb39..a62177d520 100644 --- a/libavcodec/cavsdec.c +++ b/libavcodec/cavsdec.c @@ -1249,7 +1249,7 @@ static int cavs_decode_frame(AVCodecContext *avctx, void *data, int *got_frame, buf_end = buf + buf_size; for(;;) { buf_ptr = avpriv_find_start_code(buf_ptr, buf_end, &stc); - if ((stc & 0xFFFFFE00) || buf_ptr == buf_end) { + if (!avpriv_start_code_is_valid(stc) || buf_ptr == buf_end) { if (!h->stc) av_log(h->avctx, AV_LOG_WARNING, "no frame decoded\n"); return FFMAX(0, buf_ptr - buf); diff --git a/libavcodec/cbs_mpeg2.c b/libavcodec/cbs_mpeg2.c index 03ea49cbca..648b270f44 100644 --- a/libavcodec/cbs_mpeg2.c +++ b/libavcodec/cbs_mpeg2.c @@ -152,7 +152,7 @@ static int cbs_mpeg2_split_fragment(CodedBitstreamContext *ctx, start = avpriv_find_start_code(frag->data, frag->data + frag->data_size, &start_code); - if (start_code >> 8 != 0x000001) { + if (!avpriv_start_code_is_valid(start_code)) { // No start code found. return AVERROR_INVALIDDATA; } @@ -167,7 +167,7 @@ static int cbs_mpeg2_split_fragment(CodedBitstreamContext *ctx, // (may be the last byte of fragment->data); end points to the byte // following the byte containing the start code identifier (or to // the end of fragment->data). - if (start_code >> 8 == 0x000001) { + if (avpriv_start_code_is_valid(start_code)) { // Unit runs from start to the beginning of the start code // pointed to by end (including any padding zeroes). unit_size = (end - 4) - start; diff --git a/libavcodec/extract_extradata_bsf.c b/libavcodec/extract_extradata_bsf.c index dbcb8508b0..4df1c97139 100644 --- a/libavcodec/extract_extradata_bsf.c +++ b/libavcodec/extract_extradata_bsf.c @@ -240,7 +240,7 @@ static int extract_extradata_vc1(AVBSFContext *ctx, AVPacket *pkt, ptr = avpriv_find_start_code(ptr, end, &state); if (state == VC1_CODE_SEQHDR || state == VC1_CODE_ENTRYPOINT) { has_extradata = 1; - } else if (has_extradata && IS_MARKER(state)) { + } else if (has_extradata && avpriv_start_code_is_valid(state)) { extradata_size = ptr - 4 - pkt->data; break; } diff --git a/libavcodec/internal.h b/libavcodec/internal.h index 07098e1522..2f9f99482c 100644 --- a/libavcodec/internal.h +++ b/libavcodec/internal.h @@ -285,6 +285,20 @@ int ff_thread_can_start_frame(AVCodecContext *avctx); int avpriv_h264_has_num_reorder_frames(AVCodecContext *avctx); +/** + * @brief Test whether a start code found by avpriv_find_start_code() is valid. + * + * Use this to test the validity of a start code or if a start code can be at the + * end of the buffer, where testing the return value of avpriv_find_start_code() + * would incorrectly imply that the start code is invalid. + * + * @param[in] start_code The start code to test. + * @return A boolean that is true if and only if start_code is valid + */ +static av_always_inline int avpriv_start_code_is_valid(uint32_t start_code) { + return (start_code & 0xFFFFFF00) == 0x100; +} + /** * Find the first start code in the buffer p. A start code is a sequence of 4 * bytes, with memory address increasing left to right and in hexadecimal, with diff --git a/libavcodec/mpeg12.c b/libavcodec/mpeg12.c index 58e03c05d4..e45bc74479 100644 --- a/libavcodec/mpeg12.c +++ b/libavcodec/mpeg12.c @@ -217,7 +217,7 @@ int ff_mpeg1_find_frame_end(ParseContext *pc, const uint8_t *buf, int buf_size, pc->frame_start_found = 0; if (pc->frame_start_found < 4 && state == EXT_START_CODE) pc->frame_start_found++; - if (pc->frame_start_found == 4 && (state & 0xFFFFFF00) == 0x100) { + if (pc->frame_start_found == 4 && avpriv_start_code_is_valid(state)) { if (state < SLICE_MIN_START_CODE || state > SLICE_MAX_START_CODE) { pc->frame_start_found = 0; pc->state = -1; diff --git a/libavcodec/mpeg12dec.c b/libavcodec/mpeg12dec.c index 1110fcb319..691b535bfc 100644 --- a/libavcodec/mpeg12dec.c +++ b/libavcodec/mpeg12dec.c @@ -2476,7 +2476,7 @@ static int decode_chunks(AVCodecContext *avctx, AVFrame *picture, /* find next start code */ uint32_t start_code; buf_ptr = avpriv_find_start_code(buf_ptr, buf_end, &start_code); - if (start_code > 0x1ff) { + if (!avpriv_start_code_is_valid(start_code)) { if (!skip_frame) { if (HAVE_THREADS && (avctx->active_thread_type & FF_THREAD_SLICE) && diff --git a/libavcodec/mpegvideo_parser.c b/libavcodec/mpegvideo_parser.c index c991a82405..9fd145586f 100644 --- a/libavcodec/mpegvideo_parser.c +++ b/libavcodec/mpegvideo_parser.c @@ -82,7 +82,7 @@ static int mpeg1_find_frame_end(ParseContext *pc, const uint8_t *buf, pc->frame_start_found = 0; if (pc->frame_start_found < 4 && state == EXT_START_CODE) pc->frame_start_found++; - if (pc->frame_start_found == 4 && (state & 0xFFFFFF00) == 0x100) { + if (pc->frame_start_found == 4 && avpriv_start_code_is_valid(state)) { if (state < SLICE_MIN_START_CODE || state > SLICE_MAX_START_CODE) { pc->frame_start_found = 0; pc->state = -1; diff --git a/libavcodec/remove_extradata_bsf.c b/libavcodec/remove_extradata_bsf.c index 1d5f193f89..0e42174912 100644 --- a/libavcodec/remove_extradata_bsf.c +++ b/libavcodec/remove_extradata_bsf.c @@ -35,8 +35,6 @@ enum RemoveFreq { REMOVE_FREQ_NONKEYFRAME, }; -#define START_CODE 0x000001 - typedef struct RemoveExtradataContext { const AVClass *class; int freq; @@ -73,7 +71,7 @@ static int h264_split(const uint8_t *buf, int buf_size) while (ptr < end) { ptr = avpriv_find_start_code(ptr, end, &state); - if ((state & 0xFFFFFF00) != 0x100) + if (!avpriv_start_code_is_valid(state)) break; nalu_type = state & 0x1F; if (nalu_type == H264_NAL_SPS) { @@ -111,7 +109,7 @@ static int hevc_split(const uint8_t *buf, int buf_size) while (ptr < end) { ptr = avpriv_find_start_code(ptr, end, &state); - if ((state >> 8) != START_CODE) + if (!avpriv_start_code_is_valid(state)) break; nut = (state >> 1) & 0x3F; if (nut == HEVC_NAL_VPS) @@ -171,7 +169,7 @@ static int vc1_split(const uint8_t *buf, int buf_size) ptr = avpriv_find_start_code(ptr, end, &state); if (state == VC1_CODE_SEQHDR || state == VC1_CODE_ENTRYPOINT) { charged = 1; - } else if (charged && IS_MARKER(state)) + } else if (charged && avpriv_start_code_is_valid(state)) return ptr - 4 - buf; } diff --git a/libavcodec/vaapi_vc1.c b/libavcodec/vaapi_vc1.c index 4e9607d9be..379104f688 100644 --- a/libavcodec/vaapi_vc1.c +++ b/libavcodec/vaapi_vc1.c @@ -471,7 +471,7 @@ static int vaapi_vc1_decode_slice(AVCodecContext *avctx, const uint8_t *buffer, int err; /* Current bit buffer is beyond any marker for VC-1, so skip it */ - if (avctx->codec_id == AV_CODEC_ID_VC1 && IS_MARKER(AV_RB32(buffer))) { + if (avctx->codec_id == AV_CODEC_ID_VC1 && avpriv_start_code_is_valid(AV_RB32(buffer))) { buffer += 4; size -= 4; } diff --git a/libavcodec/vc1_common.h b/libavcodec/vc1_common.h index b46c33f7e2..483f86a4ee 100644 --- a/libavcodec/vc1_common.h +++ b/libavcodec/vc1_common.h @@ -41,8 +41,6 @@ enum VC1Code { }; //@} -#define IS_MARKER(x) (((x) & ~0xFF) == VC1_CODE_RES0) - /** Available Profiles */ //@{ enum Profile { @@ -61,7 +59,7 @@ static av_always_inline const uint8_t* find_next_marker(const uint8_t *src, cons if (end - src >= 4) { uint32_t mrk = 0xFFFFFFFF; src = avpriv_find_start_code(src, end, &mrk); - if (IS_MARKER(mrk)) + if (avpriv_start_code_is_valid(mrk)) return src - 4; } return end; diff --git a/libavcodec/vc1dec.c b/libavcodec/vc1dec.c index 7ed5133cfa..86749e5973 100644 --- a/libavcodec/vc1dec.c +++ b/libavcodec/vc1dec.c @@ -664,7 +664,7 @@ static int vc1_decode_frame(AVCodecContext *avctx, void *data, if (!buf2) return AVERROR(ENOMEM); - if (IS_MARKER(AV_RB32(buf))) { /* frame starts with marker and needs to be parsed */ + if (avpriv_start_code_is_valid(AV_RB32(buf))) { /* frame starts with marker and needs to be parsed */ const uint8_t *start, *end, *next; int size; diff --git a/libavformat/avs2dec.c b/libavformat/avs2dec.c index 51908d2b63..bdeb746fc7 100644 --- a/libavformat/avs2dec.c +++ b/libavformat/avs2dec.c @@ -42,8 +42,8 @@ static int avs2_probe(const AVProbeData *p) while (ptr < end) { ptr = avpriv_find_start_code(ptr, end, &code); - state = code & 0xFF; - if ((code & 0xffffff00) == 0x100) { + if (avpriv_start_code_is_valid(code)) { + state = code & 0xFF; if (AVS2_ISUNIT(state)) { if (sqb && !hds) { hds = ptr - sqb; diff --git a/libavformat/avs3dec.c b/libavformat/avs3dec.c index 253caa7c1d..2daccd3d15 100644 --- a/libavformat/avs3dec.c +++ b/libavformat/avs3dec.c @@ -36,8 +36,8 @@ static int avs3video_probe(const AVProbeData *p) while (ptr < end) { ptr = avpriv_find_start_code(ptr, end, &code); - state = code & 0xFF; - if ((code & 0xFFFFFF00) == 0x100) { + if (avpriv_start_code_is_valid(code)) { + state = code & 0xFF; if (state < AVS3_SEQ_START_CODE) { if (code < slice_pos) return 0; diff --git a/libavformat/cavsvideodec.c b/libavformat/cavsvideodec.c index 8900b97597..1d007708cc 100644 --- a/libavformat/cavsvideodec.c +++ b/libavformat/cavsvideodec.c @@ -38,7 +38,7 @@ static int cavsvideo_probe(const AVProbeData *p) while (ptr < end) { ptr = avpriv_find_start_code(ptr, end, &code); - if ((code & 0xffffff00) == 0x100) { + if (avpriv_start_code_is_valid(code)) { if(code < CAVS_SEQ_START_CODE) { /* slices have to be consecutive */ if(code < slice_pos) diff --git a/libavformat/mpegvideodec.c b/libavformat/mpegvideodec.c index 2d6f81aaa1..a9829dc1df 100644 --- a/libavformat/mpegvideodec.c +++ b/libavformat/mpegvideodec.c @@ -44,7 +44,7 @@ static int mpegvideo_probe(const AVProbeData *p) while (ptr < end) { ptr = avpriv_find_start_code(ptr, end, &code); - if ((code & 0xffffff00) == 0x100) { + if (avpriv_start_code_is_valid(code)) { switch(code){ case SEQ_START_CODE: if (!(ptr[3 + 1 + 2] & 0x20)) diff --git a/libavformat/rtpenc_mpv.c b/libavformat/rtpenc_mpv.c index bb63c9bdc6..abfe3b32eb 100644 --- a/libavformat/rtpenc_mpv.c +++ b/libavformat/rtpenc_mpv.c @@ -56,7 +56,7 @@ void ff_rtp_send_mpegvideo(AVFormatContext *s1, const uint8_t *buf1, int size) while (1) { uint32_t start_code; r = avpriv_find_start_code(r1, end, &start_code); - if((start_code & 0xFFFFFF00) == 0x100) { + if (avpriv_start_code_is_valid(start_code)) { /* New start code found */ if (start_code == 0x100) { frame_type = (r[1] & 0x38) >> 3; From patchwork Tue Feb 1 21:20:55 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Scott Theisen X-Patchwork-Id: 34051 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6602:2c4e:0:0:0:0 with SMTP id x14csp983742iov; Tue, 1 Feb 2022 13:22:33 -0800 (PST) X-Google-Smtp-Source: ABdhPJwZN9MFIPXPiSsuJuYToqPSPVIyf9OtPs7Y7AZn7SJwAzdrJ8uGw/OSCZye4WSXRHSQV+6Q X-Received: by 2002:a17:906:6a20:: with SMTP id qw32mr22015229ejc.40.1643750553365; Tue, 01 Feb 2022 13:22:33 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1643750553; cv=none; d=google.com; s=arc-20160816; b=RkMiNcOtN9Q0W6qnzxzkgS3VGHCj9tkkrZoU2hFMLHNdTNhmG/u6xkUQIod10awryi 0AvIQLXd+OtrxKlW6UOQ/cSrRM2NcyAL6t3ov/8BfYLrBHY6fJQF/ZaML3vkmXlcSlKR c9TgiqPzZdu+eBINFDTlLVV8l78SUDr5HRz5ohJgNL7zkrGfOiAY6Nwsct8VRQ/B/A/v zzA/Df61mLRUVuSQEMp84B11+Q6h7527C9ck8Xbpfj1vDeIbI0neiLb7Z6mTQuBx/v1w 4mCb1oSoCvqDyEANXLZr/lrSKvEr1oBQ/19KfNJuy1el2Wj4qU/G+KheHESbzktqI8iF hdcA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature:delivered-to; bh=m3dETzg9BGPlVD14Xx+2158n8a0W3OoZAd7XBhQgvqM=; b=BZZiZTizsTBTwRjebgxxEOHDWDAk1pjp4WXMaM0s/u2XBKcJHBNP8mlxti1lZKHwNz 080EWt2eMotW1HVuPidBXRYXTAfGAPjCeBXqxEEfLBX15f/JdgmxPAU8hkYyMq8yVAOy bWCCTcZL07aPsF+JVmBlYkcpFMCEKyftPEPnpUtNXbu/p2YdEWoiQCAQG3s3+tTDsDke RVAG2qp9u+LThs7x5IhayZ7sapnJyv+brJBz0Aoac60617428rYfk3kqAOS2Hi3AdeK7 PGInAXRZLA14N0wsdKHdTE+vScw6fC7/IZNsuIbJ7/5Tpu99yiOY0GSWQADL9qdnDc1W nEeQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=EWnRErFa; 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=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id c15si12405264ede.581.2022.02.01.13.22.33; Tue, 01 Feb 2022 13:22:33 -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=@gmail.com header.s=20210112 header.b=EWnRErFa; 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=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id EC92368AFE1; Tue, 1 Feb 2022 23:21:20 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qv1-f48.google.com (mail-qv1-f48.google.com [209.85.219.48]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 999CF68AFEB for ; Tue, 1 Feb 2022 23:21:12 +0200 (EET) Received: by mail-qv1-f48.google.com with SMTP id g13so17241864qvw.4 for ; Tue, 01 Feb 2022 13:21:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=NEFO7J6Y/UQrD2jkMu+IML0DYDbtmtdlPGF6se3LOwA=; b=EWnRErFaOrnBbgLN5a7d4kphhmX7WcQ+yCFjmm7M4wDUKsveJUkTAztbvo9jcHPp6o E0ctor8xOAiRAq6/05zAjaq4oeIEUTdU10PbRMvfdm/5zVqXA9OdYP0+WO8sForlIu0o DxkaquPEgYnqXjZREug5Ps1A0eV8+6Llj5ZYCHdz4FsyOGKFWVnycWDX9GH2tjGu8qZq l7ADPS247K8g112ICZtV1DBVXZjhqKVNzBjfw2WLbJOzLfrlN8Up7fxC9AvKMpilohM/ PhHNMh8PXSN3FmkuALqlZ5rTXNV//UyfLDfYCKYEN1UFqcwKpKotVTNpO0Fc3DHhtxuD UJLw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=NEFO7J6Y/UQrD2jkMu+IML0DYDbtmtdlPGF6se3LOwA=; b=Qa+ov8Je73Afps3T4/Z6zgyHjiuZgyWq4lCuKBZZjiiqGCrf+ETuSwu8H8blSDxV/r LEiDj9XGfUchEyqcc3bKmuBJI9h4VTT/olypof8glHXQhG0GlvAXeF+6sDhTjgO8Riul vu6spzDQ9T/y267hH93i7N1pHyzSkXb8mPkFpYEutyY1tGu6iXcGYHJ0OmuM4pO3XHIl F4YgQfsIZMQOk/CXVdWVsLAg5D7QwnuMErpt7I9BZiCOAJdfmXfoO+wSlpmNQlPs8L+G TKS7S6IpbDN8Y9Vn8/pASYmr5znMvRgkbpdsaNDoJoyoPd4Oud0Tvxpg3jWn/Tef1J6T of6A== X-Gm-Message-State: AOAM530ismGMBefEXnzY5l5eiTjwBpi9RcmCBE/mAbzOsa8qeAtTi4Od 2nLYtMjhehYZcGByDd9WDreYnLUoOKhWcA== X-Received: by 2002:a05:6214:2486:: with SMTP id gi6mr24196879qvb.126.1643750471174; Tue, 01 Feb 2022 13:21:11 -0800 (PST) Received: from localhost.localdomain ([151.200.235.219]) by smtp.gmail.com with ESMTPSA id ay18sm2928225qkb.8.2022.02.01.13.21.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Feb 2022 13:21:10 -0800 (PST) From: Scott Theisen To: ffmpeg-devel@ffmpeg.org Date: Tue, 1 Feb 2022 16:20:55 -0500 Message-Id: <20220201212056.29712-8-scott.the.elm@gmail.com> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20220201212056.29712-1-scott.the.elm@gmail.com> References: <20220201212056.29712-1-scott.the.elm@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 7/8] cbs_mpeg2.c: use a while loop with a loop condition instead of an infinite loop 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: Scott Theisen Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: as2wWe0FbOu3 This enhances the clarity of the code. --- libavcodec/cbs_mpeg2.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/libavcodec/cbs_mpeg2.c b/libavcodec/cbs_mpeg2.c index 648b270f44..2b80266910 100644 --- a/libavcodec/cbs_mpeg2.c +++ b/libavcodec/cbs_mpeg2.c @@ -148,7 +148,7 @@ static int cbs_mpeg2_split_fragment(CodedBitstreamContext *ctx, CodedBitstreamUnitType unit_type; uint32_t start_code = -1; size_t unit_size; - int err, i, final = 0; + int err, i = 0, final = 0; start = avpriv_find_start_code(frag->data, frag->data + frag->data_size, &start_code); @@ -157,7 +157,7 @@ static int cbs_mpeg2_split_fragment(CodedBitstreamContext *ctx, return AVERROR_INVALIDDATA; } - for (i = 0;; i++) { + while (!final) { unit_type = start_code & 0xff; end = avpriv_find_start_code(start--, frag->data + frag->data_size, @@ -182,10 +182,8 @@ static int cbs_mpeg2_split_fragment(CodedBitstreamContext *ctx, if (err < 0) return err; - if (final) - break; - start = end; + i++; } return 0; From patchwork Tue Feb 1 21:20:56 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Scott Theisen X-Patchwork-Id: 34052 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6602:2c4e:0:0:0:0 with SMTP id x14csp983852iov; Tue, 1 Feb 2022 13:22:44 -0800 (PST) X-Google-Smtp-Source: ABdhPJxM2tH482RG0xP0TJrS6IyQtRkQAollBPd6DKC7a/8ryqZdcHCDliEG/ydka39pdpfcxDJ3 X-Received: by 2002:a05:6402:2683:: with SMTP id w3mr27651604edd.405.1643750564499; Tue, 01 Feb 2022 13:22:44 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1643750564; cv=none; d=google.com; s=arc-20160816; b=ZLXVYf1ZR5U9SL4IsJouDa7osfp2ZeI2xBIEIAS+SvgcZuMRNl86gsPxZxzjU2pdxL PqvsqpnMfzym7HBMNd0bCfDQTaJRJor1YSCG+1RTiDilx8q05m5x8c4c20/DJLj1X90h epBCyw6K25Ik7cE2JQ2Jtuvv87VGcDU4gdwokAajXsheScUv2AspmpOPyHrB2KFVdB3Q VqPbB57nilJnBsYZvKZA6gXn9l4w03OY4M8RacHBCVwKfz4SXz2ouAZ6N9Fu/qHKjJCF Y5/aT9hE3OlpaixOlXBwj3x/cRBcPQ/MWsq/mw+8+iLHb7yp1br7b1W+Wl3G1PyQyLTK vmPQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature:delivered-to; bh=rP5cnzZRbvUa/o8pzmkNBlWO9y3R2TW6fiMj9w+6qgU=; b=JZuDmDzN74rr5EbKR5i+np2X+YGV7V/qMGX9UO+tUr++DObpqV2bGFVhZrZzC+gPNT Fub4K9/zZVVqHbhJifccrRuOOK6dk/TvZZw1Ge5i8WpdG2H57cFCNDQP6AbryCrxFS7P 6gwAw+jVeaGSi/7Vfkl8oFRAwKVsmHQYjoVi1d/oV8qCGzjTgMUgzoq1fcFzgMI18wdN kele9yoMtFjlv6K/lKcEy86Rs38yrmuWz/JYUS02Wd+1D1hfe2GEJdpe1Fa4i0COJmOA KdItLdJdsY2cGnu9LiZko/qezcDnm87nUWqeQcDVKsC9Sy9NtOhA5S+5q7kwzKLP0qCf i0Og== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=DOUASdlN; 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=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id 24si9307587eje.966.2022.02.01.13.22.44; Tue, 01 Feb 2022 13:22:44 -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=@gmail.com header.s=20210112 header.b=DOUASdlN; 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=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id BFDA668B102; Tue, 1 Feb 2022 23:21:21 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qk1-f182.google.com (mail-qk1-f182.google.com [209.85.222.182]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 68DEB68B070 for ; Tue, 1 Feb 2022 23:21:13 +0200 (EET) Received: by mail-qk1-f182.google.com with SMTP id g145so16385171qke.3 for ; Tue, 01 Feb 2022 13:21:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=KPPSlGtjCB1/5TPBdOPlm6usl0v+OscZcchvzRlXvmo=; b=DOUASdlNSzTSBV4RuC5CQYDlJm6qJqSSm1H6T1Z9h5aKwg6ajkEBVeFH8O5O0H7h8G YidBWAg6EviSHJeBwlG4mc1gwZfxek0uGfj83BlA3IB//70pADy9yxCLEPKZwVm8vDVg 9YSty+XKTBnFZRcGK6wnqmRVep7XiLLmnnIL+qyzNaQdEs4TWXm1+4AFUOFdr0IegoEi wOeqKYChbzfgEW5DLI+hQNijNsLb3oSfCWZ1tgxqTDzBwGN8fkA6JAnWis1CXDWKA+8K drSIKns2h8pWzBAEkm9CQZg67KS9tvlBhOUnDH8mEdVMD0cRPUHpgisib+GA3QK7FEjd K/qQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=KPPSlGtjCB1/5TPBdOPlm6usl0v+OscZcchvzRlXvmo=; b=FvT3P25mmOxe8yNLnPOHjIAJhMdKLWjHolKKHnE8Unaaq7J90PwRd/4BuXtOV3o9yX UnetqYkrnMqT4VQQAsDxIrCBRrnFkQHiKKpCxRAys2cT76v2JzpOKV86IH86SEUy2b/6 PPaCBICdb0r8KRFJ6p+2F0hIb/WdaK90uKcB0c4enhE8m6knN6tE5TJUbCTl17IJ86/V kjnQ/UEyY9W1TCWqogSJOJGPyzXv93oQ8ZFfZE8/n2qeOn4JH4nvgTTONAFz0xsfz0M4 jKkJDJuM6BVHmGBIQwO/YPO3rpV22ySP6KOb/ZwyfQGscnLJ03KJj1gag0OQPzY4iS3N muhg== X-Gm-Message-State: AOAM530AO0SBO7QVj2MPcc2XstJTqPc1RhO0UijCD0z6Myx8g9jWvBEH cr9PJWbbttKpLCtydk6Ypj/n1NJqYV18Lg== X-Received: by 2002:a37:270a:: with SMTP id n10mr18584619qkn.422.1643750471895; Tue, 01 Feb 2022 13:21:11 -0800 (PST) Received: from localhost.localdomain ([151.200.235.219]) by smtp.gmail.com with ESMTPSA id ay18sm2928225qkb.8.2022.02.01.13.21.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Feb 2022 13:21:11 -0800 (PST) From: Scott Theisen To: ffmpeg-devel@ffmpeg.org Date: Tue, 1 Feb 2022 16:20:56 -0500 Message-Id: <20220201212056.29712-9-scott.the.elm@gmail.com> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20220201212056.29712-1-scott.the.elm@gmail.com> References: <20220201212056.29712-1-scott.the.elm@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 8/8] avpriv_find_start_code(): reduce the number of iterations 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: Scott Theisen Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: /Wn6xli56HA5 by correctly starting with three new bytes on the next iteration, instead of keeping byte p[-3] which is invalid, i.e. known to be 01 when it must be 00. --- libavcodec/utils.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavcodec/utils.c b/libavcodec/utils.c index b4c5fa5009..d485d0c96b 100644 --- a/libavcodec/utils.c +++ b/libavcodec/utils.c @@ -965,7 +965,7 @@ const uint8_t *avpriv_find_start_code(const uint8_t *av_restrict p, // i.e. p[-1] == 0 is equivalent to p[-1] < 1 // UU UU 01 - else if (p[-2] != 0) p += 2; // we have UU YY 01, so increment by 2 + else if (p[-2] != 0) p += 3; // we have UU YY 01, so increment by 3 // to start check over with 3 new bytes // UU 00 01 else if (p[-3] != 0) p += 3; // we have YY 00 01, so increment by 3 From patchwork Thu Feb 3 18:44:47 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Scott Theisen X-Patchwork-Id: 34098 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6602:2c4e:0:0:0:0 with SMTP id x14csp2741500iov; Thu, 3 Feb 2022 10:46:40 -0800 (PST) X-Google-Smtp-Source: ABdhPJymkJDaCDJZTDVcKfLRWTCKIMG2zWmPA9KngkTo8WQVjU9EBIT/MqrBrUh1MGNWTXBQ5XCk X-Received: by 2002:a17:907:7e9f:: with SMTP id qb31mr30411795ejc.468.1643913999950; Thu, 03 Feb 2022 10:46:39 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1643913999; cv=none; d=google.com; s=arc-20160816; b=lsGWCy21/Ef4oH8rGNopaJ0Nzi+KN1o9rCh5a1DehJSiM1PIZs9vYPeCaWsT8r25W9 L9Toj04YVjOq4/27omwpKQbzKDAqcAo5dQG+E4XEtcY13meriBralmyoioYaFY6Do3zL bHUUxa2RvgEMjyUFtxMso7ROmhkwKjMh/ayjhV28j8mWWQXqyCW4ssFWFjxt+qtdR2AI z1YTPf4jX/mGQdLKllnC0oJ0Iz88WkSbZs+TWUX/HizmLuPhOW1NL98EQzLbC7mvxuyx N42Lotu6R+qWfnycnVNEk95UzHWNqH5ZyLs0Op5PfPRP9cqAS2q2mCmS8uTLd6oEN5Kj N1xQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature:delivered-to; bh=nmg3rvZ3RiiHrA/kmO/c9t+1gjE6WIJYahdY+eZQ0tI=; b=E0OzWUx2ciIl3b9KXPz5hjMSZeN5ht5CeK/cJOHvkDs4RNTCWNpQ4GVOmFBkjGfSaL 1M5xSsGIoVgaGyyam25uQ+868CjJGd70oiongYkP9ueNQIgOPBO2z161VqGi+5zWi+RH olza5jIpWr6aOFir5Nn2XpSaEL3NLuYJek4EhXKCD43+pQDyiE3E5HB8+Z6KZ75XvYdg +NqQz8SXE1spGEIY4JqYN/pPJ1ef1HFGEemQPHLygkIRuF9+3JRj9vdZjE12Y8TuQPw2 BpW50UauEtd6qHGZZbAzfwGPnsGxFfcOeVSOEjr/F8kYR1gKXh2sSMTZyKyelUthEqBd p9Zg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=HlhnHFco; 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=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id d30si13494969ejo.144.2022.02.03.10.46.37; Thu, 03 Feb 2022 10:46:39 -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=@gmail.com header.s=20210112 header.b=HlhnHFco; 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=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id CDC5468B1A6; Thu, 3 Feb 2022 20:45:42 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qt1-f174.google.com (mail-qt1-f174.google.com [209.85.160.174]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2541168B15A for ; Thu, 3 Feb 2022 20:45:38 +0200 (EET) Received: by mail-qt1-f174.google.com with SMTP id p14so3714198qtx.0 for ; Thu, 03 Feb 2022 10:45:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=6TtBKnRc/q65PuEwViCo/0Q7qdak8CEUFAt/85ItZoI=; b=HlhnHFcoS7n7312lmUYMlTNLaYU9h+hCNZ7XJX44rF10NC00mR69wzLejf9hzJUbxv pMkzOPfl0WtzyJRGfXnqUR0NEXpDYrgq/yrMq9iJ1V/xONRAEEb2sNYR9i8GvPMUS+WL gpd0igzhKhRawhfvvHCvUjJy3e5F1YdxYnrnJmXoASe0Ay1q/y7Eq2dUkoGcteiWKQ0d azEjHyNbrX2CyhTENcwbwXDsT4NoFOBF7m7KK2NDUQt7B9ZGZD3x60GtBnjW3HFt8+E/ sznbIIYWY1zH94qoPhNGvOkU2zRLaFM6ArXIVLG2MABXnPMHOkZGqJNoLC2yAspDB7rE ugbQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=6TtBKnRc/q65PuEwViCo/0Q7qdak8CEUFAt/85ItZoI=; b=3fb42AISb+Yo5cLBhUZu5imkS2jTSAYQIQIlvbU3Mkk21Kt4QKsO63pJ1Ubd6GyHp3 C43GOrW6o7UHjYP5DZS9PyRI60gInzEDbD2HVRTBtAI4V0xeX32EKxPG4dkPsxDSjh4s XsAR1j+8y70UXXqV7CIJrEz92wlycGYKPbSh686Iu51NE33Lq2SQ7Z9Ti8PKNjm6b4Pw 83uwqSMRA/moVFi1F278QhNObbUNSJ3jjguMgPnBD8CK5OuW1ZFCkEn/zhgs0JR8p4Kp ItHY2frDA1zwCpKFoYxR3uza+Sb+AtFtmCfEuL00peoLqdFb0tP04Xyfgpwjop+7Jn9G st9w== X-Gm-Message-State: AOAM532ZqnsJDeksdYbIyY8I1b6jNDNIuzwlP8fxWkgCTifhsyIvnKFu bLpgiL2d1JDeKO8feHv77G3j/GYVZggZvQ== X-Received: by 2002:ac8:5bc1:: with SMTP id b1mr27230541qtb.495.1643913937468; Thu, 03 Feb 2022 10:45:37 -0800 (PST) Received: from localhost.localdomain ([151.200.235.219]) by smtp.gmail.com with ESMTPSA id f16sm5947887qtk.8.2022.02.03.10.45.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Feb 2022 10:45:36 -0800 (PST) From: Scott Theisen To: ffmpeg-devel@ffmpeg.org Date: Thu, 3 Feb 2022 13:44:47 -0500 Message-Id: <20220203184450.5491-11-scott.the.elm@gmail.com> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20220203184450.5491-1-scott.the.elm@gmail.com> References: <20220201212056.29712-1-scott.the.elm@gmail.com> <20220203184450.5491-1-scott.the.elm@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 10/13] cbs_mpeg2.c: use a while loop with a loop condition instead of an infinite loop 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: Scott Theisen Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: yhJ/4j6CkRvo This enhances the clarity of the code. --- libavcodec/cbs_mpeg2.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/libavcodec/cbs_mpeg2.c b/libavcodec/cbs_mpeg2.c index d41477620e..afe78eef9a 100644 --- a/libavcodec/cbs_mpeg2.c +++ b/libavcodec/cbs_mpeg2.c @@ -148,7 +148,7 @@ static int cbs_mpeg2_split_fragment(CodedBitstreamContext *ctx, CodedBitstreamUnitType unit_type; uint32_t start_code = -1; size_t unit_size; - int err, i, final = 0; + int err, i = 0, final = 0; start = avpriv_find_start_code(frag->data, frag->data + frag->data_size, &start_code, 1); @@ -157,7 +157,7 @@ static int cbs_mpeg2_split_fragment(CodedBitstreamContext *ctx, return AVERROR_INVALIDDATA; } - for (i = 0;; i++) { + while (!final) { unit_type = start_code & 0xff; if (start == frag->data + frag->data_size) { @@ -190,10 +190,8 @@ static int cbs_mpeg2_split_fragment(CodedBitstreamContext *ctx, if (err < 0) return err; - if (final) - break; - start = end; + i++; } return 0;