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 ESMTPS id D6C884DF29 for ; Wed, 5 Mar 2025 16:51:17 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 45D1368EF01; Wed, 5 Mar 2025 18:51:14 +0200 (EET) Received: from EUR03-AM7-obe.outbound.protection.outlook.com (mail-am7eur03olkn2038.outbound.protection.outlook.com [40.92.59.38]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2495D68E5C0 for ; Wed, 5 Mar 2025 18:51:08 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=zRshiycIQ8TSGJmVU0nvMSa+gr7syb1l6o7xRkC9HSrBCaShV0sYFo2hJAR/vCXIA/b7kYs3x+yGr8cXp0aIpU/DH5tQ+qTFSfQRb77mpteNxZvjQMyLTACHi5TziGHZ5cMgNvXqrl6TYCPFCe83OgmyOVMjlWCMFHlJD2yteyb++nXEXKVesbLF5PSC2WUuP4PBc6coh6ZJUTfhlISSzWf6OVd6VmbfNEVptee1+mSY8FNoErCE1gH/OHrVuCC1HKjMhutokyZ2woTPL5Xnqe4bA5eSt/fCFm4o64gWp9WIinoS42ObW88TMRW236hsBV8eqsxhsDmulWJDnR76Jg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=kv4Droo6q5PDF+MqbPZL4l9jncV8aa3XwQ0lpAS3REw=; b=k5Fe+ZbtGK1bmZuafyC5GJ/errYOScufUAfMGSqIVlh2QC3X516ERpX+6OFZuu5yJ61F5RO7BdeK+0Kt/89FPGrFyPPZijEzDMfECiAD6Y5woRTWVcfeP3HHvOgzVQFhUDcyUxcLhU5uncsKPg1IAn9vDbJc+YMID7IdRwhrYO8JjvGNgHnDTuQ0OUULUbmUTOEM8Sow3rpAnZm83ijTVcunrp53/qXFylm5ntQtgvVl6N8xHjRxsDOytPa2g8vSggGZi0ehz2RxgZgh3XxqSn7mwYYJlGVHZvrmfcPMJJiBN2ODn+e6dIcE2LxOLj5VUbsI+2dNB5SVxrj4JVtcWQ== 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=kv4Droo6q5PDF+MqbPZL4l9jncV8aa3XwQ0lpAS3REw=; b=o4IVHgBh4/yMWpylI6/aSS/HpLioxQZOJFRVQ8e4uKAzeSVA5te3FmnuEd5zt4vgPXz+NHp0xmkI3DzB9ksuwYZ2494Y6Yu2Lh4SDmANJNyqzCCXyvz4X3RqA2bI6+/bUbxR/HDGqecEvgudfnUIfWRzADPMAAm7JmxeOsy8sNkrp9bSJZGRD1fyTYcTTNRWTe0De9EcwFErM7SqvK2qpt9YqqNrw82eBaK/OpqXLUQ13/SnnANWCra+D9GSA1velTFtOc+y8T+ISNtL3l1DnINwt0ISxyqYQMs/QoKD+rnmjWsb9sKRWt+euam8eLF78ruqx6p6HUZ9tcxLp4iatQ== Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) by VI0P250MB1079.EURP250.PROD.OUTLOOK.COM (2603:10a6:800:246::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8511.17; Wed, 5 Mar 2025 16:51:05 +0000 Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::384d:40d4:ecb7:1c9]) by AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::384d:40d4:ecb7:1c9%5]) with mapi id 15.20.8511.014; Wed, 5 Mar 2025 16:51:05 +0000 Message-ID: Date: Wed, 5 Mar 2025 17:51:03 +0100 User-Agent: Mozilla Thunderbird To: ffmpeg-devel@ffmpeg.org References: <20250305162934.33784-1-mihirmvgore@gmail.com> <20250305162934.33784-2-mihirmvgore@gmail.com> Content-Language: en-US From: Andreas Rheinhardt In-Reply-To: <20250305162934.33784-2-mihirmvgore@gmail.com> X-ClientProxiedBy: ZR2P278CA0036.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:47::14) To AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) X-Microsoft-Original-Message-ID: <78bd142e-62e1-4959-b815-6c07cbd924c2@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8P250MB0744:EE_|VI0P250MB1079:EE_ X-MS-Office365-Filtering-Correlation-Id: 4561be27-b119-42b9-34eb-08dd5c05eb64 X-Microsoft-Antispam: BCL:0; ARA:14566002|7092599003|8060799006|15080799006|6090799003|5072599009|461199028|19110799003|3412199025|440099028|41001999003; X-Microsoft-Antispam-Message-Info: =?utf-8?B?eWdNNU15MGI0RytDcDZRRytXSGJDWFluMTFodldjNWRJOGt5VXNKT2lrWmRv?= =?utf-8?B?bnZxeHUzRUFTYldqTDdQNTBZekRWaFZNM2RQNXdLYlhZYkdZNFRkVDJBVFps?= =?utf-8?B?SWpsWHE5MC9UMnN2U2pFWkxXVS9QZVJIeDgwQU13dUdmdkJIRkdhN1c0SWtO?= =?utf-8?B?anJVbXRDTzgwYTBKK2V2RklNRzVQS2Zoa29jaVA2enNBc1U1eVNQUTBFalBK?= =?utf-8?B?b1lxaXU0ZEZOekp4eDdCTGt2NGtzRTZqS0hRT1czWG1hZmRoVlZ5MndyelhU?= =?utf-8?B?NHpJRTNjTmFhRFNCRHlrSENEUml5aFIzZmgrcVZPTmY0TGhVUlVqcHhERjk0?= =?utf-8?B?WUtOLy9vWnB6QWJiUHJ2RUZqSmFpRkZFVFh2aUJGeHc3R2pEZDlaZmhKa0w3?= =?utf-8?B?NHBnZ1VWL0dURVBOMThDaGRFeEFzRisrSU1zYmJLQmJvb2FkQ0xiTW1vMGxV?= =?utf-8?B?Y3hiNy8vaTNkcFZlZ2VrRkR0QUE4ckZUNnFvcVNVck1FU1dWeHRoM1ZHQ2VC?= =?utf-8?B?Q2xkeGdCN1NVMGd4WnFPbTdJM1o4cm5JR2szYnVaUmFaZWhMdWFwV2sycGZl?= =?utf-8?B?bk56QTBSVWZWTG1UOTZ5cC81enIyTERJSzV2NzFzSnkzaGdxMitNdEREd2ZV?= =?utf-8?B?S09BWC85VUxVWW5zZStvbDg1NW5xOTBTVWJvNGlUeWFhV1Z6WWRuVld0Q2RB?= =?utf-8?B?NklHbmdXQnd5QzJ4SkFvQzZTT0ZOOGwyVjNhN1pOT2lNSmpDbXNEY2pwT3ZX?= =?utf-8?B?Z2tXUlNvQ0Z2cXRpNisxVTFEL01wSTVxOVdkNkRoT21TLzZVZjg1NFl2VG9l?= =?utf-8?B?UEY5S29SbG1BTks1cVpLMnhOTkFJK2RIQ2FjbXdLcERDZ3NVcHhhakY0ZE51?= =?utf-8?B?VE1uamJZcWV5MFBBK0VYVkJuWWsvdkdZVks1cmM3MGFSYWRhanY2YllFTVhO?= =?utf-8?B?dlhjbERVejRtNmpxejNGYjV1YUxEV2t2S2o5cHd2dlNzc3gvbm5yUHVDZ0xy?= =?utf-8?B?YjRxeDROQ0VkdlhoOXJqekZQbWZJcXRCU0JHc0pjM0FQZldWa1RCOHMwL3Q0?= =?utf-8?B?NCtvK2xJQjlialdENlRBWFJ3Z2lFNnpNVFZWcCt4c2R1cGRMWVVia1JPbUVM?= =?utf-8?B?VmN1dzZsMGY1VGJHSHJjK1Btc0FwLzlqYWkyU2VHcDdyS3RuMzVyMHJObys5?= =?utf-8?B?b0ZaNlBJU0hhMk5rMkdadnJHWEVXZzVHTWxjaE03OGFCQVdaaDRzVXVrVDdC?= =?utf-8?B?dlBsVDd5Y0pydmlIQ0U3U1BSZ3g5aXhPMmxLNUZjY01wWVp0MmZ4eEVLWGZi?= =?utf-8?B?cytqcFJCZ1ZmOWNXMElYVUVCYjhFWHI5d1NkNnVRQUxwR0JKS0Q4SmJPWWVw?= =?utf-8?B?eVZoekJVSElsWUpPV3lvak5OZUg0SmYzd3lrY3o3SE5kbndFVkxmcXAveGJN?= =?utf-8?B?cVN2c1IyTzJ5N1U5K1JlOEZvVTBIOGs3TEU2eElvNlZKUUU0cndCbVIwa1dH?= =?utf-8?B?cUdMWU5KRkFvS3phQ3lac2kzdkt6cHFVVEMzOU40R1Jyd1ZvRFlHYU1XdEJ4?= =?utf-8?B?eEIzdz09?= X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?RklFeExGYkRkTTJvK2R5QkhyWDQwemk0dWEvaVJwTnZzNVFvbjY2UDhTTGdQ?= =?utf-8?B?VkVmL3NDTzFzQXF4MWxxVjFmaExDZ2lOejQ3emx5WUplWm40ZlhNZ3BVY01j?= =?utf-8?B?Vk9jdHdJSENIaThKMjhhYklEVG84d3hEOUhtaWFFOXYxSTdOUmx5UnhPL1dp?= =?utf-8?B?Z3pvZlhLYmw0b1pvVGYrYWNzayt1MzF0WTNIK0JiV05GYWszVGt1Z2dBYnBm?= =?utf-8?B?VGpVazRoc2FEVU5kaDRmY09GOWMyU2RULzJJdjRob2tuazRuYndqQy93dzlT?= =?utf-8?B?OEI4VHJPYXlxOUhZV014ZkZyNGZiT2lEYURGcW9kTkpmSkZNNkFNdUdPWXNa?= =?utf-8?B?djRPV3psMllsK21UL1BPK05xcFlBMlhRNDhLS2ZCN2o4UXlXN2IxaG41WVJa?= =?utf-8?B?U3FEZGFHMGNHQTlMcWttbURiT25HRG9zcnZMN0ZHa3FtYmRrRkNLZTF5aURs?= =?utf-8?B?UHNEVkplV1hHc3h1OVBMMG9tMEpYRjVaRDA4ZHFZcG1UYjc3c0JISkl1bW9n?= =?utf-8?B?emdtT0RpTVYxQk1LT25rTlNPajhaNXZXdGdIR2ZPNEpldGtOblgybTBKL2ox?= =?utf-8?B?MkJZU1k3SzBKNk1MK2ZIMmxuQ0ZEV2FzNGNaamk4UnI4MUt1R2U3R2N3WjNj?= =?utf-8?B?VFZYNWZLM05sUDJKK2ZJL05pME9iVEl1KzFoQ0NZNGorNmF5YVpEekNMeEVo?= =?utf-8?B?NUpndGQ5K1Z4dDRFTXIyaDBMOW1YUnE4QjF3MWpWS1QwWm1kVU1xc2s3clRw?= =?utf-8?B?ZDFabDNIaXBUSlFvcWdmNkxyMnhzdGZ6Wlo5RlZYaTF1cUlPdGtQVTVBeUJX?= =?utf-8?B?SEY3TmU1US9GbG9uZ1JmYWRBeSsyd1dhSFkyQ09ZWW1CWDJkemFpMlp1Y0tV?= =?utf-8?B?M0J6L2FUUHp4c2c1dmkrckRMRmE3Yjdzdmo4aWR1THhYcHZBRnhsZVFFN3NP?= =?utf-8?B?bXJIZ04wLzBVUFFHQTFhbEhjLzFvY0VFZGNaVVFDM0FxUlRYTnFDekVjK01I?= =?utf-8?B?RzNOZkVjUFNlM1VwTUZwWXQwQ0pZYWRXL3BlUExmRWpsTnpTQkRNeGVFOU9T?= =?utf-8?B?cjBCUS8zRzliSk5JVTc2c1RhTWlmem85NXlsY2crdW5EempaYUQ1N2paSVYw?= =?utf-8?B?QjVGOHh0M3lFNU9FWjAzTEFJdDNoZjV2cE8wbVpUNFVxcThWVGZxT0lLQ3U4?= =?utf-8?B?RjJaMnF1aFVZWlB5aUZPSHdGWWkyUDgzbjJNci8wc2NKVVVzLzRvOC9qMEtR?= =?utf-8?B?NXp2MFhDQ2RyY0V4NWhoRmdvTS90b0lwMENOclBGL3JZcUZldFM5Vm9KdnZV?= =?utf-8?B?WE5lQ0N6T2JrTjhJN0UyR214eGcxOUIxTkdyZEFuQ2NPZzhMWmgydjhYU0cw?= =?utf-8?B?VEdLdFNjb3dPeGY2SS9pWEJtZUhFMW54N3pla20vajF3eHZaWTVZeUxXQmE4?= =?utf-8?B?c0RKNkxFQ1RNMVdSTkFmcWZWYTY3QVlHWEU3MWd3Q3VxOStjaTRKR2w1ckRE?= =?utf-8?B?UzZLajlYVW5TY1hnUTFTa1RzR1lHRHoxbHJtSEQ4N0FVR3dZREVEdTJBVFY3?= =?utf-8?B?eHpJQ0Q3Q1JvMEEyMDY5bW5zbjdqZzFjRTRib1o5VzR1ZjBLUjhrVmNtRkti?= =?utf-8?B?cmxIL1ZVa2VpNWhYVFJzZFJMNzd3OW5scnB0SDZ3Y214bkhWSkZPV3U2L0I2?= =?utf-8?B?RzBBaEtUNjQ1NSs0SlRoaGhhMXNUME1aTk9tcXlUdm9ucGtZcHF3ZGZBPT0=?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4561be27-b119-42b9-34eb-08dd5c05eb64 X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Mar 2025 16:51:05.3957 (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: VI0P250MB1079 Subject: Re: [FFmpeg-devel] [PATCH 1/1] Add vpx range encoder support 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: MihirGore: > From: MihirGore23 > > --- > libavcodec/vpx_rac.h | 75 ++++++++++++++++++++++++++++++++++---------- > 1 file changed, 59 insertions(+), 16 deletions(-) > > diff --git a/libavcodec/vpx_rac.h b/libavcodec/vpx_rac.h > index b158cc0754..f01358f71f 100644 > --- a/libavcodec/vpx_rac.h > +++ b/libavcodec/vpx_rac.h > @@ -20,7 +20,7 @@ > > /** > * @file > - * Common VP5-VP9 range decoder stuff > + * Common VP5-VP9 range encoder and decoder functions > */ > > #ifndef AVCODEC_VPX_RAC_H > @@ -34,24 +34,25 @@ > > typedef struct VPXRangeCoder { > int high; > - int bits; /* stored negated (i.e. negative "bits" is a positive number of > - bits left) in order to eliminate a negate in cache refilling */ > + int bits; > const uint8_t *buffer; > const uint8_t *end; > unsigned int code_word; > int end_reached; > + uint8_t *output_buffer; // Added for encoding > + uint8_t *output_end; // Added for encoding What are the advantages of reusing the same structure etc. in contrast to using dedicated ones? > } VPXRangeCoder; > > extern const uint8_t ff_vpx_norm_shift[256]; > + > +/*Decoder Functions */ > + > int ff_vpx_init_range_decoder(VPXRangeCoder *c, const uint8_t *buf, int buf_size); > > -/** > - * returns 1 if the end of the stream has been reached, 0 otherwise. > - */ > static av_always_inline int vpx_rac_is_end(VPXRangeCoder *c) > { > if (c->end <= c->buffer && c->bits >= 0) > - c->end_reached ++; > + c->end_reached++; > return c->end_reached > 10; > } > > @@ -64,7 +65,7 @@ static av_always_inline unsigned int vpx_rac_renorm(VPXRangeCoder *c) > c->high <<= shift; > code_word <<= shift; > bits += shift; > - if(bits >= 0 && c->buffer < c->end) { > + if (bits >= 0 && c->buffer < c->end) { Cosmetics and functional changes should not be mixed. > code_word |= bytestream_get_be16(&c->buffer) << bits; > bits -= 16; > } > @@ -72,12 +73,6 @@ static av_always_inline unsigned int vpx_rac_renorm(VPXRangeCoder *c) > return code_word; > } > > -#if ARCH_ARM > -#include "arm/vpx_arith.h" > -#elif ARCH_X86 > -#include "x86/vpx_arith.h" > -#endif > - Why are you doing this? > #ifndef vpx_rac_get_prob > #define vpx_rac_get_prob vpx_rac_get_prob > static av_always_inline int vpx_rac_get_prob(VPXRangeCoder *c, uint8_t prob) > @@ -95,7 +90,6 @@ static av_always_inline int vpx_rac_get_prob(VPXRangeCoder *c, uint8_t prob) > #endif > > #ifndef vpx_rac_get_prob_branchy > -// branchy variant, to be used where there's a branch based on the bit decoded > static av_always_inline int vpx_rac_get_prob_branchy(VPXRangeCoder *c, int prob) > { > unsigned long code_word = vpx_rac_renorm(c); > @@ -117,7 +111,6 @@ static av_always_inline int vpx_rac_get_prob_branchy(VPXRangeCoder *c, int prob) > static av_always_inline int vpx_rac_get(VPXRangeCoder *c) > { > unsigned int code_word = vpx_rac_renorm(c); > - /* equiprobable */ > int low = (c->high + 1) >> 1; > unsigned int low_shift = low << 16; > int bit = code_word >= low_shift; > @@ -132,4 +125,54 @@ static av_always_inline int vpx_rac_get(VPXRangeCoder *c) > return bit; > } > > +//Encoder Functions > + > +int ff_vpx_init_range_encoder(VPXRangeCoder *c, uint8_t *buf, int buf_size); > + > +static av_always_inline void vpx_rac_renorm_encoder(VPXRangeCoder *c) > +{ > + while (c->high < 0x10000) { > + if (c->output_buffer < c->output_end) { > + *c->output_buffer++ = c->code_word >> 24; > + } > + c->code_word <<= 8; > + c->high <<= 8; > + } > +} > + > +static av_always_inline void vpx_rac_put_prob(VPXRangeCoder *c, int bit, uint8_t prob) > +{ > + unsigned int low = 1 + (((c->high - 1) * prob) >> 8); > + if (bit) { > + c->code_word += low << 16; > + c->high -= low; > + } else { > + c->high = low; > + } > + vpx_rac_renorm_encoder(c); > +} > + > +static av_always_inline void vpx_rac_put(VPXRangeCoder *c, int bit) > +{ > + unsigned int low = (c->high + 1) >> 1; > + if (bit) { > + c->code_word += low << 16; > + c->high -= low; > + } else { > + c->high = low; > + } > + vpx_rac_renorm_encoder(c); > +} > + > +static av_always_inline void vpx_rac_flush(VPXRangeCoder *c) > +{ > + for (int i = 0; i < 4; i++) { > + if (c->output_buffer < c->output_end) { > + *c->output_buffer++ = c->code_word >> 24; > + } > + c->code_word <<= 8; > + } > +} > + > #endif /* AVCODEC_VPX_RAC_H */ > + _______________________________________________ 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".