Coverage Report

Created: 2026-07-30 06:27

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/work/svt-av1/Source/Lib/Codec/transforms.h
Line
Count
Source
1
/*
2
* Copyright(c) 2019 Intel Corporation
3
* Copyright (c) 2016, Alliance for Open Media. All rights reserved
4
*
5
* This source code is subject to the terms of the BSD 2 Clause License and
6
* the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
7
* was not distributed with this source code in the LICENSE file, you can
8
* obtain it at https://www.aomedia.org/license/software-license. If the Alliance for Open
9
* Media Patent License 1.0 was not distributed with this source code in the
10
* PATENTS file, you can obtain it at https://www.aomedia.org/license/patent-license.
11
*/
12
13
#ifndef EbTransforms_h
14
#define EbTransforms_h
15
16
#include "definitions.h"
17
#include "coefficients.h"
18
#include "inv_transforms.h"
19
20
#ifdef __cplusplus
21
extern "C" {
22
#endif
23
24
#include "enc_dec_process.h"
25
12.9M
#define UNIT_QUANT_SHIFT 2
26
12.9M
#define UNIT_QUANT_FACTOR (1 << UNIT_QUANT_SHIFT)
27
28
extern const int8_t fwd_cos_bit_col[MAX_TXWH_IDX /*txw_idx*/][MAX_TXWH_IDX /*txh_idx*/];
29
extern const int8_t fwd_cos_bit_row[MAX_TXWH_IDX /*txw_idx*/][MAX_TXWH_IDX /*txh_idx*/];
30
31
extern const int8_t* fwd_txfm_shift_ls[TX_SIZES_ALL];
32
33
extern const uint8_t tx_blocks_per_depth[BLOCK_SIZES_ALL][MAX_VARTX_DEPTH + 1];
34
35
typedef struct Position {
36
    int x;
37
    int y;
38
} Position;
39
40
// origin is block - separate tables for INTRA (idx 0) and INTER (idx 1) needed b/c of tx depth 2
41
extern Position tx_org[BLOCK_SIZES_ALL][2 /*is_inter*/][MAX_VARTX_DEPTH + 1][MAX_TXB_COUNT];
42
void            svt_aom_build_tx_org(void); // fills tx_org at init
43
44
0
static INLINE int is_rect_tx(TxSize tx_size) {
45
0
    return tx_size >= TX_SIZES;
46
0
}
Unexecuted instantiation: av1me.c:is_rect_tx
Unexecuted instantiation: enc_cdef.c:is_rect_tx
Unexecuted instantiation: enc_dec_process.c:is_rect_tx
Unexecuted instantiation: enc_inter_prediction.c:is_rect_tx
Unexecuted instantiation: enc_intra_prediction.c:is_rect_tx
Unexecuted instantiation: enc_mode_config.c:is_rect_tx
Unexecuted instantiation: entropy_coding.c:is_rect_tx
Unexecuted instantiation: full_loop.c:is_rect_tx
Unexecuted instantiation: md_rate_estimation.c:is_rect_tx
Unexecuted instantiation: mode_decision.c:is_rect_tx
Unexecuted instantiation: motion_estimation.c:is_rect_tx
Unexecuted instantiation: product_coding_loop.c:is_rect_tx
Unexecuted instantiation: rc_process.c:is_rect_tx
Unexecuted instantiation: rd_cost.c:is_rect_tx
Unexecuted instantiation: resource_coordination_process.c:is_rect_tx
Unexecuted instantiation: src_ops_process.c:is_rect_tx
Unexecuted instantiation: transforms.c:is_rect_tx
Unexecuted instantiation: encode_txb_ref_c.c:is_rect_tx
Unexecuted instantiation: coding_loop.c:is_rect_tx
47
48
0
static INLINE int is_rect_tx_allowed_bsize(BlockSize bsize) {
49
0
    static const char lut[BLOCK_SIZES_ALL] = {
50
0
        0, // BLOCK_4X4
51
0
        1, // BLOCK_4X8
52
0
        1, // BLOCK_8X4
53
0
        0, // BLOCK_8X8
54
0
        1, // BLOCK_8X16
55
0
        1, // BLOCK_16X8
56
0
        0, // BLOCK_16X16
57
0
        1, // BLOCK_16X32
58
0
        1, // BLOCK_32X16
59
0
        0, // BLOCK_32X32
60
0
        1, // BLOCK_32X64
61
0
        1, // BLOCK_64X32
62
0
        0, // BLOCK_64X64
63
0
        0, // BLOCK_64X128
64
0
        0, // BLOCK_128X64
65
0
        0, // BLOCK_128X128
66
0
        1, // BLOCK_4X16
67
0
        1, // BLOCK_16X4
68
0
        1, // BLOCK_8X32
69
0
        1, // BLOCK_32X8
70
0
        1, // BLOCK_16X64
71
0
        1, // BLOCK_64X16
72
0
    };
73
0
74
0
    return lut[bsize];
75
0
}
Unexecuted instantiation: av1me.c:is_rect_tx_allowed_bsize
Unexecuted instantiation: enc_cdef.c:is_rect_tx_allowed_bsize
Unexecuted instantiation: enc_dec_process.c:is_rect_tx_allowed_bsize
Unexecuted instantiation: enc_inter_prediction.c:is_rect_tx_allowed_bsize
Unexecuted instantiation: enc_intra_prediction.c:is_rect_tx_allowed_bsize
Unexecuted instantiation: enc_mode_config.c:is_rect_tx_allowed_bsize
Unexecuted instantiation: entropy_coding.c:is_rect_tx_allowed_bsize
Unexecuted instantiation: full_loop.c:is_rect_tx_allowed_bsize
Unexecuted instantiation: md_rate_estimation.c:is_rect_tx_allowed_bsize
Unexecuted instantiation: mode_decision.c:is_rect_tx_allowed_bsize
Unexecuted instantiation: motion_estimation.c:is_rect_tx_allowed_bsize
Unexecuted instantiation: product_coding_loop.c:is_rect_tx_allowed_bsize
Unexecuted instantiation: rc_process.c:is_rect_tx_allowed_bsize
Unexecuted instantiation: rd_cost.c:is_rect_tx_allowed_bsize
Unexecuted instantiation: resource_coordination_process.c:is_rect_tx_allowed_bsize
Unexecuted instantiation: src_ops_process.c:is_rect_tx_allowed_bsize
Unexecuted instantiation: transforms.c:is_rect_tx_allowed_bsize
Unexecuted instantiation: encode_txb_ref_c.c:is_rect_tx_allowed_bsize
Unexecuted instantiation: coding_loop.c:is_rect_tx_allowed_bsize
76
77
static INLINE int is_rect_tx_allowed(/*const MacroBlockD *xd,*/
78
0
                                     const MbModeInfo* mbmi) {
79
0
    return is_rect_tx_allowed_bsize(mbmi->bsize) /*&&
80
0
            !xd->lossless[mbmi->segment_id]*/
81
0
        ;
82
0
}
Unexecuted instantiation: av1me.c:is_rect_tx_allowed
Unexecuted instantiation: enc_cdef.c:is_rect_tx_allowed
Unexecuted instantiation: enc_dec_process.c:is_rect_tx_allowed
Unexecuted instantiation: enc_inter_prediction.c:is_rect_tx_allowed
Unexecuted instantiation: enc_intra_prediction.c:is_rect_tx_allowed
Unexecuted instantiation: enc_mode_config.c:is_rect_tx_allowed
Unexecuted instantiation: entropy_coding.c:is_rect_tx_allowed
Unexecuted instantiation: full_loop.c:is_rect_tx_allowed
Unexecuted instantiation: md_rate_estimation.c:is_rect_tx_allowed
Unexecuted instantiation: mode_decision.c:is_rect_tx_allowed
Unexecuted instantiation: motion_estimation.c:is_rect_tx_allowed
Unexecuted instantiation: product_coding_loop.c:is_rect_tx_allowed
Unexecuted instantiation: rc_process.c:is_rect_tx_allowed
Unexecuted instantiation: rd_cost.c:is_rect_tx_allowed
Unexecuted instantiation: resource_coordination_process.c:is_rect_tx_allowed
Unexecuted instantiation: src_ops_process.c:is_rect_tx_allowed
Unexecuted instantiation: transforms.c:is_rect_tx_allowed
Unexecuted instantiation: encode_txb_ref_c.c:is_rect_tx_allowed
Unexecuted instantiation: coding_loop.c:is_rect_tx_allowed
83
84
////////////////////// QUANTIZATION//////////////
85
typedef struct QuantParam {
86
    int32_t      log_scale;
87
    TxSize       tx_size;
88
    const QmVal* qmatrix;
89
    const QmVal* iqmatrix;
90
} QuantParam;
91
92
static const uint32_t q_func[] = {26214, 23302, 20560, 18396, 16384, 14564};
93
EbErrorType svt_aom_estimate_transform(PictureControlSet* pcs, ModeDecisionContext* ctx, int16_t* residual_buffer,
94
                                       uint32_t residual_stride, int32_t* coeff_buffer, uint32_t coeff_stride,
95
                                       TxSize transform_size, uint64_t* three_quad_energy, uint32_t bit_depth,
96
                                       TxType transform_type, PlaneType component_type, TxCoeffShape trans_coeff_shape);
97
98
uint8_t svt_aom_quantize_inv_quantize(PictureControlSet* pcs, ModeDecisionContext* ctx, int32_t* coeff,
99
                                      int32_t* quant_coeff, int32_t* recon_coeff, uint32_t qindex,
100
                                      int32_t segmentation_qp_offset, TxSize txsize, uint16_t* eob,
101
                                      uint32_t component_type, uint32_t bit_depth, TxType tx_type,
102
                                      int16_t txb_skip_context, int16_t dc_sign_context, PredictionMode pred_mode,
103
                                      uint32_t lambda, bool is_encode_pass);
104
105
void svt_aom_quantize_inv_quantize_light(PictureControlSet* pcs, int32_t* coeff, int32_t* quant_coeff,
106
                                         int32_t* recon_coeff, uint32_t qindex, TxSize txsize, uint16_t* eob,
107
                                         uint32_t bit_depth, TxType tx_type);
108
void svt_av1_wht_fwd_txfm(int16_t* src_diff, int bw, int32_t* coeff, TxSize tx_size, TxCoeffShape pf_shape,
109
                          int bit_depth, int is_hbd);
110
111
TxfmFunc svt_aom_fwd_txfm_type_to_func(TxfmType txfmtype);
112
113
void av1_fwht4x4_c(int16_t* input, int32_t* output, uint32_t stride);
114
#ifdef __cplusplus
115
}
116
#endif
117
118
#endif // EbTransforms_h