From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id C196343140 for ; Mon, 20 Jun 2022 11:39:26 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 56B1168B5C6; Mon, 20 Jun 2022 14:39:23 +0300 (EEST) Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05olkn2043.outbound.protection.outlook.com [40.92.91.43]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 81A8568B294 for ; Mon, 20 Jun 2022 14:39:16 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=GrwHK94ZM1M6cgby3nbM9jHuvrfK04MseSeGy+zAUTNfxQz9TAFkYxmfpTrxkh8m56wFi2m9MM2l0w0O0GY2buxJlmxUFK0ggQhofWLxgbPDCARiaQoS+fqDXjbOGM6HgzbMwM0uWWJgKahElOuuFfDbl5ors+usUKtrzlPmDE9mVyqKbzo4X/riDiorknLfV4PO+aWyOvsqqpL/xXKrHaGjxStOIMUkmkaxV7wDOFtWSq2OTuNnDSbOAk1g9qWmbixvOuC0P+/7lkMdQyXuokQmw20I2OglT/e+CLgI2DXECsL9m7CwDs7FhyZfi/kE0glavNzuAQexloxlW0BmMw== 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=0i1hAyLCLGFSON+4AukaeuxWHaaEj7SCasgCAI7Wt5s=; b=Q3z7IAcnE4j6VZaoKt3ED7kbIAdWIpCHBtrmfUS4VuZy3yzy4t07l/NIKLeZEaHHmyNqFEPDks4x00VrCkfdHyok3yr9KNe7HkuD2TkdCCaURQNF+s+xb7lBnTEKTiurRR+soIOW/M/WfKhWmzZnOzjfaHtslxb3TkVxDjYS95+G8oIh7HPayI8OyvoAQycKQzh4qiFuTCsvPljQDH3uhVeJ1acNr1kNbDKVrMnbYmDeNsD6LuP1lvbsszrWgykXkpZ4gdPs8L+qbqDJ3I/f8qDQ9wJsBEfDqC0hRZ+VNfYWUOrCAxSRDY6bi/cizD2CuCQmhFGQfwMND5sVf9aUMA== 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=0i1hAyLCLGFSON+4AukaeuxWHaaEj7SCasgCAI7Wt5s=; b=CNy3e1zr1jQTTem4GcyrhBb04q2NgkgHyGdm1ogC1ahKG1j6m8TcAfYMcebinRXUROg6n4hWdBfMx7KI/ptLna2Lx7ld0ZyXV36mcYsjUoEXJbLEy9ALKZ10dycwPHCYIaNZRVly9DrLPSogbT5rUnaPQpWGR8LvLHSjeXAAXXZztGXd+N3zcBWrCVQwi58cSssfvTvw6GmNO2wJE7TqaEmKDMPYVTre2a2BGjBPuaQziINQuM4k7Ohh8tKiHC3QYjkmHKfZ5+Xet4jmtajxr0L94Cdz9nW4Kt5BrxtZYZ7R0XM4H3LHZJHHiBYFGwbpkG/g0QJpjV7Hz9ia7SKE4g== Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) by DB8PR01MB6472.eurprd01.prod.exchangelabs.com (2603:10a6:10:154::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5353.14; Mon, 20 Jun 2022 11:39:15 +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.5353.021; Mon, 20 Jun 2022 11:39:15 +0000 Message-ID: Date: Mon, 20 Jun 2022 13:39:13 +0200 Content-Language: en-US To: ffmpeg-devel@ffmpeg.org References: <20220617133206.23643-1-anton@khirnov.net> <20220617133206.23643-4-anton@khirnov.net> From: Andreas Rheinhardt In-Reply-To: <20220617133206.23643-4-anton@khirnov.net> X-TMN: [gcShBa9SWSfptTWP8ku6b/60rbqcEbCT] X-ClientProxiedBy: ZR0P278CA0097.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:23::12) To DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) X-Microsoft-Original-Message-ID: <738c09a0-1328-0a6b-9425-0d6fb9aa4099@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f24a1e64-c622-4462-6a64-08da52b1809d X-MS-TrafficTypeDiagnostic: DB8PR01MB6472:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: v5Ls8kavs8tjq99wEhxKiRBQUUexmKrckfeaJm4xSv9sCLREyjXSdNnAmNyFDmmstXz9lVOREuYcLkYPoRgqDrUYlcmbAam8Azp9OZf/jbtEFv3dSAXjlFfzxkEOwyse6Oq/pDHTAiwdwcSUgBb3ybB0OdKo0qEAgFXXjru7uQImH0j0VkQbDUokedYtGLdNnVYL0BPJ5ctLfRjKZM7TcdkyxLQ+8Bd8CQxlmF8jeZJKsiGTzjndIAdNbmwRW8YcOJ3eyC1rYZbZbMbsxFsHdQ7KZbCen5GzBeWfZe6GYxaAuwFd9aG8Kd9EE/ch4BqaDFD3LzawwoQVahcLGCB1+Er4U8uAxGIL4M/UrlF4OssKSxoKCb1jiQ24UML4XsPf2Y8DNVHmxLmZGD3k2WZ71KjCaFE4Xw1FFz4Jxg0z18edy6tPODObyDk0+RWz0IwEsZzb5O61r3VJC9lAOau3anhMTTd52okJNqz+cE0ZIZpzUIsyjcGyZcTlFif6UyYc3zdWWVYTTIHHJtqT3+eEnAA3pPVUq8XkhWfieCBy5P1yM7ngJJ0HrIw0fnYOLtiuXVe+CnFEuF18B5QqB9jSnJLbQjZ1B98viZRrPqBYTJTy/KqKub6rbqdlMpRT0hgM X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?OG9KQnlKNGlydGVpTE1LWjRYcUJNa0ZuV2ZSdXhySUJCQk9IWVhxQ3hlU0dW?= =?utf-8?B?VGRBN01tbitHVThJQ3YrekJUeEdaUStLK1Bud25WRXpGTFFDM1VQNU92cE1y?= =?utf-8?B?bkpoaC9ta1VtcHl5QjVvWUE5ck5rZ1ZsY3dRbzJob0NwSTlQaDZDTmZCbEt1?= =?utf-8?B?eVpYc0o0ZDhvY0JzdzM1bUYwYmxIQ0R5eXFLdmI5aFRPV0FIUGhrT3ZuL3N3?= =?utf-8?B?NTZxWHJCS0lVZGlCaEN6Nkp4WU5tbndMQ0l0ZnpYS0MrME85ZUtYS1RPUC9q?= =?utf-8?B?Mm1ER3M5ZWw4dU5RVnhhTmJtS285MENOU1pNOGUzYURCYjExQ28wcHF6WkNp?= =?utf-8?B?K2FvV0VPV21uTmxNbGRCc3lKZWQ5dFFlc245dU0wVXJBQWNmd2xJbmMwaitr?= =?utf-8?B?RnlNM2FKajFmcEIvUHp2b3lLcDF1UGdaVVFuT1I3blhLaTI3dnlRQllYWVIv?= =?utf-8?B?SnkvYVlMVnIzcVYyVjFRck96Q1BFempOKy9rZjE4b1lsZ04zOS8raGh4d3FY?= =?utf-8?B?Yk02TjAwS2FCY2FRWmUwOVZlanhXM0dLRDJrWml1QXUvaUc2eFdkNzhraU5k?= =?utf-8?B?bHgyNU9HTUZHcHVMcEExL0ZzbHVMMnJ2azBWbXYzeDZ0NURMUFlYbmc3ZTBT?= =?utf-8?B?NGc2QWk5QkRXVmtHekNvdVRrdWlQU2lRTmhkalNTK1Y3VGRrWjVHQXkwUGZj?= =?utf-8?B?ZjRQcTIvMmh0cmlHcjl6UkZVN2xPcjNSWjVRREFFd2pqRTh6OVdkYUhzMVM0?= =?utf-8?B?Z2lNcXE5Q0Jub0g4L3JaQlowNndpdkZIb0Nya3FIZWFTM0gzclYrSjlHUzZZ?= =?utf-8?B?WlhxbGJaZThSdXNlKzI5VmhJd2xSSnlWSnRTQVRsVDdROWRnT0tKVW9GeEtN?= =?utf-8?B?c1NvY1NOT1RRcWxtTnN6dU5ZQmczbEZDZkRHdEZ3aEhYTFFkSTZlTUN5WEgx?= =?utf-8?B?T3lRTFFrUUtsaHRCT3B6NkdSa1pVOWtFUTZUbXVGdEl6YUhGK25FMEY0TEJS?= =?utf-8?B?dXUrK1RGOVE1Nk9JdnlMU0VmUDV3SDE2cEsyelJwTmhvU3V3K0hPRWJFV2t6?= =?utf-8?B?eWhoS3VENkR2SHNibklvbjlYYW45WVRLNEFya1lXcjF5amllbWlYOEh6eXNM?= =?utf-8?B?TVgwSjdlVHMrNVBCcGVsVnhmdi9PTEhOY2hpcEp6cW1MWndHWCt2SjBPU3BQ?= =?utf-8?B?Q0hlNDROMzREdnEwdStiVTJ3UVhIUHNLV0oyQWdPQUlNMlFSNldzU05teHp2?= =?utf-8?B?ajkyYXN3WVJuRlVPUTdzbmkzUXZzd3ZkM1A5QnlZcy9nT3F5ejhHZHU1bzV6?= =?utf-8?B?WVBUT1k3Qk1peVk4dHh3enA5aWI5RnZ5ZkV2UUF0T2VwM0pqb2s1K3ZpMEFO?= =?utf-8?B?aEtLVXplajl5bzU4Q3BrYnIra0FjbUxETVdNL2kvaHA1aS9QKzZBTjZDaWpD?= =?utf-8?B?QzJUNE5hU2ZOKy94RXNrTVhnY1Z2clhxVGxjYnhpOFhWc092KzV3OFdIT2lw?= =?utf-8?B?UisyZnRiUzRTQWY0U3FaV0RtZ2VxZ0ZkQVJzMzJhclN0U0hsV09Md0I0WENE?= =?utf-8?B?QkZSa00wMEZPbUdtYWRMVTVxMDFkV2ZlY1FxZ2F6ZllNZ3JpZnJUejBsNlJD?= =?utf-8?B?RHBrczlRdEFLZXE3Ujd0UGVEdTNpdnVETmZzYndvRmZhNkhPM3YxV0FzeGg4?= =?utf-8?B?SHo4dnRWelMrUVBoR3Y1S3FHakVGSmFVOVRCcWNPSjEwT1lQaEJTcDZiQlVK?= =?utf-8?B?YW1zV3ltREFKU0M4Z3JBdzl5NFltanZoZnlzcFRYUjBRalNKMW1ld0J5SDB1?= =?utf-8?B?blFISFEwMHljL1ZZTjV3U1d5L2cvZ2ZaQlFGZXE0cWxUNCtXTDM0dHRHa29H?= =?utf-8?B?ZzNGcHlLSnluT0R5RnF2eVN2SnlqY0NWejgwR0haYzNJd2xESDdSREU2SVBO?= =?utf-8?B?Rk02RW9SaE9WdkZJZFVPcE5BK2gvRExWcHZmTFJPejVNM1d2QVQ2WmRqSG1K?= =?utf-8?B?NWZMOUdROXVnPT0=?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: f24a1e64-c622-4462-6a64-08da52b1809d X-MS-Exchange-CrossTenant-AuthSource: DB6PR0101MB2214.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Jun 2022 11:39:14.9491 (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: DB8PR01MB6472 Subject: Re: [FFmpeg-devel] [PATCH 4/5] lavc/bitstream: make skip_remaining() public 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 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: Anton Khirnov: > Also rename it to bitstream_skip_cache(), which is more descriptive and > follows the naming conventions of tis API. > --- > libavcodec/bitstream.h | 1 + > libavcodec/bitstream_template.h | 19 ++++++++++++------- > 2 files changed, 13 insertions(+), 7 deletions(-) > > diff --git a/libavcodec/bitstream.h b/libavcodec/bitstream.h > index 3fa63695d3..364245453b 100644 > --- a/libavcodec/bitstream.h > +++ b/libavcodec/bitstream.h > @@ -116,6 +116,7 @@ static inline void bitstream_unget(BitstreamContext *bc, uint64_t value, > #define bitstream_peek bitstream_peek_be > #define bitstream_peek_signed bitstream_peek_signed_be > #define bitstream_skip bitstream_skip_be > +#define bitstream_skip_cache bitstream_skip_cache_be > #define bitstream_seek bitstream_seek_be > #define bitstream_align bitstream_align_be > #define bitstream_read_xbits bitstream_read_xbits_be > diff --git a/libavcodec/bitstream_template.h b/libavcodec/bitstream_template.h > index 14a420139c..717473ca40 100644 > --- a/libavcodec/bitstream_template.h > +++ b/libavcodec/bitstream_template.h > @@ -225,7 +225,12 @@ static inline int BS_FUNC(bitstream_peek_signed)(BitstreamContext *bc, unsigned > return sign_extend(BS_FUNC(bitstream_peek)(bc, n), n); > } > > -static inline void BS_FUNC(skip_remaining)(BitstreamContext *bc, unsigned int n) > +/** > + * Skip n bits from the cache. This may only be called if at least n bits are > + * guaranteed to be in the cache, e.g. right after bitstream_peek(n). > + * Otherwise use bitstream_skip(). > + */ > +static inline void BS_FUNC(bitstream_skip_cache)(BitstreamContext *bc, unsigned int n) > { > #ifdef BITSTREAM_LE > bc->bits >>= n; > @@ -241,7 +246,7 @@ static inline void BS_FUNC(skip_remaining)(BitstreamContext *bc, unsigned int n) > static inline void BS_FUNC(bitstream_skip)(BitstreamContext *bc, unsigned int n) > { > if (n < bc->bits_left) > - BS_FUNC(skip_remaining)(bc, n); > + BS_FUNC(bitstream_skip_cache)(bc, n); > else { > n -= bc->bits_left; > bc->bits = 0; > @@ -255,7 +260,7 @@ static inline void BS_FUNC(bitstream_skip)(BitstreamContext *bc, unsigned int n) > } > BS_FUNC(refill_64)(bc); > if (n) > - BS_FUNC(skip_remaining)(bc, n); > + BS_FUNC(bitstream_skip_cache)(bc, n); > } > } > > @@ -291,7 +296,7 @@ static inline int BS_FUNC(bitstream_read_xbits)(BitstreamContext *bc, unsigned i > { > int32_t cache = BS_FUNC(bitstream_peek)(bc, 32); > int sign = ~cache >> 31; > - BS_FUNC(skip_remaining)(bc, n); > + BS_FUNC(bitstream_skip_cache)(bc, n); > > return ((((uint32_t)(sign ^ cache)) >> (32 - n)) ^ sign) - sign; > } > @@ -374,14 +379,14 @@ static inline int BS_FUNC(bitstream_read_vlc)(BitstreamContext *bc, VLC_TYPE (*t > int n = table[idx][1]; > > if (max_depth > 1 && n < 0) { > - BS_FUNC(skip_remaining)(bc, bits); > + BS_FUNC(bitstream_skip_cache)(bc, bits); > code = BS_FUNC(set_idx)(bc, code, &n, &nb_bits, table); > if (max_depth > 2 && n < 0) { > - BS_FUNC(skip_remaining)(bc, nb_bits); > + BS_FUNC(bitstream_skip_cache)(bc, nb_bits); > code = BS_FUNC(set_idx)(bc, code, &n, &nb_bits, table); > } > } > - BS_FUNC(skip_remaining)(bc, n); > + BS_FUNC(bitstream_skip_cache)(bc, n); > > return code; > } How do you intend to avoid the issue described here: https://ffmpeg.org/pipermail/ffmpeg-devel/2022-June/297850.html? Bitstream_peek() does not guarantee that there are bits bits in the cache even though your documentation says otherwise. - Andreas _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".