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 2DA1742657 for ; Fri, 24 Jun 2022 12:08:36 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id B791968B704; Fri, 24 Jun 2022 15:08:34 +0300 (EEST) Received: from EUR03-DBA-obe.outbound.protection.outlook.com (mail-dbaeur03olkn2023.outbound.protection.outlook.com [40.92.58.23]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 1173368B2E3 for ; Fri, 24 Jun 2022 15:08:28 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=SvOvL/P+eueOkyFPsm2RIOYcKA9DAUlvFZfJ91n2PbrlgOuXy+X5pRUvmW5VhTKZ7M552XTZpj6coixPbj+uoA6uvxdLlBxPMU5FhrY8Yvv3LMm6iZ2AiAIeXl0eHILqEopaE+8o/zaL3MvntQBZPI9I9zvFJjjGTvtaTaLgI2fsR/EZqSWgjS2ZmDidjr98Jq1uBIgz+BkZzQkY8QYGX9gw7vooEGCklyctM/NAzMOp86QFNoxD+i9SMxPr/awrkrC65UOupLRBwXDCiZwmm5NmW1DGeqh2/WjlST4MJKEc1e8FvN3Dsnb8qrVCBIWOq5I85liseiJwL4csEkSVtQ== 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=ezKkyocoVBLh3RBerLBQe6PAxK7zH/a5jDst2aJgEHI=; b=cMXjosxavAo1CHq0BO09F7LMs/b/Dm0fWzTqhIk4Ff6mJpScISnOrvqIh6TDkBTnvAR22DSHOWSAd2gr9rxSi5b0zmI2r3o8Inp39IYx9EZDGi9vWva4sU7uDbi57VhRymekWvbP6i6J5Fh8eIUr9x/7QG8cwrw/FIM8iq49FRu7nP3YFr8WmeCZxxY4jtcJvyWMcP4cgLZFaTr/Kb3ijPdpNO+lVg6EM/vbG/3xMwC0c0DuQkpH4Cxt1TqYPcsKEwI8yjL2k+lkjYa1YqsKuwQ1AWysoztXLtjU7rjpM4c36ha+bQhOqHcukittjVR0Wh+cR4zMUi7Ov8QzEw7y8g== 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=ezKkyocoVBLh3RBerLBQe6PAxK7zH/a5jDst2aJgEHI=; b=m0uTMlDwVjMWAh2js4GQu5RZN5/mynSYcMevNeRCaHGW1Jt5cRMRpgadgiABjYc01zspCnx5YPZxGfpXUhcpjBbCWmH3DC42wn05aTdtOtyfAYXTWNP4ykBkdTD8ctd8As4pGrdaqSorYiP8blKoFyR5NlmrjCFma/Cquh85wkRrKMV898eOzM448Tv5FotTJEdf9qWlOMgvh55HtKAfNDnCpORXy9I6fzoH78drRwryAPtmtdqgPK+ABIDPMuJcxICW9DdNndKfL/WElZu4Dsiybc2tO47AWqOxFP/ZwxsrtFEIntoDutBY1HbnOEHpVFkmLwgDr9RPi6FVjpIYNg== Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) by DB7PR01MB4887.eurprd01.prod.exchangelabs.com (2603:10a6:10:2b::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5373.15; Fri, 24 Jun 2022 12:08:26 +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.022; Fri, 24 Jun 2022 12:08:26 +0000 Message-ID: Date: Fri, 24 Jun 2022 14:08:24 +0200 Content-Language: en-US To: ffmpeg-devel@ffmpeg.org References: <20220623122636.24732-1-anton@khirnov.net> <20220623122636.24732-2-anton@khirnov.net> From: Andreas Rheinhardt In-Reply-To: X-TMN: [+vtjiNRoLssTr/XG8WHosz2PpO12AhGn] X-ClientProxiedBy: ZR0P278CA0010.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:16::20) To DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) X-Microsoft-Original-Message-ID: <9eb97735-b130-a514-6a7c-9c6cd1ae4252@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: be16091d-a839-4e05-da7e-08da55da3e59 X-MS-TrafficTypeDiagnostic: DB7PR01MB4887:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: W4qe/+mY8XHwHe5t8QAGlh405t9WAWWfLA63plNEwCAK1iD+Cy8YZLg1tASKW/nKFf9rbkWaPoZtUcXtSta6mq2NlmL/jUAW3tp0/v25YCSOLdjaySXgaKeJSLolwB2NXzjIwJz6fZ9e16Rfde38rQZzuuOmMdbxvy20X1bXNgtStBqKAAhMb+7MifVVvZgATuIm1mMF7i5Aub86Vd/Nkq6cFBleXFJtYXvP1nWrEH3HwogFNklN77eUZAKW8jpi/KGNfXPI9CAGUbp9Z13msMJE9TxDxrnaYv76Zqmnd+PeximfhxxQv5t99Ziika7PjOOTxWfeuJkAsFc+zLabhBlR3oOIcsIdtJFYBBODb5+c4lexH1/2JHlKPKJN+3LGqD9VzPXmlt6YzQXYz8ZrySQSaIaPbl2v0Pa7z99fAQGOnBweBWjzCRQWQZgVt4xfSTIdGuHbWp9PoGgZZq/qQN8wve2VGcpQviWpZsPBAlFFr1b/kDbxzTYanM6W5buzT7/Chv+lj2Y4NmaV0wjho0GAzhEl/jyCgLj36L+cT+5YSZRfVjZMHTM4ybPhuFjf+7J5mFQS2TMdVZOIyUiAsWPkN+N6TSwDGc3vuOt1Js8BtM5hLB5eehTO3e+Eoo7y X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?cDhFYTRmL2lHRFYzVWIveXRGT1BKeEdtQ1RWeTIyYS9QcHJvai9ray9MT0tq?= =?utf-8?B?OW95SzFnR3o4WkdabitEd2p0NWxQRU9VZ0diQ21MZG51Q0Q1Z1VyMXhhWVlS?= =?utf-8?B?VW8xOWoxMmZXcm5rNEZHY1ZnNzN4NnB5TDBJK0F4cENuNldJNG5VZEd0Sjh4?= =?utf-8?B?RjZNVFREQlVNWG5XS3BPK0h0YkpQa0d3YUlBdjA3TVVzRU04a0xqbDhrMy9X?= =?utf-8?B?VWkvK0xpMzZVWUp2eWwrYWxOSXBSWTdWY1BHZXI2L1hLUCtVVCtsSklrMVRG?= =?utf-8?B?VFFkRm1ZNCtJZ1VobHBKejNWcUJnLzg3TFhUQkhjMU54eTFEc2VwKzg5RFNW?= =?utf-8?B?VkdMc3dwMWcxenFCcmFOdXgwanFpVjhaeEhaY0hyMjBZRmN4NmR5SUdFNUQ4?= =?utf-8?B?WFJkSjJFYWQ2OUxXMHpFakF1L2hHMGdoL3JDaFg0bWovbTNTdUM4aDdKaU5X?= =?utf-8?B?ZUZ4bExFVTZZbk9qaWErM201c0JKZGpQUjlaeWtRMGExckpqNWpzTnZJYTZ3?= =?utf-8?B?SWhXQjJlVkk4OEdtU0RLak1TcjVrdEVRWHVHVnJUaHJkSkFMWUY5QjVDVU5k?= =?utf-8?B?cnF4bTdBVkZ1R3QrUDgxbFhzNkNEWWhCMWUwY0h0dWRZZnFmdHJIMXpoeDFl?= =?utf-8?B?UEVwMFg0SFZWeWY2ZTFZSnZOUlY1dkRIZEo1T3VwUHV6eG1JZlpJdmQ4RjBv?= =?utf-8?B?N3ZGL2V1OUUvUDFITXV4VC9aTkF5M1lhKzRnNXlSRWhjZXQySGxGS1RoMDZG?= =?utf-8?B?eXY2TWhpZkZ3N25heXZWT1YxRUxITEpWd3p0WXFWMG1NeVNFQkN1dXRsYU5P?= =?utf-8?B?WnNLWDVKTm1TTHZvTXU1QjlUZTJ4VElYN0NXL3FwSFdCeExReloxKys0QkdM?= =?utf-8?B?eHp3dGVNbldkZHRmV3I0dTlQdUVaalJWOUIxTkJ0Q3JCeHdRQkk4Tm5CUk03?= =?utf-8?B?YzIrVDlZZDZmczFYWi9COXZja1lkVWRzZ0ovL3lzbHRMYm9sY3BaRFV6eFRl?= =?utf-8?B?djlkTFZqMXhPZkl1SDM5K3FCdUxzRE5oK2hGTXVtYXBaRzg1MkRraXFsQXNs?= =?utf-8?B?NTEzMGw0ZVVqUDQ4ZUs5NVpLeFVxRktQaFN4Z2RINTRNMWgreC82MWdVc1BV?= =?utf-8?B?SFJjNHJWVEgrR0k2MjMwMDI0T1BYenZhUHByT3hTZVNIajZwNUlBTXJyWkha?= =?utf-8?B?R2tNalFEQXdDNk1XNVhzQWloS1ZwOTZDTXlaenlVbnpTUzhsVGZWc1JOeUFi?= =?utf-8?B?anVVNHdXY2dTam9HUGpENkN0Y1czUEhOWTRiZStGRmZxU0hiTVVYYkU0WEJH?= =?utf-8?B?N0owT1M4Mk1UTU90UnZJOVpCMXRHbHhhejJXYkVhNGZCNjdFSi9vYzgyT1Er?= =?utf-8?B?VEtUYTdMWDQranBib2oyeUdzcmxvcUt1dEtaOFJtR2VRdmZCek9WS0sxVzFn?= =?utf-8?B?T0NVTlpINnRtY29zeWVsampZaTBNbTV1N1FmYWtKcFZEVEZtMld3bEJmK0l3?= =?utf-8?B?NGVLVkc5OE94dUZZUFhkcjdmMmRVU1BUam9RWjVvS3p5Zy9ubllPQlJiNFg4?= =?utf-8?B?OHBKd0xTd1YxOVhBQW9uWHdnTGRBRHVxa2NkV2NaQjlZdGdQZm45QWZCeFlp?= =?utf-8?B?b3ZtS1NZcFBLNHZvS2RJVHZScFQyVUhaSWZCMnRvSGIxb045MVB2dkhmKysv?= =?utf-8?B?NmZGMG5LRXloc3IrcUt2L3hvMk9TMVFtQ0c2NythUGZVb0NVUEVFRGkyTitR?= =?utf-8?Q?j/89zeI4zE0yH/FVQE=3D?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: be16091d-a839-4e05-da7e-08da55da3e59 X-MS-Exchange-CrossTenant-AuthSource: DB6PR0101MB2214.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Jun 2022 12:08:26.6622 (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: DB7PR01MB4887 Subject: Re: [FFmpeg-devel] [PATCH 2/4] lavc: add standalone cached bitstream reader 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: Andreas Rheinhardt: > Anton Khirnov: >> +/* Unwind the cache so a refill_32 can fill it again. */ >> +static inline void bitstream_unwind(BitstreamContext *bc) >> +{ >> + int unwind = 4; >> + int unwind_bits = unwind * 8; > > I'm surprised that you used signed types here. > >> + >> + if (bc->bits_left < unwind_bits) >> + return; >> + >> + bc->bits >>= unwind_bits; >> + bc->bits <<= unwind_bits; > > The above won't work in LE. Best to call skip_remaining here. And you > need to templatize this function in 3/4. Calling skip_remaining is wrong either. Both the above (for BE) as well as skip_remaining would skip the oldest 32 bits in the cache, but we need to skip the newest 32 bits in the cache. So the following should do it: bc->bits_left -= unwind_bits; bc->ptr -= unwind; #ifdef BITSTREAM_READER_LE bc->bits &= ((UINT64_C(1) << bc->bits_left) - 1); #else bc->bits &= ~(UINT64_T_MAX >> bc->bits_left); #endif (Given that bc->bits_left can be 0 one can't simply shift by 64 - bits_left. I also don't know whether there should be any check before decrementing ptr.) > >> + bc->bits_left -= unwind_bits; >> + bc->ptr -= unwind; >> +} >> + >> +/* Unget up to 32 bits. */ >> +static inline void bitstream_unget(BitstreamContext *bc, uint64_t value, >> + size_t amount) > > size_t is the natural type for the bytesize of objects, but not for > bitsizes. A plane unsigned would be more natural here. > >> +{ >> + size_t cache_size = sizeof(bc->bits) * 8; >> + >> + if (bc->bits_left + amount > cache_size) >> + bitstream_unwind(bc); >> + >> + bc->bits = (bc->bits >> amount) | (value << (cache_size - amount)); > > This is big-endian only, too. > >> + bc->bits_left += amount; >> +} >> + _______________________________________________ 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".