| /* | |
| * Copyright (c) 2021, Alliance for Open Media. All rights reserved | |
| * | |
| * This source code is subject to the terms of the BSD 3-Clause Clear License | |
| * and the Alliance for Open Media Patent License 1.0. If the BSD 3-Clause Clear | |
| * License was not distributed with this source code in the LICENSE file, you | |
| * can obtain it at aomedia.org/license/software-license/bsd-3-c-c/. If the | |
| * Alliance for Open Media Patent License 1.0 was not distributed with this | |
| * source code in the PATENTS file, you can obtain it at | |
| * aomedia.org/license/patent-license/. | |
| */ | |
| #ifndef AOM_AV1_DECODER_DECODETXB_H_ | |
| #define AOM_AV1_DECODER_DECODETXB_H_ | |
| #include "av1/common/enums.h" | |
| struct aom_reader; | |
| struct AV1Common; | |
| struct DecoderCodingBlock; | |
| struct txb_ctx; | |
| uint8_t av1_read_coeffs_txb( | |
| const struct AV1Common *const cm, struct DecoderCodingBlock *dcb, | |
| struct aom_reader *const r, const int blk_row, const int blk_col, | |
| const int plane, const struct txb_ctx *const txb_ctx, const TX_SIZE tx_size | |
| #if CONFIG_COEFF_LOGS | |
| , | |
| uint64_t *eob_pt_bits, uint64_t *eob_extra_bits, uint64_t *eob_offset_bits | |
| #endif // CONFIG_COEFF_LOGS | |
| ); | |
| void av1_read_coeffs_txb_facade( | |
| const struct AV1Common *const cm, struct DecoderCodingBlock *dcb, | |
| struct aom_reader *const r, const int plane, const int row, const int col, | |
| const TX_SIZE tx_size | |
| // #if CONFIG_COEFF_LOGS | |
| // , | |
| // uint64_t *eob_pt_bits, | |
| // uint64_t *eob_extra_bits, | |
| // uint64_t *eob_offset_bits | |
| // #endif // CONFIG_COEFF_LOGS | |
| ); | |
| uint8_t av1_read_sig_txtype( | |
| const struct AV1Common *const cm, struct DecoderCodingBlock *dcb, | |
| struct aom_reader *const r, const int blk_row, const int blk_col, | |
| const int plane, const struct txb_ctx *const txb_ctx, const TX_SIZE tx_size | |
| #if CONFIG_COEFF_LOGS | |
| , | |
| uint64_t *eob_pt_bits, uint64_t *eob_extra_bits, uint64_t *eob_offset_bits | |
| #endif // CONFIG_COEFF_LOGS | |
| ); | |
| uint8_t av1_read_coeffs_txb_skip(const struct AV1Common *const cm, | |
| struct DecoderCodingBlock *dcb, | |
| struct aom_reader *const r, const int blk_row, | |
| const int blk_col, const int plane, | |
| const TX_SIZE tx_size); | |
| #if CONFIG_COEFF_LOGS | |
| typedef struct { | |
| uint64_t sign_cost; | |
| uint64_t br_cost; | |
| uint64_t lr_cost[4]; | |
| uint64_t hr_cost; | |
| } qcoeff_bit_cost; | |
| enum { | |
| QCOEFF_RCOST_TYPE_SGNRATE = 0, | |
| QCOEFF_RCOST_TYPE_BRRATE, | |
| QCOEFF_RCOST_TYPE_LR1RATE, | |
| QCOEFF_RCOST_TYPE_LR2RATE, | |
| QCOEFF_RCOST_TYPE_LR3RATE, | |
| QCOEFF_RCOST_TYPE_LR4RATE, | |
| QCOEFF_RCOST_TYPE_HRRATE, | |
| } UENUM1BYTE(QCOEFF_RCOST_TYPE); | |
| void av2_tcq_declog_eobrate(const struct AV1Common *const cm, | |
| struct DecoderCodingBlock *dcb, const int plane, | |
| const int blk_row, const int blk_col, | |
| TX_SIZE tx_size, TX_TYPE tx_type, | |
| const int is_inter, const int neob, | |
| const uint64_t eob_pt_bits, | |
| const uint64_t eob_extra_bits, | |
| const uint64_t eob_offset_bits); | |
| void av2_tcq_declog_decrate(const struct AV1Common *const cm, | |
| struct DecoderCodingBlock *dcb, const int plane, | |
| const int blk_row, const int blk_col, | |
| TX_SIZE tx_size, TX_TYPE tx_type, | |
| const int is_inter, const int neob, | |
| qcoeff_bit_cost *qcoeff_cost, | |
| const QCOEFF_RCOST_TYPE qcoeff_rcost_type); | |
| void av2_tcq_declog_percoeff( | |
| const struct AV1Common *const cm, struct DecoderCodingBlock *dcb, | |
| const int plane, const int blk_row, const int blk_col, TX_SIZE tx_size, | |
| TX_TYPE tx_type, const int is_inter, const int sq_step_dc, | |
| const int sq_step_ac, const int vq_step_dc, const int vq_step_ac, | |
| const int neob, const int n_coeffs, const int *vec, const char *tag); | |
| #endif // CONFIG_COEFF_LOGS | |
| #endif // AOM_AV1_DECODER_DECODETXB_H_ |