From patchwork Thu Jan 13 16:39:08 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 33561 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:cd86:0:0:0:0:0 with SMTP id d128csp621011iog; Thu, 13 Jan 2022 08:39:30 -0800 (PST) X-Google-Smtp-Source: ABdhPJycEkk/8oZEc0DakU+xwmaWwiIG9XEeJc2vN32DAh3I2pn+TJ2VR4RSRrumyY/IOSWzD8gs X-Received: by 2002:a17:906:7044:: with SMTP id r4mr4180741ejj.351.1642091970260; Thu, 13 Jan 2022 08:39:30 -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 he32si1609263ejc.234.2022.01.13.08.39.29; Thu, 13 Jan 2022 08:39: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=@outlook.com header.s=selector1 header.b="VkulGuX/"; 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 29AAC68B468; Thu, 13 Jan 2022 18:39:25 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05olkn2063.outbound.protection.outlook.com [40.92.91.63]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 1F47E68B3CE for ; Thu, 13 Jan 2022 18:39:18 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=EBOPLqNgPfKLU1qmwqDxd7CmskwnY4M1LYNmLwkZaJHe3qHMah+BrVrZ4HX2iHDEekFqwOxo5LwbJYnsual32xb0KQEaipCkZViYRB8Ev+a0GVF1BqNBxV4pF1yX5t3QsXrhYsZXmUQeaxCIH6jnHYcn4g7HCKtShuV80Vmn7oD5AdkVwUodOlIG6eAhOEbYTtMQJ76KWNmuuaRUzsvcJTXV/W8an/HzAve7NxpI7ikR7TLmR0rUHzlp0xvzqwvW7r4CU0bZOYeqKLmk1gMu41/XoeMIhkh9yC943/R2JsS2GATfQUyYyW4d5VvsC81CnYA97/012lyoEXnTcaYR+A== 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=OkVQQTYkb/wDVwvDNGzKSR2h7NZwkqyAqvlm/Iq6MmY=; b=LgxFqglpsIyOPBSGYPxKCwRVnnOrVw7BtomERWN2hyCG3qKLMDslatTrnogkgXVYQhIpdWmt4irsGMsYCOcOoxVcldXGyc+KNhMuYor7xBOBQIMTqSodv9tff1Jax4DRjzS+9avLnwyxcAZb2ak+Ox6mgFHJeMlYuRhe8jjYOJugVGDtScIZIW+KiOQkQNPZn8FzAkenVgql6phgPFq3m5RU/L1u+w7usGy13o3TMKdeyt+VpYqNb10BIIu8QNBP6zFb2sYAEULYRwfS6YSQzaJ6SV4iCvIgCuEaslcyW8rEEtINQgz2aKnDROPKKP2xCX7RrgMG8lSLOSARm3NJFA== 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=OkVQQTYkb/wDVwvDNGzKSR2h7NZwkqyAqvlm/Iq6MmY=; b=VkulGuX/Yl823YTTEXIad5z3R3KCqHwgSMR7BxgrPHka9NakNIcXXw8mU176AiPKa/kfNc4R07qr0ZtfdAMG7ZEUAKsP5MZstTLzSWz0MZWSsIxRLY1L8PIHC83ChCUI+Zv2PJZ7Q07hHOF+shccY/5Tyzi5QbOV/W9jAwO6ru6Rl0PG70NYgjq1MaRLx293qUeBFHYvUOm3P7y/BW3OhTjb5Thd1mGQK8iTfXPIGoSk6jiH+Wzb8Cm2Ffs2jEuhFNaMm2pw21iCOzxymPcpvTpyAMLaK3zkLwsrmK9Vzc64Ld3xF4DujoRow0klzpqJqVN3gTNHyN1/E3DTjMvdkw== Received: from AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) by GV1PR03MB8080.eurprd03.prod.outlook.com (2603:10a6:150:1f::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4823.14; Thu, 13 Jan 2022 16:39:16 +0000 Received: from AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::19fc:be9f:2c9c:53f5]) by AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::19fc:be9f:2c9c:53f5%9]) with mapi id 15.20.4888.010; Thu, 13 Jan 2022 16:39:16 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 13 Jan 2022 17:39:08 +0100 Message-ID: X-Mailer: git-send-email 2.32.0 X-TMN: [bcxl1vV2FCWgZXHwomLPDwkHxMQRfTF6] X-ClientProxiedBy: AM4PR0501CA0048.eurprd05.prod.outlook.com (2603:10a6:200:68::16) To AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) X-Microsoft-Original-Message-ID: <20220113163908.1270444-1-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: a9250f63-15be-4c8a-f076-08d9d6b33ce9 X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiR3EehW4kxQzdNcP2D/mG1J/QFgFmlHmCzg7TvkK1eGPdPEpl2GC/KWRYfYFewAN2Om9LKZTDuTJHR5fYwQxBTlkJez5ljY0mGNfrinCrLVxEtcBLrf1CWuU+gzxQdtQT42QGLzxtbXQpwmBj3xJ5QHL/xW6VMIofpDsR7bvocY2XgkJFbk0oUNuEHe7oh7HxGr9Pn+Jc2v8zGFdZL78DZpn0KUzBNmuwduVz7qyLble9ye1F13zDrCOOQ90oUvhcTegtzFYb9qM8kYAAcYg2Nr+kBN7+xbid8NzRBVb4OmcluTBvzNw1SkGdFaRXpRy8spet1SxUVeuo8QfDdvgbhJR8t2JOP2dm8ldn3YdBbfXEI4sQfvhnth/c7/avNhRAxf7GCCn4Czc2MazlYlNfF6EMMYuvKzbPJ/scLkSUJqeB1QcW5RiWwvZP4QS+jxU8FWW7b7EZCRrrIY8pNM3pkDrc7kb1huwWM50O0l8Smkq+SORyAe1nrB71bFcEKCK0qQc5UL9TGoVwjahrasa82NBn1K0+XjtqsalVX93UCZGqE02+fkDLJ/unyXywyVUl2SgJWecMFN9t079wvYz6tqpbXBRPDJRsmuEzzUXlx7Akr+kh8TdkymgVjsP3WU8RADZjLx2SnAdOyX4CSved+NBzoYLfhVEgiFaND0IHo+Qe6r4L31MvGBzQMcFY915SazkS0NVaWdi/pMaC4OrtL/YFDgT75A4H8/dFQBQXpLlcoBTUzVFuE/FxmSzLaGhN0= X-MS-TrafficTypeDiagnostic: GV1PR03MB8080:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 6HxETwv695Q5DMXI1iN/Tjgst25TSnl+1sTzguR5SLrSnCbBNbKJIV35KVavQvy2T6YK/3w00pJkGwcAu4CN7tOw+mLfQAeK7ObUbQcE+7NJ51bG3PW2Tt1GPRf1VAdDrjMrz7MxwpYyurnwX3bJJL2nNBk1PkApC5eUkr+fxM3A8M1s/QTUjRGsco8daBQCOMB0e7fpYuWl7aWOqrhJrSkylSjSWv3GcGxqM3Yl2q2NxWmrkE+ZZSRPRihOq22glF5i7e1ZH7gov3w5pfR60qZyXeh6g8H6dTYUEypXMDOaxvwtU2zEyG4/RLfgq4rf/t1taK36Jb0/Bppd5DUV48RAX/vshNxJH0+ylRFCu2K3sChr4l1ilZOrWwhauQhC7l1DBhKXq2jZOht0yIa9o6BiB/QcAS/XxI28sADf0svBwmJDb0TU+2LUVnudHKTOFTUBO6rbG9ntD1Gq6wb8lKi5AZY1ZKVW1qWDHr9ADjCLCoZAwlfTznF3iM3v4Ag3rVQHSZjKsDhR3JjblT04rx+0IETdESW8D04z9eRW3zZigXRHlGGzt/FyPGYymOmTWLwonLvZIgepySw8WXjSlQ== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 1d4vg95R7rePR41slyDO/ckojHEQaU6TVAE2dBk9xOfOcUcueBcihJRhVtuWEj2cl/deT5XPMqB01BXizpG3eBC3HRrNLjgUXW05fZ8sz0EsjvRJpebwY7uOCYGz7TN1BNjvMTWLlnsjHw4QbGJlD6sJjpI/1l4ajp6eVWtGc8DZDBzubFyjYg8Gl5E3i1ST8R37b5NLr3br0znLrWZV8y3k5BE+2bI88T4+b8dLGOFRZBVA3V/YpxpxRK3Z8/mHO53MyVwHOh81KyMkVg68Mis00snJ3vw2Aje4XXN/j8jAdFnNSo2GRkRFXZHe04JeWnwxK/BFoTti0RNBiLgDFomqj+lpwHlt7AwoTuz++b48OWTkWg2gHdIxPSO9a/eXR7Trkk/Dbt0W16f2zDF48O3GpM6M6W/AeJ+xZA2z/otxxDApAmnVv0AWLOc1mw9QmgJW3mQtKILPSp0qzmlVuH9NKsyWeKU4FGpZ0smoMKsspOrJ8MfD6nhKCx2Yz3nwEiOl2gsYbTz5jf+WqlCeP2sxfasuwZi6eP+HIFdr/I+KdQVaoMeGYygEcMpDm4fXdj8ZT/wcdp8aerwyqzXrGklw/z28Jtf9MczR2RooShhHuvudSW7M9xMYOQfaLg7/EX13WsC/L0LEWf3GXsNfRfUWDkoMGyxW6eMJxNSX4KDXYT/XJ3SYh2RlK9JRu7HTruEHQMN0r1U22axii3V2yZpR7Ni/YPD6tB7I5QLvqeB/6wTtHY86IhUoDW5sjDArgAakK5++Luh+dYKrbq37PU2B5kgqS4BehmhQBTz9JT0kkm23uMLFRekGQgtOpdtZcmjDl4S9T7xRHAABWs+BE8vYWj0tQZ2RJonpdirL3yO9up4brEuV2EpF4Kftr5Jw2Wt8VKCTIzz+IXxH1lUiTeiSThjT2oeePxfBiD3eSUJcWf7RJ4U5vbdP2ja8ffvdpHFOWC1fZR13fvldQcqvKA== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: a9250f63-15be-4c8a-f076-08d9d6b33ce9 X-MS-Exchange-CrossTenant-AuthSource: AM7PR03MB6660.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Jan 2022 16:39:16.2058 (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: GV1PR03MB8080 Subject: [FFmpeg-devel] [PATCH] avutil/fifo: Use av_fifo_generic_peek_at() for av_fifo_generic_peek() 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: eC3KGYagl2bv Avoids code duplication. It furthermore properly checks for buf_size to be > 0 before doing anything. Signed-off-by: Andreas Rheinhardt --- It also avoids having to update yet another function when the FIFO implementation is updated. I pondered changing av_fifo_generic_read() to int ret = av_fifo_generic_peek(); if (ret < 0) return ret; av_fifo_drain(f, buf_size); return 0; but decided against it because the current implementation already drains the FIFO after each call to the read function, so that the user may already see the FIFO internals updated on the second call to the read function. Of course, one could use a common backend for all three functions. libavutil/fifo.c | 21 +-------------------- 1 file changed, 1 insertion(+), 20 deletions(-) diff --git a/libavutil/fifo.c b/libavutil/fifo.c index d741bdd395..e1f2175530 100644 --- a/libavutil/fifo.c +++ b/libavutil/fifo.c @@ -194,26 +194,7 @@ int av_fifo_generic_peek_at(AVFifoBuffer *f, void *dest, int offset, int buf_siz int av_fifo_generic_peek(AVFifoBuffer *f, void *dest, int buf_size, void (*func)(void *, void *, int)) { - uint8_t *rptr = f->rptr; - - if (buf_size > av_fifo_size(f)) - return AVERROR(EINVAL); - - do { - int len = FFMIN(f->end - rptr, buf_size); - if (func) - func(dest, rptr, len); - else { - memcpy(dest, rptr, len); - dest = (uint8_t *)dest + len; - } - rptr += len; - if (rptr >= f->end) - rptr -= f->end - f->buffer; - buf_size -= len; - } while (buf_size > 0); - - return 0; + return av_fifo_generic_peek_at(f, dest, 0, buf_size, func); } int av_fifo_generic_read(AVFifoBuffer *f, void *dest, int buf_size,