From patchwork Tue Jul 5 20:26:49 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 36685 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:8b27:b0:88:1bbf:7fd2 with SMTP id l39csp3728509pzh; Tue, 5 Jul 2022 13:29:11 -0700 (PDT) X-Google-Smtp-Source: AGRyM1t2+stYPp7IAGwsDYcDWPxRJp+IS4niGpk9bKj7YVR5FQ19R6IRkSJCHLHVq/mOLOPKkv0g X-Received: by 2002:a17:906:118:b0:715:771b:251b with SMTP id 24-20020a170906011800b00715771b251bmr35206988eje.651.1657052950868; Tue, 05 Jul 2022 13:29:10 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id hc41-20020a17090716a900b00711f5909101si18742225ejc.955.2022.07.05.13.29.10; Tue, 05 Jul 2022 13:29:10 -0700 (PDT) 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=c5SqHeNp; 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 0BE4B68BA2D; Tue, 5 Jul 2022 23:28:58 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05olkn2087.outbound.protection.outlook.com [40.92.89.87]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C1DA968B9A6 for ; Tue, 5 Jul 2022 23:28:50 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=DuXaO1p2yFwE0sBOE/3ruT4+/mD/u2PH6GcrKMMCMoLUK5EOZLw8RGItl/gRgn9nAXn6B8si+EaFXr5+vtPnJs9O7Mk0vrkSFTP0fBNcELDdUKKmZ36TOUJFGaFD2mGHPnj3OzNlu8kKAs1z3ty7ZCec8YO4p+qwv/Czh54RT7NQLxclUnoZNhJnq1IeWHy5uhBAsRIbutdHkS3GbwKAW0Jdlg51P1xOFGfhW3PaDrGMUZOSxHoQPhq2AJqjT9A3mXHn314upuSLyyvYWV7Bet18Q7SJyazZQcYlcrYl8NW9P8u7mn8SII5PptYj60D0ws6xJlWar5RwbEiU3ib0eA== 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=zv2StwiVHJfKRHyNmx54nRtnQJqemHBbiVypXr3nCT0=; b=JUQVAo8E8zti1A7VuWeEAnsgakJLJXkzmgY5DwlI8VmPut/9BqIM57atmPXsrFqhQWQckJYAKx4YAE5rYBjexZgq36gTULdKdvzvqGA+M5CcR93axe7Vz7S7di9nmmxfZDzz2ps03K7J8MxNko/iDZSqAnQ9a/Yyh7J3gQqbJZaS2+Aq1N5BvvhrqkCJEalK6YddNnF+HWps/q6Sl4rNYQR+57iTcPzouN8X7b0ChY6xsJJ53TN3LCl+MCwBCK4ivPdyvmrKq542U5DFqLlHl3B0/CB0CWW9UHdspqzIe4dE4pq9pFVA1nphnhXPvbE0C6ue1Gqb0xprKm/U4zdYtQ== 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=zv2StwiVHJfKRHyNmx54nRtnQJqemHBbiVypXr3nCT0=; b=c5SqHeNpJpLT0rQxRZyT1uztYwYA2glQeBl/4o+eTDb99l8V5cYZ0YggxU+hK9/qeL1yyq+O6VRHr3SHYf3LArmFpRsXJHnQwhetrIL+ABQ8noaJWtbwGT0pcA9gO1Ck94C9/8IiguYaCnv7jSf+0X31ScWoOWesKppyou1OHvUwFJQqNXCypu1195xdgXC0SILI4GViy8EVtN1bOL0goOYYBB+9eXPfNVwF7M5zUSTBBm9oQHzdGS0TPTeGuTGyhDUBsp7iKwAvTwQn8sHVRwz30OVxHJ1Q5o70Up0mho45iCghLd68rciafw/tzBI8rFvA9FAZZnV2WHLbB+EwMw== Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) by PA4PR01MB9452.eurprd01.prod.exchangelabs.com (2603:10a6:102:2af::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5395.21; Tue, 5 Jul 2022 20:28:44 +0000 Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c]) by DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c%10]) with mapi id 15.20.5395.021; Tue, 5 Jul 2022 20:28:44 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Tue, 5 Jul 2022 22:26:49 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [1jtcA8zjSJ5/bORH1a0VFJHfGtewzvIe] X-ClientProxiedBy: AS9PR06CA0419.eurprd06.prod.outlook.com (2603:10a6:20b:461::15) To DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) X-Microsoft-Original-Message-ID: <20220705202650.797218-6-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: aef589e0-aee9-4d8f-1e8e-08da5ec4f4d7 X-MS-Exchange-SLBlob-MailProps: gjx25WM8ZNWDLNYE12708/FIJ0L6AOQd+Zk1EzbMCTkA+LqpJJgWFN9Ep5VoQcCcqtojiyb+DVDmH2oxo+O4NfoF5zIOW81dJU8B/QXxl2djZkfjnRSpwQLMtWclosP3Z2Db6a6XAWlk35iMLOAfpJdRwiUGDICceG0JZiv8q3f700IZnjoBaxPMyx5Eb5c/YLZJtjojdIsUVRTldSxzXW+89e5Z27LM+fBekUGuu9rM+6tPkHQB3I1N4gcdAHOe9ViBUr1n0pTTtwKAfXFbGeobQ9lKErKzYBfd3z8VLWjUj0lBfGAeUqthS2Ma4xzo/p3k+Ym7sYOmhvS7F6WnNkmmF6ZtXnFN8eFmu81acyirPyoL1GVy4ChNQ4pMCFWiNjdW6+xY798fGN8eZjc5vvYl7CwT9nLVHNyLtC9Ht26YxmPH6OESl6lqLt7iKRwi0q9EIOA3mC+bW8g83DzOdPxgdv+9gcN55m2dLHJCHGprT9sWgDNH7PBdfc13TXKWY0N4c9u2Gs+5Ldh9Ip1xLIp1c2/Yzr0lArccT2FJT9ltzlASoqFRLqjuTBjvYXKPDtLsZMp/5XWwkBQMyqPSw7W5iimLuh49SxUucJMBMx4/Qiby3tBiSgoa2pNemAteWmaxdk3E1RlhKsqy5fLfdjAzOgouDybNwLkkZg9ab68e8cXeQKHkJa/ezf5VFx+BltXeGCEI8QfJPlIU2XdcMcKvM2uTyl7A9x8Au0Ry8K4= X-MS-TrafficTypeDiagnostic: PA4PR01MB9452:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Ak1idfV+Qrj1yNZbM/2Z/OXngC0GU9d7AzTGgZwznF/Hxo1u5OamMLhHB6xJwyt4y3wC76COjKezAtD3w22egrvHpsogu6lkeGOSsb/RCfpXylAC0t5PltSBs1R44bu2GrxKyqlI0zLCdbdx+CKeAi2lrd2W9uZqQe7bei6F+XjT7vrqfd3SlUaIGgDO3rUAOzrgCn3bh1ZODG+t5nfdoC0NypVrmcOU6UMX2OvZcj+KwOS/ilEugq4Ka6bUYhMkej8X4v1KV+pETSnz06ovBTDfyzW5Nr8xTUemBbiT0MrJ7G67vjl1Hex6vz/ccQgR5IAT5Td2Aqd8cB5QmcZZSoPTKGZdPY0BwEUFSFqjA89H2tSmjZRXhsFJVts0Z7RYXKjVufTL5p/eWGo87HAiM0zxg6gKmgfTLv2OWXtSnrYcCL9ZVZR0sllNI6VVqOIR5pbPgKHOuj0sOjkwyOzjkMxC7HqoqMqdo5ivUsusrmO+s+8hQIGxWkWEvXePA9gqBpfc8Y3d9uWAzaWjNH6yQmtekzykvDUl5FRBu9XQAO2rGHuST+P07/t/EEB/fx1VGdgdJREl+AK4aLX+3n3AR3f9iJieuUUMtKwos+0+b2pUm4xXAkrxxgQSqm9+9mqVdENrWUg/ojvZfP+N5V+gVg== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: jJlEhULOsWO7bXxomCP/8vRdo7xXpEaOUKAC8/Q1VNC0UlPI2G26F0DywcKS2hXA9693aMcjkLuDhrsI3WKIBQCdeZLm0SR+WcPgqyeJ7nEUBn/0Sn8YJlfeXvF22/tVbGnzOEJJ+N5GX/K+jPKdUBNPADawHVq4CCrQNaLJdibxICNGOSDEma4HokLrjeFTPG0RLwx9POOPVZDiZmpPX9632cob8yyoyZGcsQIhQCPcrO+N0f529oZ/OKqy8TNPNw+M6x6+HUc24qbo0zf8ANLM9Irl9QrEzsZqxcxOSkGNrMOHdg1EuW1bGJ3pLkAopRye4AUfhilb7+NZd4/Dkp9xYEG0nWMy/vN/RHWRDWZcNFzR2giu2BetVDPw+ZxaAleK3ic+XWj5XzBqG+UdIpLqb9qQPT6iadcwJYEGTZYeiFg57e2AOXa0R0dwpYjXDTI9EQZ22zbEPE4DsvRua3vFUoHvYi6reCLYF0Ert2LT/93vuBnlnPqKrsnGmeYlqtxtErj1Sz8Dsb+Opzkb9ZToX/Eu59Ie33aiqW1TxxI1zSDn/Po4yhIHqXCXVspX46rWx0/NyM9F9xEN5AdvDH6+Usb1bU+VpgVtMGJXc/gH6xNuG3rljB+wjiYqV2QZqjxHpGIgUrCEiAdxMlqHr29K1i35CmztihMZuSnh3RuPXiNr0brFFWKhFV20r00ZIqA4I3L5BQ1zncN0EZgRSLYreHqQo+E9ewbqwNlsI/KGJBDlBmaEeZxlGiBRdsEUDW+rweryjl99IcxFQ1lTVnF9/XBk0RcU3O2Y8R7sDm+d/SRTmnFopwD0DLBL0KDdwkq2vZfWM8Ueg6VJX7A8YcQHm2IrYGalMC9CGFWEFjuvPx656B9oTrwVJoMxYYRejfmbKRwEkk3fgqJKq2Ha/3ieGsA1BBuMMRMXFt5PDBG+U5xfbxw6mtf8gAm5DApDkf2cPuvw9m7VbBngq6udViQo1Oyb+iWhsu4/PKvfMKI+68Tov7t4ySnUwyvC5Ua6SzWAufmZdKZ8BR8KtQpgenHTaykWgt2y15PcJk6DQt+U+cGyOp83cL5sfVT7BgGQKSe/n5cpIT58Xre2Fp9XpcQxHC7FptzEfK5iLlsVndezhq+nRndqddbYQHhKIOzN07+PxIyB2qw0Ld3Uua+9X9Vl1kd4zl7N05VxBfDb2n5YJaJ9xWDFcGLpaxjtsdS7J7MDv8T08ToeXXQerG+UaD0PiF5Dy1kvnfgPbTlLjEceuZKV0U5XVGzq6R9//MVqS9CKL6alyPmTZ3sfJ+UhYXxN4KoZhjKavPE4+PZedKk= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: aef589e0-aee9-4d8f-1e8e-08da5ec4f4d7 X-MS-Exchange-CrossTenant-AuthSource: DB6PR0101MB2214.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jul 2022 20:28:44.3240 (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: PA4PR01MB9452 Subject: [FFmpeg-devel] [PATCH 7/8] avutil/fifo: Simplify growing FIFO 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: kXYnh3c3SRVi In case the data in the FIFO currently wraps around, move the data from the end of the old buffer to the end of the new buffer instead of moving the data from the start of the old buffer partially to the end of the new buffer and partially to the start of the new buffer. This simplifies the code. Signed-off-by: Andreas Rheinhardt --- libavutil/fifo.c | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/libavutil/fifo.c b/libavutil/fifo.c index 51a5af6f39..53359a2112 100644 --- a/libavutil/fifo.c +++ b/libavutil/fifo.c @@ -108,17 +108,12 @@ int av_fifo_grow2(AVFifo *f, size_t inc) return AVERROR(ENOMEM); f->buffer = tmp; - // move the data from the beginning of the ring buffer - // to the newly allocated space + // move the data from the end of the ring buffer + // to the end of the newly allocated space if (f->offset_w <= f->offset_r && !f->is_empty) { - const size_t copy = FFMIN(inc, f->offset_w); - memcpy(tmp + f->nb_elems * f->elem_size, tmp, copy * f->elem_size); - if (copy < f->offset_w) { - memmove(tmp, tmp + copy * f->elem_size, - (f->offset_w - copy) * f->elem_size); - f->offset_w -= copy; - } else - f->offset_w = copy == inc ? 0 : f->nb_elems + copy; + memmove(tmp + (f->offset_r + inc) * f->elem_size, tmp + f->offset_r * f->elem_size, + (f->nb_elems - f->offset_r) * f->elem_size); + f->offset_r += inc; } f->nb_elems += inc;