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 AB75A49EA1 for ; Tue, 12 Mar 2024 21:47:56 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 1F21568D019; Tue, 12 Mar 2024 23:47:55 +0200 (EET) Received: from EUR01-DB5-obe.outbound.protection.outlook.com (mail-db5eur01olkn2023.outbound.protection.outlook.com [40.92.64.23]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 93B4468CE37 for ; Tue, 12 Mar 2024 23:47:48 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=X4EVhqni8nuUJjdd6GrtgMSc98aDuygBlc4nd9tvYCwL0FKWJAXpvgSZNe6/OyDCQqndaGckchSMlvVhRhS5usvygs+3/v35zpRirpbeBluqPgso8RuZvQxGZv/wpgIa8UKJQZ7W4iJPLu3BmPF4JJW19KsQTOUNFjlNn4QRWYYXHmz8H058gz9THM4sP2h4uInAA1oqqjXT4tBgPI8evdhVmYN8B/Tb1gGorJ46BAUhUBhUafrWZshWAQHTCuMcNmg69QwZH2hXGp9cz+NdFDhTY75gqsF2OEBJCX8rGDj7HTEIIHgwv33pY7RBuy/EIJEh0QBDZQi3b8bolqailw== 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=/YA3PSIQy8pZo8lpgmrlQx7nXjVyIojunijjPJ5oZTA=; b=dEcb0hgl9nDPvY6CGbRuQqgFr9JNEZAua1EPnVoLpmvWuyRSg7NWz4KqNJ9S8KWCFJ3PbrEVgjxsCoA4Tw9rHfAyF9N78fKbg4w97+l9JtXxoFONLTDSDjY6+O3uuQlVwmAKtSP8QovH4Ozycd+4EFfeAotOXpfnR/tmmUA3b08WZL1P1rUKX5N2RJqYcsrodv8vg7cJEut61YNW/w/i37mFxraKbqU1mjA6HUh0evTQmGzpOrJIaCPkeDk2JXZbhIB+3EAxEf0e8ZDnFBE74Ao1eLXfsXilQBK+7Y/G7RyiqTkAnWGBJtH/31qNPEBctgPrqqmSm8/ei943QCu0pQ== 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=/YA3PSIQy8pZo8lpgmrlQx7nXjVyIojunijjPJ5oZTA=; b=HmaAUdwN/R1zrC+6p6+v4DTdOat2pUsB9A4mW6tRXUNJ+AT1zfhsWCEcUMqBDG/q+5XZEuoaGQnCWS1I2R41q1alu1fuOVqwvHvuUwFrJ0iLKH3u6lOihTrYJWiAUUv3eZVqbzFw0BkRYn/8n6g8iAd4a8BUWXdqUERVU4nzCoQbArSLbV20/09UZyMyY55UrCjlKphpvdN+I/BqXrLkqL5bfwdsTmXqSeQQPzKtU2XX8qkNCC9rjLtJVk00ZhQssbj7VdLNzGt9EVfKH3vEjbY0FCyf0UpxSgmz6Qpr78N+9QsFlAcRFmY6EqSNex13XcYQufgufeSi5ud+gKrlYQ== Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) by AS8P250MB0135.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:376::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7362.36; Tue, 12 Mar 2024 21:47:46 +0000 Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::228d:8c6f:ed10:82eb]) by AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::228d:8c6f:ed10:82eb%7]) with mapi id 15.20.7362.035; Tue, 12 Mar 2024 21:47:46 +0000 Message-ID: Date: Tue, 12 Mar 2024 22:47:43 +0100 User-Agent: Mozilla Thunderbird Content-Language: en-US To: ffmpeg-devel@ffmpeg.org References: From: Andreas Rheinhardt In-Reply-To: X-TMN: [ByqDqRScIWUMEIzqabLUMCFH2EoywLDYICq9LmOsJE4=] X-ClientProxiedBy: ZR2P278CA0030.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:46::20) To AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) X-Microsoft-Original-Message-ID: MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8P250MB0744:EE_|AS8P250MB0135:EE_ X-MS-Office365-Filtering-Correlation-Id: 2338dd8f-dd3b-4c55-e74f-08dc42de0da8 X-MS-Exchange-SLBlob-MailProps: Cq7lScuPrnoAVlBsXi+5fvsd/1azsy4le41vPybWm060rhWeelC1MJuoYT+VAOj29ZWyaCKSwZnDARg6vKLBQZ3dRbOwqN1r0IEZHntF4UaBR9dH9i6RJPamOkiYsOHqkF+OiTLys8//4qDWLmbZSblr2DRPG5PIrJzef4D+cWrZhPe1s9YTPDxcSLP+aoYHOy0NubwwXOJgATyV9/vUuBnwEpDmTrb+rM/ydbYVV2kaLOK673+j+u9+8hX/aUiwBxFYt5b7AMCuP48sWMUuxImCS7VegbWQ4fu8H0Fp7C1UH0e8LGtfUXKv5x6wIdhF2fSzL4iJldg4s7NhygRHdrerHi1iFYRVKZR1MJBvet/e0pa4QiF5iNrjHzhxZiBLQgAVM/xGXUiNFvAV5J2VsrVi1r6IXbyo3Fn0dsvw2V116GlYdetVY0fZu+uTbjWmIPHMUSfGdp8cejT5SczqBCxEAkdOuP3Gqpa4iHAaFfGwo0TvD0QSxQX6+Qqj71JoxMGxfLOmyq8zs0YIVu0N7neC19GAOIAWNTj0TM93vQ0jG22YnJaKpDAkbYxO2bz2bLxSnYrboZqkxmqCe2iu+Mts+OCL5uBvycFWzgsDCa6Mgxsl/VQBRu0dcJnZWeds9MR3OOUXnnSVtEZg0lmFXNeWgWFoL9BSeUU5gZ02X7Pve6rO5S1x2CeNmhWPdfayZh6KpOZSCaWAeD1M6OkYGCg6utLP4M4cxc8OddsCv4s9EtdHCfOZ1uCN6RNOp8H+Ra02JNuGFXE= X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: +PyY+lOlIJ0RhQHFq794hfYTpk0hPOvfxhbt84hIp51mvRL6y6UYpmASRC2iwksvwse1ghPi5iXamm6ZTkz5aGWkXN8khcbs4tEm7sonpSs4f09X5F8qZ36RXaVt3Bi/oP0YK1huEtM1sgaOmYjyNlOkyNZ34QYXljLgLWtoagWxkF1sFs43kJtmoLg2ns4SaBASDoHZPzne+cnU4ve7s0vpqc5xoSvr1yHhE3rRA6kXmoYzYvFn/GmcnfpgyHu+4QUujbug0honpZ5pLWBaI7hHmJHvuaJDqgL+XbnfTZFaCF1CIIdjHTbavf/qB31t3f+UeYnBkv1BEWVY9M87TSWSjE4zm9IqJ/xcbiLOaDd32oZ0F3jZ8gdvNUfWQ3b4AfV0eCuZDsHCPy7lrnm0Gmgiknah/eosXLK9h/lfSIJRMSHZ9iLSHdaJbOL3AaqNjhULX9wPSeChlY1DBcHikl2iRKA7WHLrO7HbxCt37HW9KNT9mvflRajLWsYFv9kUIk4MrV9pYQQr+G1WZi/SSQEjoW+tmUJyTyXFrzHo7bwKVCC0ClZ5120mmRFjDbCc X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?MEZSb2RKSXFHYlFPSnBVMitUOEYxNW9oYTNDeEl3TW90bDhGV2k5MEZ3NVI4?= =?utf-8?B?dEpiQWRkdU90TEhNalBxcmxwRjNWcTMwdHZBRGIrNTgvM3E2MnA5QmUvRzZk?= =?utf-8?B?OC9vTHJySklXK21lSnBzbTliQXpuTHNVaUZsZVFHQTEvdCtYanJUdVZIMlF6?= =?utf-8?B?TlZKV1ZXbW5SdGw5YVVScXpTTnRmYXF1MVlmQTFtNlo0U0crS0N0dFdjeWRM?= =?utf-8?B?cVJUQU51dWdLT1JRamhiVFBZOVo4R1Jid2N2M0RLNDVpRTdvUWZjL253YmZw?= =?utf-8?B?ekNLSGNhQmVpdks4YjRNdWJuNklBM3p5bWdQSWM5akZUMktSOVFkb1RuR2tH?= =?utf-8?B?WGtuSmFDSVA2U1FPSVgvL2FRYzQ0c3pvN2JqUGw1OGVsdWFpaCtUVm1GTjVM?= =?utf-8?B?TkVWNG9PZ2VrTE8zemFyWGNGQVpWZCt0N0NFdVl6dFAwdGJNbkdxS0E4Vk5j?= =?utf-8?B?dEFOczhhWWtTSlFhKzVnVjdjbU5Dbi9NRElNbmI1WEdySDFES3QyUWxBOWNh?= =?utf-8?B?ZjhFa09YcXV3WVJMWkkzK1FaNWlZWmJ0anI3djRja2NodCtlRjIrbmhmSXd3?= =?utf-8?B?N3FOTjIwMW1hZFhsQlppV3Y5aktMVmI3NmRKZFNSZzFVOE5kZEhIZldCNUpJ?= =?utf-8?B?Z0lQd1FVNEJuaHQ2SDJJVDRYRTZRMmFvSkZjSnQzbFRxQXZQOXgvT1Z0QXpI?= =?utf-8?B?SSswYzIyMWhDOW1qbnRlYTNFNDhlUVF1cTRyK2VyclFrYVIvRzJGYWF6Mm12?= =?utf-8?B?ZGZmMUVjTUZTU2tUbTBtOUdmMWk4S1REWTg0aStxanJMK0NzNHpBK2hMNVEy?= =?utf-8?B?SC9hQ1BRMi8xeDh4aXF1cWkwZ3U1TTcxNHhoMDdrR200bFVwRThOZU0zcXBF?= =?utf-8?B?T3hJaFRQRG02WXVYcnlqaS80MkxtMFJJaElhQXZta3Fzand2U0tubm1Lcyta?= =?utf-8?B?WWRqbDQ3bVFOU3cybTBxNDRFdDNqZm9mYm1BUGMwMjFrUnFoR3l3R0FtSmJw?= =?utf-8?B?NWhqZGpjTm1KKzJ0RmdQUVhKeFE2OG1xclplTzFpc1hlQkhRTEc1aVVTWVJn?= =?utf-8?B?aVNiWjRLVWZ1REJqV3dwLzNwaWwxRm10cU5XVlZJR2FEMFg4YUZEZlJLdkkw?= =?utf-8?B?V2FtdDFML0RoaVd4M1RrNXhYR3NwNUxPMFh6alZENW91ZjlGbmtOM3FKN3Nk?= =?utf-8?B?cHJuSkJnb0NOaXZZYlM3RzkyYWQvUm5RTVIxemdjemhLV3M5dzJLa2RVcHZx?= =?utf-8?B?MHVEUnhBbzZjYU10bkJXRHZ3ZCtDbXZWaThSTFlyYncra3UyeVFTYy9aWFBE?= =?utf-8?B?Zm9wWWlCOHpsOTNGZDZhanBKc0N3alVrdlhFYVBxUE1WcXRyT1Y2d1BLVEZY?= =?utf-8?B?NXdQSit6TS90WnJkV09XY21uUkIvbWJzQWM5bG5NQ0dPcWRMZWlpTVQ2RjV1?= =?utf-8?B?ZmlmWFdhSUJ1Vnp0RndUWjZFdFZzaWN0Z0g0ZU9kLzZDZEx0ck9WYkphRTQv?= =?utf-8?B?WXpGQ0R0NHNqOFFKNm5leThCVmlOQzhSR1N5eTl4Vi8zNCtELzZUTnZ3Smxr?= =?utf-8?B?d0VGczJzZWZLcUVZTy9OeDVRY0N4cUlqUkJZY2xRaWFhTFZLSTV0UzZzMVJ6?= =?utf-8?B?ZmtaYmh3akkrak8vbmdPNzl0ZHMrUDFZdlIyOVd0K05sSklQWFNWQlRXWFNq?= =?utf-8?B?UlR3bDJ3Q3pVcHE0RGFnZW5oTWVmekQxTlp1TU1UT1RBb2NkRjRBazJRPT0=?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2338dd8f-dd3b-4c55-e74f-08dc42de0da8 X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Mar 2024 21:47:46.0781 (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: AS8P250MB0135 Subject: Re: [FFmpeg-devel] [PATCH] avcodec/hevc_cabac: Let compiler count offsets 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: > This is easily possible with an X macro. > Using an enum for the offsets also allows to remove > two arrays which are not really needed and will typically > be optimized away by the compiler: The first just exists > to count the number of syntax elements*, the second one > exists to get offset[CONSTANT]. These constants were > of type enum SyntaxElement and this enum was only used > in hevc_cabac.c (although it was declared in hevcdec.h); > it is now no longer needed at all and has therefore been > removed. > > The first of these arrays led to a warning from Clang > which is fixed by this commit: > warning: variable 'num_bins_in_se' is not needed and will > not be emitted [-Wunneeded-internal-declaration] > > *: One could also just added a trailing SYNTAX_ELEMENT_NB > to the SyntaxElement enum for this purpose. > > Signed-off-by: Andreas Rheinhardt > --- Will apply this patch tomorrow unless there are objections. > libavcodec/hevc_cabac.c | 248 ++++++++++++++++------------------------ > libavcodec/hevcdec.h | 52 --------- > 2 files changed, 100 insertions(+), 200 deletions(-) > > diff --git a/libavcodec/hevc_cabac.c b/libavcodec/hevc_cabac.c > index 6b38da84bd..63ffb3d37c 100644 > --- a/libavcodec/hevc_cabac.c > +++ b/libavcodec/hevc_cabac.c > @@ -31,114 +31,66 @@ > > #define CABAC_MAX_BIN 31 > > -/** > - * number of bin by SyntaxElement. > - */ > -static const int8_t num_bins_in_se[] = { > - 1, // sao_merge_flag > - 1, // sao_type_idx > - 0, // sao_eo_class > - 0, // sao_band_position > - 0, // sao_offset_abs > - 0, // sao_offset_sign > - 0, // end_of_slice_flag > - 3, // split_coding_unit_flag > - 1, // cu_transquant_bypass_flag > - 3, // skip_flag > - 3, // cu_qp_delta > - 1, // pred_mode > - 4, // part_mode > - 0, // pcm_flag > - 1, // prev_intra_luma_pred_mode > - 0, // mpm_idx > - 0, // rem_intra_luma_pred_mode > - 2, // intra_chroma_pred_mode > - 1, // merge_flag > - 1, // merge_idx > - 5, // inter_pred_idc > - 2, // ref_idx_l0 > - 2, // ref_idx_l1 > - 2, // abs_mvd_greater0_flag > - 2, // abs_mvd_greater1_flag > - 0, // abs_mvd_minus2 > - 0, // mvd_sign_flag > - 1, // mvp_lx_flag > - 1, // no_residual_data_flag > - 3, // split_transform_flag > - 2, // cbf_luma > - 5, // cbf_cb, cbf_cr > - 2, // transform_skip_flag[][] > - 2, // explicit_rdpcm_flag[][] > - 2, // explicit_rdpcm_dir_flag[][] > - 18, // last_significant_coeff_x_prefix > - 18, // last_significant_coeff_y_prefix > - 0, // last_significant_coeff_x_suffix > - 0, // last_significant_coeff_y_suffix > - 4, // significant_coeff_group_flag > - 44, // significant_coeff_flag > - 24, // coeff_abs_level_greater1_flag > - 6, // coeff_abs_level_greater2_flag > - 0, // coeff_abs_level_remaining > - 0, // coeff_sign_flag > - 8, // log2_res_scale_abs > - 2, // res_scale_sign_flag > - 1, // cu_chroma_qp_offset_flag > - 1, // cu_chroma_qp_offset_idx > -}; > +// ELEM(NAME, NUM_BINS) > +#define CABAC_ELEMS(ELEM) \ > + ELEM(SAO_MERGE_FLAG, 1) \ > + ELEM(SAO_TYPE_IDX, 1) \ > + ELEM(SAO_EO_CLASS, 0) \ > + ELEM(SAO_BAND_POSITION, 0) \ > + ELEM(SAO_OFFSET_ABS, 0) \ > + ELEM(SAO_OFFSET_SIGN, 0) \ > + ELEM(END_OF_SLICE_FLAG, 0) \ > + ELEM(SPLIT_CODING_UNIT_FLAG, 3) \ > + ELEM(CU_TRANSQUANT_BYPASS_FLAG, 1) \ > + ELEM(SKIP_FLAG, 3) \ > + ELEM(CU_QP_DELTA, 3) \ > + ELEM(PRED_MODE_FLAG, 1) \ > + ELEM(PART_MODE, 4) \ > + ELEM(PCM_FLAG, 0) \ > + ELEM(PREV_INTRA_LUMA_PRED_FLAG, 1) \ > + ELEM(MPM_IDX, 0) \ > + ELEM(REM_INTRA_LUMA_PRED_MODE, 0) \ > + ELEM(INTRA_CHROMA_PRED_MODE, 2) \ > + ELEM(MERGE_FLAG, 1) \ > + ELEM(MERGE_IDX, 1) \ > + ELEM(INTER_PRED_IDC, 5) \ > + ELEM(REF_IDX_L0, 2) \ > + ELEM(REF_IDX_L1, 2) \ > + ELEM(ABS_MVD_GREATER0_FLAG, 2) \ > + ELEM(ABS_MVD_GREATER1_FLAG, 2) \ > + ELEM(ABS_MVD_MINUS2, 0) \ > + ELEM(MVD_SIGN_FLAG, 0) \ > + ELEM(MVP_LX_FLAG, 1) \ > + ELEM(NO_RESIDUAL_DATA_FLAG, 1) \ > + ELEM(SPLIT_TRANSFORM_FLAG, 3) \ > + ELEM(CBF_LUMA, 2) \ > + ELEM(CBF_CB_CR, 5) \ > + ELEM(TRANSFORM_SKIP_FLAG, 2) \ > + ELEM(EXPLICIT_RDPCM_FLAG, 2) \ > + ELEM(EXPLICIT_RDPCM_DIR_FLAG, 2) \ > + ELEM(LAST_SIGNIFICANT_COEFF_X_PREFIX, 18) \ > + ELEM(LAST_SIGNIFICANT_COEFF_Y_PREFIX, 18) \ > + ELEM(LAST_SIGNIFICANT_COEFF_X_SUFFIX, 0) \ > + ELEM(LAST_SIGNIFICANT_COEFF_Y_SUFFIX, 0) \ > + ELEM(SIGNIFICANT_COEFF_GROUP_FLAG, 4) \ > + ELEM(SIGNIFICANT_COEFF_FLAG, 44) \ > + ELEM(COEFF_ABS_LEVEL_GREATER1_FLAG, 24) \ > + ELEM(COEFF_ABS_LEVEL_GREATER2_FLAG, 6) \ > + ELEM(COEFF_ABS_LEVEL_REMAINING, 0) \ > + ELEM(COEFF_SIGN_FLAG, 0) \ > + ELEM(LOG2_RES_SCALE_ABS, 8) \ > + ELEM(RES_SCALE_SIGN_FLAG, 2) \ > + ELEM(CU_CHROMA_QP_OFFSET_FLAG, 1) \ > + ELEM(CU_CHROMA_QP_OFFSET_IDX, 1) \ > > /** > - * Offset to ctxIdx 0 in init_values and states, indexed by SyntaxElement. > + * Offset to ctxIdx 0 in init_values and states. > */ > -static const int elem_offset[sizeof(num_bins_in_se)] = { > - 0, // sao_merge_flag > - 1, // sao_type_idx > - 2, // sao_eo_class > - 2, // sao_band_position > - 2, // sao_offset_abs > - 2, // sao_offset_sign > - 2, // end_of_slice_flag > - 2, // split_coding_unit_flag > - 5, // cu_transquant_bypass_flag > - 6, // skip_flag > - 9, // cu_qp_delta > - 12, // pred_mode > - 13, // part_mode > - 17, // pcm_flag > - 17, // prev_intra_luma_pred_mode > - 18, // mpm_idx > - 18, // rem_intra_luma_pred_mode > - 18, // intra_chroma_pred_mode > - 20, // merge_flag > - 21, // merge_idx > - 22, // inter_pred_idc > - 27, // ref_idx_l0 > - 29, // ref_idx_l1 > - 31, // abs_mvd_greater0_flag > - 33, // abs_mvd_greater1_flag > - 35, // abs_mvd_minus2 > - 35, // mvd_sign_flag > - 35, // mvp_lx_flag > - 36, // no_residual_data_flag > - 37, // split_transform_flag > - 40, // cbf_luma > - 42, // cbf_cb, cbf_cr > - 47, // transform_skip_flag[][] > - 49, // explicit_rdpcm_flag[][] > - 51, // explicit_rdpcm_dir_flag[][] > - 53, // last_significant_coeff_x_prefix > - 71, // last_significant_coeff_y_prefix > - 89, // last_significant_coeff_x_suffix > - 89, // last_significant_coeff_y_suffix > - 89, // significant_coeff_group_flag > - 93, // significant_coeff_flag > - 137, // coeff_abs_level_greater1_flag > - 161, // coeff_abs_level_greater2_flag > - 167, // coeff_abs_level_remaining > - 167, // coeff_sign_flag > - 167, // log2_res_scale_abs > - 175, // res_scale_sign_flag > - 177, // cu_chroma_qp_offset_flag > - 178, // cu_chroma_qp_offset_idx > +enum { > +#define OFFSET(NAME, NUM_BINS) \ > + NAME ## _OFFSET, \ > + NAME ## _END = NAME ## _OFFSET + NUM_BINS - 1, > +CABAC_ELEMS(OFFSET) > }; > > #define CNU 154 > @@ -570,12 +522,12 @@ int ff_hevc_cabac_init(HEVCLocalContext *lc, int ctb_addr_ts) > > int ff_hevc_sao_merge_flag_decode(HEVCLocalContext *lc) > { > - return GET_CABAC(elem_offset[SAO_MERGE_FLAG]); > + return GET_CABAC(SAO_MERGE_FLAG_OFFSET); > } > > int ff_hevc_sao_type_idx_decode(HEVCLocalContext *lc) > { > - if (!GET_CABAC(elem_offset[SAO_TYPE_IDX])) > + if (!GET_CABAC(SAO_TYPE_IDX_OFFSET)) > return 0; > > if (!get_cabac_bypass(&lc->cc)) > @@ -622,7 +574,7 @@ int ff_hevc_end_of_slice_flag_decode(HEVCLocalContext *lc) > > int ff_hevc_cu_transquant_bypass_flag_decode(HEVCLocalContext *lc) > { > - return GET_CABAC(elem_offset[CU_TRANSQUANT_BYPASS_FLAG]); > + return GET_CABAC(CU_TRANSQUANT_BYPASS_FLAG_OFFSET); > } > > int ff_hevc_skip_flag_decode(HEVCLocalContext *lc, int x0, int y0, int x_cb, int y_cb) > @@ -638,7 +590,7 @@ int ff_hevc_skip_flag_decode(HEVCLocalContext *lc, int x0, int y0, int x_cb, int > if (lc->ctb_up_flag || y0b) > inc += !!SAMPLE_CTB(s->skip_flag, x_cb, y_cb - 1); > > - return GET_CABAC(elem_offset[SKIP_FLAG] + inc); > + return GET_CABAC(SKIP_FLAG_OFFSET + inc); > } > > int ff_hevc_cu_qp_delta_abs(HEVCLocalContext *lc) > @@ -647,7 +599,7 @@ int ff_hevc_cu_qp_delta_abs(HEVCLocalContext *lc) > int suffix_val = 0; > int inc = 0; > > - while (prefix_val < 5 && GET_CABAC(elem_offset[CU_QP_DELTA] + inc)) { > + while (prefix_val < 5 && GET_CABAC(CU_QP_DELTA_OFFSET + inc)) { > prefix_val++; > inc = 1; > } > @@ -675,7 +627,7 @@ int ff_hevc_cu_qp_delta_sign_flag(HEVCLocalContext *lc) > > int ff_hevc_cu_chroma_qp_offset_flag(HEVCLocalContext *lc) > { > - return GET_CABAC(elem_offset[CU_CHROMA_QP_OFFSET_FLAG]); > + return GET_CABAC(CU_CHROMA_QP_OFFSET_FLAG_OFFSET); > } > > int ff_hevc_cu_chroma_qp_offset_idx(HEVCLocalContext *lc) > @@ -683,7 +635,7 @@ int ff_hevc_cu_chroma_qp_offset_idx(HEVCLocalContext *lc) > int c_max= FFMAX(5, lc->parent->ps.pps->chroma_qp_offset_list_len_minus1); > int i = 0; > > - while (i < c_max && GET_CABAC(elem_offset[CU_CHROMA_QP_OFFSET_IDX])) > + while (i < c_max && GET_CABAC(CU_CHROMA_QP_OFFSET_IDX_OFFSET)) > i++; > > return i; > @@ -691,7 +643,7 @@ int ff_hevc_cu_chroma_qp_offset_idx(HEVCLocalContext *lc) > > int ff_hevc_pred_mode_decode(HEVCLocalContext *lc) > { > - return GET_CABAC(elem_offset[PRED_MODE_FLAG]); > + return GET_CABAC(PRED_MODE_FLAG_OFFSET); > } > > int ff_hevc_split_coding_unit_flag_decode(HEVCLocalContext *lc, int ct_depth, int x0, int y0) > @@ -712,40 +664,40 @@ int ff_hevc_split_coding_unit_flag_decode(HEVCLocalContext *lc, int ct_depth, in > inc += (depth_left > ct_depth); > inc += (depth_top > ct_depth); > > - return GET_CABAC(elem_offset[SPLIT_CODING_UNIT_FLAG] + inc); > + return GET_CABAC(SPLIT_CODING_UNIT_FLAG_OFFSET + inc); > } > > int ff_hevc_part_mode_decode(HEVCLocalContext *lc, int log2_cb_size) > { > - if (GET_CABAC(elem_offset[PART_MODE])) // 1 > + if (GET_CABAC(PART_MODE_OFFSET)) // 1 > return PART_2Nx2N; > if (log2_cb_size == lc->parent->ps.sps->log2_min_cb_size) { > if (lc->cu.pred_mode == MODE_INTRA) // 0 > return PART_NxN; > - if (GET_CABAC(elem_offset[PART_MODE] + 1)) // 01 > + if (GET_CABAC(PART_MODE_OFFSET + 1)) // 01 > return PART_2NxN; > if (log2_cb_size == 3) // 00 > return PART_Nx2N; > - if (GET_CABAC(elem_offset[PART_MODE] + 2)) // 001 > + if (GET_CABAC(PART_MODE_OFFSET + 2)) // 001 > return PART_Nx2N; > return PART_NxN; // 000 > } > > if (!lc->parent->ps.sps->amp_enabled_flag) { > - if (GET_CABAC(elem_offset[PART_MODE] + 1)) // 01 > + if (GET_CABAC(PART_MODE_OFFSET + 1)) // 01 > return PART_2NxN; > return PART_Nx2N; > } > > - if (GET_CABAC(elem_offset[PART_MODE] + 1)) { // 01X, 01XX > - if (GET_CABAC(elem_offset[PART_MODE] + 3)) // 011 > + if (GET_CABAC(PART_MODE_OFFSET + 1)) { // 01X, 01XX > + if (GET_CABAC(PART_MODE_OFFSET + 3)) // 011 > return PART_2NxN; > if (get_cabac_bypass(&lc->cc)) // 0101 > return PART_2NxnD; > return PART_2NxnU; // 0100 > } > > - if (GET_CABAC(elem_offset[PART_MODE] + 3)) // 001 > + if (GET_CABAC(PART_MODE_OFFSET + 3)) // 001 > return PART_Nx2N; > if (get_cabac_bypass(&lc->cc)) // 0001 > return PART_nRx2N; > @@ -759,7 +711,7 @@ int ff_hevc_pcm_flag_decode(HEVCLocalContext *lc) > > int ff_hevc_prev_intra_luma_pred_flag_decode(HEVCLocalContext *lc) > { > - return GET_CABAC(elem_offset[PREV_INTRA_LUMA_PRED_FLAG]); > + return GET_CABAC(PREV_INTRA_LUMA_PRED_FLAG_OFFSET); > } > > int ff_hevc_mpm_idx_decode(HEVCLocalContext *lc) > @@ -783,7 +735,7 @@ int ff_hevc_rem_intra_luma_pred_mode_decode(HEVCLocalContext *lc) > int ff_hevc_intra_chroma_pred_mode_decode(HEVCLocalContext *lc) > { > int ret; > - if (!GET_CABAC(elem_offset[INTRA_CHROMA_PRED_MODE])) > + if (!GET_CABAC(INTRA_CHROMA_PRED_MODE_OFFSET)) > return 4; > > ret = get_cabac_bypass(&lc->cc) << 1; > @@ -793,7 +745,7 @@ int ff_hevc_intra_chroma_pred_mode_decode(HEVCLocalContext *lc) > > int ff_hevc_merge_idx_decode(HEVCLocalContext *lc) > { > - int i = GET_CABAC(elem_offset[MERGE_IDX]); > + int i = GET_CABAC(MERGE_IDX_OFFSET); > > if (i != 0) { > while (i < lc->parent->sh.max_num_merge_cand-1 && get_cabac_bypass(&lc->cc)) > @@ -804,17 +756,17 @@ int ff_hevc_merge_idx_decode(HEVCLocalContext *lc) > > int ff_hevc_merge_flag_decode(HEVCLocalContext *lc) > { > - return GET_CABAC(elem_offset[MERGE_FLAG]); > + return GET_CABAC(MERGE_FLAG_OFFSET); > } > > int ff_hevc_inter_pred_idc_decode(HEVCLocalContext *lc, int nPbW, int nPbH) > { > if (nPbW + nPbH == 12) > - return GET_CABAC(elem_offset[INTER_PRED_IDC] + 4); > - if (GET_CABAC(elem_offset[INTER_PRED_IDC] + lc->ct_depth)) > + return GET_CABAC(INTER_PRED_IDC_OFFSET + 4); > + if (GET_CABAC(INTER_PRED_IDC_OFFSET + lc->ct_depth)) > return PRED_BI; > > - return GET_CABAC(elem_offset[INTER_PRED_IDC] + 4); > + return GET_CABAC(INTER_PRED_IDC_OFFSET + 4); > } > > int ff_hevc_ref_idx_lx_decode(HEVCLocalContext *lc, int num_ref_idx_lx) > @@ -823,7 +775,7 @@ int ff_hevc_ref_idx_lx_decode(HEVCLocalContext *lc, int num_ref_idx_lx) > int max = num_ref_idx_lx - 1; > int max_ctx = FFMIN(max, 2); > > - while (i < max_ctx && GET_CABAC(elem_offset[REF_IDX_L0] + i)) > + while (i < max_ctx && GET_CABAC(REF_IDX_L0_OFFSET + i)) > i++; > if (i == 2) { > while (i < max && get_cabac_bypass(&lc->cc)) > @@ -835,22 +787,22 @@ int ff_hevc_ref_idx_lx_decode(HEVCLocalContext *lc, int num_ref_idx_lx) > > int ff_hevc_mvp_lx_flag_decode(HEVCLocalContext *lc) > { > - return GET_CABAC(elem_offset[MVP_LX_FLAG]); > + return GET_CABAC(MVP_LX_FLAG_OFFSET); > } > > int ff_hevc_no_residual_syntax_flag_decode(HEVCLocalContext *lc) > { > - return GET_CABAC(elem_offset[NO_RESIDUAL_DATA_FLAG]); > + return GET_CABAC(NO_RESIDUAL_DATA_FLAG_OFFSET); > } > > static av_always_inline int abs_mvd_greater0_flag_decode(HEVCLocalContext *lc) > { > - return GET_CABAC(elem_offset[ABS_MVD_GREATER0_FLAG]); > + return GET_CABAC(ABS_MVD_GREATER0_FLAG_OFFSET); > } > > static av_always_inline int abs_mvd_greater1_flag_decode(HEVCLocalContext *lc) > { > - return GET_CABAC(elem_offset[ABS_MVD_GREATER1_FLAG] + 1); > + return GET_CABAC(ABS_MVD_GREATER1_FLAG_OFFSET + 1); > } > > static av_always_inline int mvd_decode(HEVCLocalContext *lc) > @@ -878,39 +830,39 @@ static av_always_inline int mvd_sign_flag_decode(HEVCLocalContext *lc) > > int ff_hevc_split_transform_flag_decode(HEVCLocalContext *lc, int log2_trafo_size) > { > - return GET_CABAC(elem_offset[SPLIT_TRANSFORM_FLAG] + 5 - log2_trafo_size); > + return GET_CABAC(SPLIT_TRANSFORM_FLAG_OFFSET + 5 - log2_trafo_size); > } > > int ff_hevc_cbf_cb_cr_decode(HEVCLocalContext *lc, int trafo_depth) > { > - return GET_CABAC(elem_offset[CBF_CB_CR] + trafo_depth); > + return GET_CABAC(CBF_CB_CR_OFFSET + trafo_depth); > } > > int ff_hevc_cbf_luma_decode(HEVCLocalContext *lc, int trafo_depth) > { > - return GET_CABAC(elem_offset[CBF_LUMA] + !trafo_depth); > + return GET_CABAC(CBF_LUMA_OFFSET + !trafo_depth); > } > > static int hevc_transform_skip_flag_decode(HEVCLocalContext *lc, int c_idx) > { > - return GET_CABAC(elem_offset[TRANSFORM_SKIP_FLAG] + !!c_idx); > + return GET_CABAC(TRANSFORM_SKIP_FLAG_OFFSET + !!c_idx); > } > > static int explicit_rdpcm_flag_decode(HEVCLocalContext *lc, int c_idx) > { > - return GET_CABAC(elem_offset[EXPLICIT_RDPCM_FLAG] + !!c_idx); > + return GET_CABAC(EXPLICIT_RDPCM_FLAG_OFFSET + !!c_idx); > } > > static int explicit_rdpcm_dir_flag_decode(HEVCLocalContext *lc, int c_idx) > { > - return GET_CABAC(elem_offset[EXPLICIT_RDPCM_DIR_FLAG] + !!c_idx); > + return GET_CABAC(EXPLICIT_RDPCM_DIR_FLAG_OFFSET + !!c_idx); > } > > int ff_hevc_log2_res_scale_abs(HEVCLocalContext *lc, int idx) > { > int i =0; > > - while (i < 4 && GET_CABAC(elem_offset[LOG2_RES_SCALE_ABS] + 4 * idx + i)) > + while (i < 4 && GET_CABAC(LOG2_RES_SCALE_ABS_OFFSET + 4 * idx + i)) > i++; > > return i; > @@ -918,7 +870,7 @@ int ff_hevc_log2_res_scale_abs(HEVCLocalContext *lc, int idx) > > int ff_hevc_res_scale_sign_flag(HEVCLocalContext *lc, int idx) > { > - return GET_CABAC(elem_offset[RES_SCALE_SIGN_FLAG] + idx); > + return GET_CABAC(RES_SCALE_SIGN_FLAG_OFFSET + idx); > } > > static av_always_inline void last_significant_coeff_xy_prefix_decode(HEVCLocalContext *lc, int c_idx, > @@ -936,13 +888,13 @@ static av_always_inline void last_significant_coeff_xy_prefix_decode(HEVCLocalCo > ctx_shift = log2_size - 2; > } > while (i < max && > - GET_CABAC(elem_offset[LAST_SIGNIFICANT_COEFF_X_PREFIX] + (i >> ctx_shift) + ctx_offset)) > + GET_CABAC(LAST_SIGNIFICANT_COEFF_X_PREFIX_OFFSET + (i >> ctx_shift) + ctx_offset)) > i++; > *last_scx_prefix = i; > > i = 0; > while (i < max && > - GET_CABAC(elem_offset[LAST_SIGNIFICANT_COEFF_Y_PREFIX] + (i >> ctx_shift) + ctx_offset)) > + GET_CABAC(LAST_SIGNIFICANT_COEFF_Y_PREFIX_OFFSET + (i >> ctx_shift) + ctx_offset)) > i++; > *last_scy_prefix = i; > } > @@ -965,18 +917,18 @@ static av_always_inline int significant_coeff_group_flag_decode(HEVCLocalContext > > inc = FFMIN(ctx_cg, 1) + (c_idx>0 ? 2 : 0); > > - return GET_CABAC(elem_offset[SIGNIFICANT_COEFF_GROUP_FLAG] + inc); > + return GET_CABAC(SIGNIFICANT_COEFF_GROUP_FLAG_OFFSET + inc); > } > static av_always_inline int significant_coeff_flag_decode(HEVCLocalContext *lc, int x_c, int y_c, > int offset, const uint8_t *ctx_idx_map) > { > int inc = ctx_idx_map[(y_c << 2) + x_c] + offset; > - return GET_CABAC(elem_offset[SIGNIFICANT_COEFF_FLAG] + inc); > + return GET_CABAC(SIGNIFICANT_COEFF_FLAG_OFFSET + inc); > } > > static av_always_inline int significant_coeff_flag_decode_0(HEVCLocalContext *lc, int c_idx, int offset) > { > - return GET_CABAC(elem_offset[SIGNIFICANT_COEFF_FLAG] + offset); > + return GET_CABAC(SIGNIFICANT_COEFF_FLAG_OFFSET + offset); > } > > static av_always_inline int coeff_abs_level_greater1_flag_decode(HEVCLocalContext *lc, int c_idx, int inc) > @@ -985,7 +937,7 @@ static av_always_inline int coeff_abs_level_greater1_flag_decode(HEVCLocalContex > if (c_idx > 0) > inc += 16; > > - return GET_CABAC(elem_offset[COEFF_ABS_LEVEL_GREATER1_FLAG] + inc); > + return GET_CABAC(COEFF_ABS_LEVEL_GREATER1_FLAG_OFFSET + inc); > } > > static av_always_inline int coeff_abs_level_greater2_flag_decode(HEVCLocalContext *lc, int c_idx, int inc) > @@ -993,7 +945,7 @@ static av_always_inline int coeff_abs_level_greater2_flag_decode(HEVCLocalContex > if (c_idx > 0) > inc += 4; > > - return GET_CABAC(elem_offset[COEFF_ABS_LEVEL_GREATER2_FLAG] + inc); > + return GET_CABAC(COEFF_ABS_LEVEL_GREATER2_FLAG_OFFSET + inc); > } > > static av_always_inline int coeff_abs_level_remaining_decode(HEVCLocalContext *lc, int rc_rice_param) > diff --git a/libavcodec/hevcdec.h b/libavcodec/hevcdec.h > index c697119891..e65a6180ca 100644 > --- a/libavcodec/hevcdec.h > +++ b/libavcodec/hevcdec.h > @@ -86,58 +86,6 @@ enum RPSType { > NB_RPS_TYPE, > }; > > -enum SyntaxElement { > - SAO_MERGE_FLAG = 0, > - SAO_TYPE_IDX, > - SAO_EO_CLASS, > - SAO_BAND_POSITION, > - SAO_OFFSET_ABS, > - SAO_OFFSET_SIGN, > - END_OF_SLICE_FLAG, > - SPLIT_CODING_UNIT_FLAG, > - CU_TRANSQUANT_BYPASS_FLAG, > - SKIP_FLAG, > - CU_QP_DELTA, > - PRED_MODE_FLAG, > - PART_MODE, > - PCM_FLAG, > - PREV_INTRA_LUMA_PRED_FLAG, > - MPM_IDX, > - REM_INTRA_LUMA_PRED_MODE, > - INTRA_CHROMA_PRED_MODE, > - MERGE_FLAG, > - MERGE_IDX, > - INTER_PRED_IDC, > - REF_IDX_L0, > - REF_IDX_L1, > - ABS_MVD_GREATER0_FLAG, > - ABS_MVD_GREATER1_FLAG, > - ABS_MVD_MINUS2, > - MVD_SIGN_FLAG, > - MVP_LX_FLAG, > - NO_RESIDUAL_DATA_FLAG, > - SPLIT_TRANSFORM_FLAG, > - CBF_LUMA, > - CBF_CB_CR, > - TRANSFORM_SKIP_FLAG, > - EXPLICIT_RDPCM_FLAG, > - EXPLICIT_RDPCM_DIR_FLAG, > - LAST_SIGNIFICANT_COEFF_X_PREFIX, > - LAST_SIGNIFICANT_COEFF_Y_PREFIX, > - LAST_SIGNIFICANT_COEFF_X_SUFFIX, > - LAST_SIGNIFICANT_COEFF_Y_SUFFIX, > - SIGNIFICANT_COEFF_GROUP_FLAG, > - SIGNIFICANT_COEFF_FLAG, > - COEFF_ABS_LEVEL_GREATER1_FLAG, > - COEFF_ABS_LEVEL_GREATER2_FLAG, > - COEFF_ABS_LEVEL_REMAINING, > - COEFF_SIGN_FLAG, > - LOG2_RES_SCALE_ABS, > - RES_SCALE_SIGN_FLAG, > - CU_CHROMA_QP_OFFSET_FLAG, > - CU_CHROMA_QP_OFFSET_IDX, > -}; > - > enum PartMode { > PART_2Nx2N = 0, > PART_2NxN = 1, _______________________________________________ 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".