Coverage Report

Created: 2025-11-16 07:20

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/libvpx/vp9/encoder/vp9_tokenize.h
Line
Count
Source
1
/*
2
 *  Copyright (c) 2010 The WebM project authors. All Rights Reserved.
3
 *
4
 *  Use of this source code is governed by a BSD-style license
5
 *  that can be found in the LICENSE file in the root of the source
6
 *  tree. An additional intellectual property rights grant can be found
7
 *  in the file PATENTS.  All contributing project authors may
8
 *  be found in the AUTHORS file in the root of the source tree.
9
 */
10
11
#ifndef VPX_VP9_ENCODER_VP9_TOKENIZE_H_
12
#define VPX_VP9_ENCODER_VP9_TOKENIZE_H_
13
14
#include "vp9/common/vp9_entropy.h"
15
16
#include "vp9/encoder/vp9_block.h"
17
#include "vp9/encoder/vp9_treewriter.h"
18
19
#ifdef __cplusplus
20
extern "C" {
21
#endif
22
23
139M
#define EOSB_TOKEN 127  // Not signalled, encoder only
24
25
#if CONFIG_VP9_HIGHBITDEPTH
26
typedef int32_t EXTRABIT;
27
#else
28
typedef int16_t EXTRABIT;
29
#endif
30
31
typedef struct {
32
  int16_t token;
33
  EXTRABIT extra;
34
} TOKENVALUE;
35
36
typedef struct {
37
  const vpx_prob *context_tree;
38
  int16_t token;
39
  EXTRABIT extra;
40
} TOKENEXTRA;
41
42
extern const vpx_tree_index vp9_coef_tree[];
43
extern const vpx_tree_index vp9_coef_con_tree[];
44
extern const struct vp9_token vp9_coef_encodings[];
45
46
int vp9_is_skippable_in_plane(MACROBLOCK *x, BLOCK_SIZE bsize, int plane);
47
int vp9_has_high_freq_in_plane(MACROBLOCK *x, BLOCK_SIZE bsize, int plane);
48
49
struct VP9_COMP;
50
struct ThreadData;
51
52
void vp9_tokenize_sb(struct VP9_COMP *cpi, struct ThreadData *td,
53
                     TOKENEXTRA **t, int dry_run, int seg_skip,
54
                     BLOCK_SIZE bsize);
55
56
typedef struct {
57
  const vpx_prob *prob;
58
  int len;
59
  int base_val;
60
  const int16_t *cost;
61
} vp9_extra_bit;
62
63
// indexed by token value
64
extern const vp9_extra_bit vp9_extra_bits[ENTROPY_TOKENS];
65
#if CONFIG_VP9_HIGHBITDEPTH
66
extern const vp9_extra_bit vp9_extra_bits_high10[ENTROPY_TOKENS];
67
extern const vp9_extra_bit vp9_extra_bits_high12[ENTROPY_TOKENS];
68
#endif  // CONFIG_VP9_HIGHBITDEPTH
69
70
extern const int16_t *vp9_dct_value_cost_ptr;
71
/* TODO: The Token field should be broken out into a separate char array to
72
 *  improve cache locality, since it's needed for costing when the rest of the
73
 *  fields are not.
74
 */
75
extern const TOKENVALUE *vp9_dct_value_tokens_ptr;
76
extern const TOKENVALUE *vp9_dct_cat_lt_10_value_tokens;
77
extern const int *vp9_dct_cat_lt_10_value_cost;
78
extern const int16_t vp9_cat6_low_cost[256];
79
extern const uint16_t vp9_cat6_high_cost[64];
80
extern const uint16_t vp9_cat6_high10_high_cost[256];
81
extern const uint16_t vp9_cat6_high12_high_cost[1024];
82
83
#if CONFIG_VP9_HIGHBITDEPTH
84
634M
static INLINE const uint16_t *vp9_get_high_cost_table(int bit_depth) {
85
634M
  return bit_depth == 8 ? vp9_cat6_high_cost
86
634M
                        : (bit_depth == 10 ? vp9_cat6_high10_high_cost
87
0
                                           : vp9_cat6_high12_high_cost);
88
634M
}
Unexecuted instantiation: vp9_frame_scale.c:vp9_get_high_cost_table
Unexecuted instantiation: vp9_encoder.c:vp9_get_high_cost_table
Unexecuted instantiation: vp9_picklpf.c:vp9_get_high_cost_table
Unexecuted instantiation: vp9_quantize.c:vp9_get_high_cost_table
Unexecuted instantiation: vp9_ratectrl.c:vp9_get_high_cost_table
Unexecuted instantiation: vp9_rd.c:vp9_get_high_cost_table
Unexecuted instantiation: vp9_segmentation.c:vp9_get_high_cost_table
Unexecuted instantiation: vp9_speed_features.c:vp9_get_high_cost_table
Unexecuted instantiation: vp9_svc_layercontext.c:vp9_get_high_cost_table
Unexecuted instantiation: vp9_tokenize.c:vp9_get_high_cost_table
Unexecuted instantiation: vp9_aq_variance.c:vp9_get_high_cost_table
Unexecuted instantiation: vp9_aq_360.c:vp9_get_high_cost_table
Unexecuted instantiation: vp9_aq_cyclicrefresh.c:vp9_get_high_cost_table
Unexecuted instantiation: vp9_aq_complexity.c:vp9_get_high_cost_table
Unexecuted instantiation: vp9_alt_ref_aq.c:vp9_get_high_cost_table
Unexecuted instantiation: vp9_skin_detection.c:vp9_get_high_cost_table
Unexecuted instantiation: vp9_noise_estimate.c:vp9_get_high_cost_table
Unexecuted instantiation: vp9_ext_ratectrl.c:vp9_get_high_cost_table
Unexecuted instantiation: vp9_temporal_filter.c:vp9_get_high_cost_table
Unexecuted instantiation: vp9_tpl_model.c:vp9_get_high_cost_table
Unexecuted instantiation: vp9_mbgraph.c:vp9_get_high_cost_table
Unexecuted instantiation: temporal_filter_sse4.c:vp9_get_high_cost_table
Unexecuted instantiation: highbd_temporal_filter_sse4.c:vp9_get_high_cost_table
Unexecuted instantiation: vp9_cx_iface.c:vp9_get_high_cost_table
Unexecuted instantiation: vp9_bitstream.c:vp9_get_high_cost_table
Unexecuted instantiation: vp9_context_tree.c:vp9_get_high_cost_table
Unexecuted instantiation: vp9_encodeframe.c:vp9_get_high_cost_table
vp9_encodemb.c:vp9_get_high_cost_table
Line
Count
Source
84
22.9M
static INLINE const uint16_t *vp9_get_high_cost_table(int bit_depth) {
85
22.9M
  return bit_depth == 8 ? vp9_cat6_high_cost
86
22.9M
                        : (bit_depth == 10 ? vp9_cat6_high10_high_cost
87
0
                                           : vp9_cat6_high12_high_cost);
88
22.9M
}
Unexecuted instantiation: vp9_encodemv.c:vp9_get_high_cost_table
Unexecuted instantiation: vp9_ethread.c:vp9_get_high_cost_table
Unexecuted instantiation: vp9_firstpass.c:vp9_get_high_cost_table
Unexecuted instantiation: vp9_lookahead.c:vp9_get_high_cost_table
Unexecuted instantiation: vp9_multi_thread.c:vp9_get_high_cost_table
Unexecuted instantiation: vp9_mcomp.c:vp9_get_high_cost_table
vp9_rdopt.c:vp9_get_high_cost_table
Line
Count
Source
84
611M
static INLINE const uint16_t *vp9_get_high_cost_table(int bit_depth) {
85
611M
  return bit_depth == 8 ? vp9_cat6_high_cost
86
611M
                        : (bit_depth == 10 ? vp9_cat6_high10_high_cost
87
0
                                           : vp9_cat6_high12_high_cost);
88
611M
}
Unexecuted instantiation: vp9_pickmode.c:vp9_get_high_cost_table
89
#else
90
static INLINE const uint16_t *vp9_get_high_cost_table(int bit_depth) {
91
  (void)bit_depth;
92
  return vp9_cat6_high_cost;
93
}
94
#endif  // CONFIG_VP9_HIGHBITDEPTH
95
96
98.1M
static INLINE void vp9_get_token_extra(int v, int16_t *token, EXTRABIT *extra) {
97
98.1M
  if (v >= CAT6_MIN_VAL || v <= -CAT6_MIN_VAL) {
98
4.97M
    *token = CATEGORY6_TOKEN;
99
4.97M
    if (v >= CAT6_MIN_VAL)
100
2.47M
      *extra = 2 * v - 2 * CAT6_MIN_VAL;
101
2.50M
    else
102
2.50M
      *extra = -2 * v - 2 * CAT6_MIN_VAL + 1;
103
4.97M
    return;
104
4.97M
  }
105
93.1M
  *token = vp9_dct_cat_lt_10_value_tokens[v].token;
106
93.1M
  *extra = vp9_dct_cat_lt_10_value_tokens[v].extra;
107
93.1M
}
Unexecuted instantiation: vp9_frame_scale.c:vp9_get_token_extra
Unexecuted instantiation: vp9_encoder.c:vp9_get_token_extra
Unexecuted instantiation: vp9_picklpf.c:vp9_get_token_extra
Unexecuted instantiation: vp9_quantize.c:vp9_get_token_extra
Unexecuted instantiation: vp9_ratectrl.c:vp9_get_token_extra
Unexecuted instantiation: vp9_rd.c:vp9_get_token_extra
Unexecuted instantiation: vp9_segmentation.c:vp9_get_token_extra
Unexecuted instantiation: vp9_speed_features.c:vp9_get_token_extra
Unexecuted instantiation: vp9_svc_layercontext.c:vp9_get_token_extra
vp9_tokenize.c:vp9_get_token_extra
Line
Count
Source
96
98.1M
static INLINE void vp9_get_token_extra(int v, int16_t *token, EXTRABIT *extra) {
97
98.1M
  if (v >= CAT6_MIN_VAL || v <= -CAT6_MIN_VAL) {
98
4.97M
    *token = CATEGORY6_TOKEN;
99
4.97M
    if (v >= CAT6_MIN_VAL)
100
2.47M
      *extra = 2 * v - 2 * CAT6_MIN_VAL;
101
2.50M
    else
102
2.50M
      *extra = -2 * v - 2 * CAT6_MIN_VAL + 1;
103
4.97M
    return;
104
4.97M
  }
105
93.1M
  *token = vp9_dct_cat_lt_10_value_tokens[v].token;
106
93.1M
  *extra = vp9_dct_cat_lt_10_value_tokens[v].extra;
107
93.1M
}
Unexecuted instantiation: vp9_aq_variance.c:vp9_get_token_extra
Unexecuted instantiation: vp9_aq_360.c:vp9_get_token_extra
Unexecuted instantiation: vp9_aq_cyclicrefresh.c:vp9_get_token_extra
Unexecuted instantiation: vp9_aq_complexity.c:vp9_get_token_extra
Unexecuted instantiation: vp9_alt_ref_aq.c:vp9_get_token_extra
Unexecuted instantiation: vp9_skin_detection.c:vp9_get_token_extra
Unexecuted instantiation: vp9_noise_estimate.c:vp9_get_token_extra
Unexecuted instantiation: vp9_ext_ratectrl.c:vp9_get_token_extra
Unexecuted instantiation: vp9_temporal_filter.c:vp9_get_token_extra
Unexecuted instantiation: vp9_tpl_model.c:vp9_get_token_extra
Unexecuted instantiation: vp9_mbgraph.c:vp9_get_token_extra
Unexecuted instantiation: temporal_filter_sse4.c:vp9_get_token_extra
Unexecuted instantiation: highbd_temporal_filter_sse4.c:vp9_get_token_extra
Unexecuted instantiation: vp9_cx_iface.c:vp9_get_token_extra
Unexecuted instantiation: vp9_bitstream.c:vp9_get_token_extra
Unexecuted instantiation: vp9_context_tree.c:vp9_get_token_extra
Unexecuted instantiation: vp9_encodeframe.c:vp9_get_token_extra
Unexecuted instantiation: vp9_encodemb.c:vp9_get_token_extra
Unexecuted instantiation: vp9_encodemv.c:vp9_get_token_extra
Unexecuted instantiation: vp9_ethread.c:vp9_get_token_extra
Unexecuted instantiation: vp9_firstpass.c:vp9_get_token_extra
Unexecuted instantiation: vp9_lookahead.c:vp9_get_token_extra
Unexecuted instantiation: vp9_multi_thread.c:vp9_get_token_extra
Unexecuted instantiation: vp9_mcomp.c:vp9_get_token_extra
Unexecuted instantiation: vp9_rdopt.c:vp9_get_token_extra
Unexecuted instantiation: vp9_pickmode.c:vp9_get_token_extra
108
844M
static INLINE int16_t vp9_get_token(int v) {
109
844M
  if (v >= CAT6_MIN_VAL || v <= -CAT6_MIN_VAL) return 10;
110
832M
  return vp9_dct_cat_lt_10_value_tokens[v].token;
111
844M
}
Unexecuted instantiation: vp9_frame_scale.c:vp9_get_token
Unexecuted instantiation: vp9_encoder.c:vp9_get_token
Unexecuted instantiation: vp9_picklpf.c:vp9_get_token
Unexecuted instantiation: vp9_quantize.c:vp9_get_token
Unexecuted instantiation: vp9_ratectrl.c:vp9_get_token
Unexecuted instantiation: vp9_rd.c:vp9_get_token
Unexecuted instantiation: vp9_segmentation.c:vp9_get_token
Unexecuted instantiation: vp9_speed_features.c:vp9_get_token
Unexecuted instantiation: vp9_svc_layercontext.c:vp9_get_token
Unexecuted instantiation: vp9_tokenize.c:vp9_get_token
Unexecuted instantiation: vp9_aq_variance.c:vp9_get_token
Unexecuted instantiation: vp9_aq_360.c:vp9_get_token
Unexecuted instantiation: vp9_aq_cyclicrefresh.c:vp9_get_token
Unexecuted instantiation: vp9_aq_complexity.c:vp9_get_token
Unexecuted instantiation: vp9_alt_ref_aq.c:vp9_get_token
Unexecuted instantiation: vp9_skin_detection.c:vp9_get_token
Unexecuted instantiation: vp9_noise_estimate.c:vp9_get_token
Unexecuted instantiation: vp9_ext_ratectrl.c:vp9_get_token
Unexecuted instantiation: vp9_temporal_filter.c:vp9_get_token
Unexecuted instantiation: vp9_tpl_model.c:vp9_get_token
Unexecuted instantiation: vp9_mbgraph.c:vp9_get_token
Unexecuted instantiation: temporal_filter_sse4.c:vp9_get_token
Unexecuted instantiation: highbd_temporal_filter_sse4.c:vp9_get_token
Unexecuted instantiation: vp9_cx_iface.c:vp9_get_token
Unexecuted instantiation: vp9_bitstream.c:vp9_get_token
Unexecuted instantiation: vp9_context_tree.c:vp9_get_token
Unexecuted instantiation: vp9_encodeframe.c:vp9_get_token
vp9_encodemb.c:vp9_get_token
Line
Count
Source
108
844M
static INLINE int16_t vp9_get_token(int v) {
109
844M
  if (v >= CAT6_MIN_VAL || v <= -CAT6_MIN_VAL) return 10;
110
832M
  return vp9_dct_cat_lt_10_value_tokens[v].token;
111
844M
}
Unexecuted instantiation: vp9_encodemv.c:vp9_get_token
Unexecuted instantiation: vp9_ethread.c:vp9_get_token
Unexecuted instantiation: vp9_firstpass.c:vp9_get_token
Unexecuted instantiation: vp9_lookahead.c:vp9_get_token
Unexecuted instantiation: vp9_multi_thread.c:vp9_get_token
Unexecuted instantiation: vp9_mcomp.c:vp9_get_token
Unexecuted instantiation: vp9_rdopt.c:vp9_get_token
Unexecuted instantiation: vp9_pickmode.c:vp9_get_token
112
113
static INLINE int vp9_get_token_cost(int v, int16_t *token,
114
15.7G
                                     const uint16_t *cat6_high_table) {
115
15.7G
  if (v >= CAT6_MIN_VAL || v <= -CAT6_MIN_VAL) {
116
469M
    EXTRABIT extrabits;
117
469M
    *token = CATEGORY6_TOKEN;
118
469M
    extrabits = abs(v) - CAT6_MIN_VAL;
119
469M
    return vp9_cat6_low_cost[extrabits & 0xff] +
120
469M
           cat6_high_table[extrabits >> 8];
121
469M
  }
122
15.2G
  *token = vp9_dct_cat_lt_10_value_tokens[v].token;
123
15.2G
  return vp9_dct_cat_lt_10_value_cost[v];
124
15.7G
}
Unexecuted instantiation: vp9_frame_scale.c:vp9_get_token_cost
Unexecuted instantiation: vp9_encoder.c:vp9_get_token_cost
Unexecuted instantiation: vp9_picklpf.c:vp9_get_token_cost
Unexecuted instantiation: vp9_quantize.c:vp9_get_token_cost
Unexecuted instantiation: vp9_ratectrl.c:vp9_get_token_cost
Unexecuted instantiation: vp9_rd.c:vp9_get_token_cost
Unexecuted instantiation: vp9_segmentation.c:vp9_get_token_cost
Unexecuted instantiation: vp9_speed_features.c:vp9_get_token_cost
Unexecuted instantiation: vp9_svc_layercontext.c:vp9_get_token_cost
Unexecuted instantiation: vp9_tokenize.c:vp9_get_token_cost
Unexecuted instantiation: vp9_aq_variance.c:vp9_get_token_cost
Unexecuted instantiation: vp9_aq_360.c:vp9_get_token_cost
Unexecuted instantiation: vp9_aq_cyclicrefresh.c:vp9_get_token_cost
Unexecuted instantiation: vp9_aq_complexity.c:vp9_get_token_cost
Unexecuted instantiation: vp9_alt_ref_aq.c:vp9_get_token_cost
Unexecuted instantiation: vp9_skin_detection.c:vp9_get_token_cost
Unexecuted instantiation: vp9_noise_estimate.c:vp9_get_token_cost
Unexecuted instantiation: vp9_ext_ratectrl.c:vp9_get_token_cost
Unexecuted instantiation: vp9_temporal_filter.c:vp9_get_token_cost
Unexecuted instantiation: vp9_tpl_model.c:vp9_get_token_cost
Unexecuted instantiation: vp9_mbgraph.c:vp9_get_token_cost
Unexecuted instantiation: temporal_filter_sse4.c:vp9_get_token_cost
Unexecuted instantiation: highbd_temporal_filter_sse4.c:vp9_get_token_cost
Unexecuted instantiation: vp9_cx_iface.c:vp9_get_token_cost
Unexecuted instantiation: vp9_bitstream.c:vp9_get_token_cost
Unexecuted instantiation: vp9_context_tree.c:vp9_get_token_cost
Unexecuted instantiation: vp9_encodeframe.c:vp9_get_token_cost
vp9_encodemb.c:vp9_get_token_cost
Line
Count
Source
114
515M
                                     const uint16_t *cat6_high_table) {
115
515M
  if (v >= CAT6_MIN_VAL || v <= -CAT6_MIN_VAL) {
116
15.2M
    EXTRABIT extrabits;
117
15.2M
    *token = CATEGORY6_TOKEN;
118
15.2M
    extrabits = abs(v) - CAT6_MIN_VAL;
119
15.2M
    return vp9_cat6_low_cost[extrabits & 0xff] +
120
15.2M
           cat6_high_table[extrabits >> 8];
121
15.2M
  }
122
500M
  *token = vp9_dct_cat_lt_10_value_tokens[v].token;
123
500M
  return vp9_dct_cat_lt_10_value_cost[v];
124
515M
}
Unexecuted instantiation: vp9_encodemv.c:vp9_get_token_cost
Unexecuted instantiation: vp9_ethread.c:vp9_get_token_cost
Unexecuted instantiation: vp9_firstpass.c:vp9_get_token_cost
Unexecuted instantiation: vp9_lookahead.c:vp9_get_token_cost
Unexecuted instantiation: vp9_multi_thread.c:vp9_get_token_cost
Unexecuted instantiation: vp9_mcomp.c:vp9_get_token_cost
vp9_rdopt.c:vp9_get_token_cost
Line
Count
Source
114
15.1G
                                     const uint16_t *cat6_high_table) {
115
15.1G
  if (v >= CAT6_MIN_VAL || v <= -CAT6_MIN_VAL) {
116
454M
    EXTRABIT extrabits;
117
454M
    *token = CATEGORY6_TOKEN;
118
454M
    extrabits = abs(v) - CAT6_MIN_VAL;
119
454M
    return vp9_cat6_low_cost[extrabits & 0xff] +
120
454M
           cat6_high_table[extrabits >> 8];
121
454M
  }
122
14.7G
  *token = vp9_dct_cat_lt_10_value_tokens[v].token;
123
14.7G
  return vp9_dct_cat_lt_10_value_cost[v];
124
15.1G
}
Unexecuted instantiation: vp9_pickmode.c:vp9_get_token_cost
125
126
#ifdef __cplusplus
127
}  // extern "C"
128
#endif
129
130
#endif  // VPX_VP9_ENCODER_VP9_TOKENIZE_H_