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 53CD140E0A for ; Fri, 31 Dec 2021 11:30:45 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id AA90168AFDE; Fri, 31 Dec 2021 13:30:42 +0200 (EET) Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-oln040092074016.outbound.protection.outlook.com [40.92.74.16]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6044168005A for ; Fri, 31 Dec 2021 13:30:36 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=EMmp1SvUCxsv5by3Jm4GCQAM/dpqBsodVPzn0Y8s6VZ4pOuZa4RNtLAezy+fb4y4DOasermck6Faa7DweyAcwcpZIWdKw+M9Qsiaj2xYAihqbf5BBmb4A3N9xdS6RjDQcQFlg3wxFIKpi6d7lcxDK+DgS1ieILcsPpamXFDCVBTxPDz1++GSe71vbKzOTx55jXqHJgRAo+I+qTopLfoVU4fUKN3frlzfUL8ddUx6WiB2GR5Mp9gVMJIeArpyDvikBoEOLORZKbywr/r+ZFo7tH0peOEptfJSxBFmhyl4aLXgq+mApZzxG5pPN9BmyR4reoefSZDHsm/Wunt0abHlqw== 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=dITXPEh4FNxZ3h2m/OFIREkFcyb0pSfrGSuyq/nebrE=; b=dgGQZrLkBvqa/TLx5Lj51C9S38u0qrzW6z56imkn/ghr0Lvo8yS/W2ERAA0QL8AdbPuFYhWhfurJUhAZDQPkbGTrMeiDNq1WuOTwQnBE2mvkP0CbUNLi5JygblXd72rjfSUwZ3byQxshQYWLzZ5J4fLH7kOfSWP1d0Uz0eSpaaOmUbtx9cIj0SmtcV2p0QRSTMgWEkwqY5mqYeLxj8mwWshWoyS68h1/3e0d4m7brPkh2f2Px5klmRbbZRLG+WQBv2laGr0RoAmOQNUJoZVlXawFv0bNNITT5RPHOCb3LC30hrOdddz7GJyNtWZCjQr04zz8qxJBmSNwiZ0ZQ35LKQ== 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=dITXPEh4FNxZ3h2m/OFIREkFcyb0pSfrGSuyq/nebrE=; b=HtE80pxjtmZ8A/dae0FVXLbPmNKp6E4g3oxCYv+hnnrGngJo0OrDW+gNpLjeQDozrDd0Mbq2uFtMqcRncQTGqgQBnJeu0n8bVjjcCehnHnR9pgbK6B15OjrgbefWGCziIn3I/7zSlU03u1Xqm0PqaJjNI+0P62MC08mTKGX8ohYnt9lGJz6U1UtCfJKPVdtiuK7azEI28ZTDl/N9BmEHg5ktQyRHodF8Val1HQecwORh13osM0S1lMiWeBfRdWxOFSd+gbIpUACo2EKIz8//l6aYRlN5FO+ajsEWQsjtFpgsBbe35B3A2vFQMz2V8V12wMJhT7/483BIaV2YjafGgA== Received: from AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) by AM7PR03MB6548.eurprd03.prod.outlook.com (2603:10a6:20b:1c2::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4844.14; Fri, 31 Dec 2021 11:30:34 +0000 Received: from AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::19fc:be9f:2c9c:53f5]) by AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::19fc:be9f:2c9c:53f5%6]) with mapi id 15.20.4844.014; Fri, 31 Dec 2021 11:30:34 +0000 Message-ID: Date: Fri, 31 Dec 2021 12:30:33 +0100 Content-Language: en-US To: ffmpeg-devel@ffmpeg.org References: <20211231105307.30946-1-anton@khirnov.net> From: Andreas Rheinhardt In-Reply-To: <20211231105307.30946-1-anton@khirnov.net> X-TMN: [UKT3mEu7cqRW0v1UYNHEPJ29ZEYQnqxl] X-ClientProxiedBy: AS9P194CA0004.EURP194.PROD.OUTLOOK.COM (2603:10a6:20b:46d::32) To AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) X-Microsoft-Original-Message-ID: <03924f24-2a23-4d0d-a3eb-96e4933fa795@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 5cdc949d-4af5-4fd9-c54a-08d9cc50f5fe X-MS-TrafficTypeDiagnostic: AM7PR03MB6548:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: unbqwkny8QBZ2oERGL4Dnlg7GSs+dd/1GoipYDK7rMh0VN3D8J3Sp3IYVKqcaeyDB1iF4Eq1/i6mpaw/EzmQ3loJPCEIOFKHJ8tMdCH0DvL2ZIBpDiAYTmxx5K1g0HoV/Tt/PLORgRFLwWNLtqkQ4P5AmaGl/KAunOQqpenWHcRrVef6hlMOqhKxM/svk4BDl9eN/C8SRPH2Ig1GNj7+EX6TqEpRoRdT/cDrOWG46ftPn6qQ6/suYK41aUOkzwKzsS0ZlJlJGtxETW2hl8JhHOH4XqBG/9kT08VTz8PR7Tlel9ZpIWipXSEUJs8wUoZihk6q33m2rDb2oLzCF+TP7LPQzsIITJoQvmyQSCVGJKtBPJ1KiOOZ2ZutBZGaYeOTCF1PHzIp3IFIb7hEcdwTv+puW2EtRoQOC4L/kPMxE/0RCfHJXyCtk+DbdgItQcaDB5KwLZnvZ7KMIz6IOXB+DC61korV2t4QUMAbgmSsyqR4vfi/K3eYKFK5PVnuaDLsq1vUbGAJgqlDFJoUIHn6MOz6fTKHq8P2cvkKjwTnNZbQBa4C0l3PIGFHWSv3IsDNNLQhS3jPq76VUydyYkIs3g== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?OEh1NzduUHg5Y1k2TE53a1V1dCtqdmt1RW5JRWNCK3NDc0tIUGE5SERRbW9C?= =?utf-8?B?ejdaelNaNk1LbG1xMVNpb2VRcXhwQnNnbjJwWE9WckNlWjdqbkdrcjArcmVy?= =?utf-8?B?UjU0aHR2NXNNbEJDVDJQOEh1TjN2NDYwQ2ZoMjcrVGw2YStQOXZqTnJMQ3hn?= =?utf-8?B?bTljZkZraXV3UHdTYVRaWnpUcmFxbXJ2L2UxSTRDZTM1UTQwL3lnZGlnNnRT?= =?utf-8?B?WWtGRU53OGNVYnpQYW5RTlpPZ3F2NFd0bTRpalQ3Q0tuN2srTS90NE5lVi9C?= =?utf-8?B?d3UyL0hMQ1ZqVDBqbzA3c3dJU2pSZU4vV3pSeGRsZXdUcVVuYThvMUQxQXVm?= =?utf-8?B?ZUZFTkFxaVAvTXJrajR3Vm1aaU1JTzN4VmYvR3ZVQ0ZZL21UeVh0YTI5SnBO?= =?utf-8?B?VHJvMXVVUG9Oa0JJbnVoUnhJMElJVmFUcEo2QTJ4Q3JQd2x5cXdveExrNWc4?= =?utf-8?B?N1FrbnY4N2RRVWt0UzVYTzE1UWNDaDgzc0JVRmZ6ZEtlWTdSSXdUM21ESEMw?= =?utf-8?B?K1k1TzMwQnp4N3Vjdis2dTZMNmxmVUdtY2lON0Zobk1ScjJQNlMwWnBVRXJU?= =?utf-8?B?UUdqWXdCUXl6S2xsb25POXcxd0RIMVVjaVlCOWF1K0R3UzFRMnBIRlRNOFFa?= =?utf-8?B?NktCaklYdWZNMzRLek1IQlUwVlJkb1BVd201UERxNk5FRitVcW5ya0xCVmlu?= =?utf-8?B?cm5xWGNOQ2RFcWZYZ1hrb3pjZ1NDYWJ1bWpHeW1aOHRKVUg2L213VGVXSkR2?= =?utf-8?B?YzByNTNDWDhrRmJOampESkFQaU9kNDUwbzdUYUJFWGswSVgwTE50TkV6MkpP?= =?utf-8?B?ZlYrRWg0aFlUdEdvUXc3MkhpSStqM2lGN3VKSE5LbVNjbHNzdUkycWNjWHU1?= =?utf-8?B?Q1ArVy9uaTFIK2VYT2lYS25oOGFPUllhU1J5U1duT2hqNTgwK0d3eTNJcTZI?= =?utf-8?B?bUs5OXc4VjkxT2xjWW96S2hrS0VQY05KVDV5SC81ZTJVVkt0K2FENEFmT3hW?= =?utf-8?B?Y3NCNldlSFQ3VjcwNDhCSEllNkhxeEtud2dXVUFORFZHd3BDcDN4ZG1mWXZN?= =?utf-8?B?RHZmdzRBTFpkdC9YamwzeXBUZFVERXZLU3ZqeG01aG42Z1RBekMzYzJYZ2wv?= =?utf-8?B?R05MY2svcVBZTjdjMHB3ODlQdTFQNUUyaFNlTncyRVJEVzlDZnF3Q2JOdXE2?= =?utf-8?B?d1VCMnQrazZ3MzBsMTQxOWhYSVNtRGZNaXpEaWZTOEczLzVQbllOckxWWHhl?= =?utf-8?B?ZnNUeXFjU1Uwa2JkNVZXeUE3Q2d2NVNRdTVlUUtwVlUwcmIydz09?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5cdc949d-4af5-4fd9-c54a-08d9cc50f5fe X-MS-Exchange-CrossTenant-AuthSource: AM7PR03MB6660.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Dec 2021 11:30:34.8075 (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: AM7PR03MB6548 Subject: Re: [FFmpeg-devel] [PATCH 1/7] lavc/flac_parser: use a custom FIFO implementation 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: > FLAC parser currently uses AVFifoBuffer in a highly non-trivial manner, > modifying its "internals" (the whole struct is currently public, but no > other code touches its contents directly). E.g. it does not use any > av_fifo functions for reading the FIFO contents, but implements its own. > > Reimplement the needed parts of the AVFifoBuffer API in the FLAC parser, > making it completely self-contained. This will allow us to make > AVFifoBuffer private. > --- > libavcodec/flac_parser.c | 191 +++++++++++++++++++++++++++++++-------- > 1 file changed, 153 insertions(+), 38 deletions(-) > > diff --git a/libavcodec/flac_parser.c b/libavcodec/flac_parser.c > index 3b27b152fc..d6af5ce836 100644 > --- a/libavcodec/flac_parser.c > +++ b/libavcodec/flac_parser.c > @@ -34,7 +34,6 @@ > > #include "libavutil/attributes.h" > #include "libavutil/crc.h" > -#include "libavutil/fifo.h" > #include "bytestream.h" > #include "parser.h" > #include "flac.h" > @@ -57,6 +56,15 @@ > #define MAX_FRAME_HEADER_SIZE 16 > #define MAX_FRAME_VERIFY_SIZE (MAX_FRAME_HEADER_SIZE + 1) > > +typedef struct FifoBuffer { > + uint8_t *buffer; > + uint8_t *end; > + uint8_t *rptr; > + uint8_t *wptr; > + size_t rndx; > + size_t wndx; > +} FifoBuffer; > + > typedef struct FLACHeaderMarker { > int offset; /**< byte offset from start of FLACParseContext->buffer */ > int link_penalty[FLAC_MAX_SEQUENTIAL_HEADERS]; /**< array of local scores > @@ -84,7 +92,7 @@ typedef struct FLACParseContext { > int nb_headers_buffered; /**< number of headers that are buffered */ > int best_header_valid; /**< flag set when the parser returns junk; > if set return best_header next time */ > - AVFifoBuffer *fifo_buf; /**< buffer to store all data until headers > + FifoBuffer fifo_buf; /**< buffer to store all data until headers > can be verified */ > int end_padded; /**< specifies if fifo_buf's end is padded */ > uint8_t *wrap_buf; /**< general fifo read buffer when wrapped */ > @@ -127,6 +135,17 @@ static int frame_header_is_valid(AVCodecContext *avctx, const uint8_t *buf, > return 1; > } > > +static size_t flac_fifo_size(FifoBuffer *f) Missing const > +{ > + av_assert0(f->wndx >= f->rndx); This assert looks very fishy: It will trigger if wndx has already wrapped around while rndx has not yet (or rather, if wndx has wrapped around once more than rndx). Or am I missing something here? > + return f->wndx - f->rndx; > +} > + > +static size_t flac_fifo_space(FifoBuffer *f) > +{ > + return f->end - f->buffer - flac_fifo_size(f); > +} > + _______________________________________________ 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".