Coverage Report

Created: 2025-08-28 07:12

/src/libvpx/vp9/encoder/vp9_tokenize.h
Line
Count
Source (jump to first uncovered line)
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
136M
#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
622M
static INLINE const uint16_t *vp9_get_high_cost_table(int bit_depth) {
85
622M
  return bit_depth == 8 ? vp9_cat6_high_cost
86
622M
                        : (bit_depth == 10 ? vp9_cat6_high10_high_cost
87
0
                                           : vp9_cat6_high12_high_cost);
88
622M
}
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
20.8M
static INLINE const uint16_t *vp9_get_high_cost_table(int bit_depth) {
85
20.8M
  return bit_depth == 8 ? vp9_cat6_high_cost
86
20.8M
                        : (bit_depth == 10 ? vp9_cat6_high10_high_cost
87
0
                                           : vp9_cat6_high12_high_cost);
88
20.8M
}
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
601M
static INLINE const uint16_t *vp9_get_high_cost_table(int bit_depth) {
85
601M
  return bit_depth == 8 ? vp9_cat6_high_cost
86
601M
                        : (bit_depth == 10 ? vp9_cat6_high10_high_cost
87
0
                                           : vp9_cat6_high12_high_cost);
88
601M
}
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
95.8M
static INLINE void vp9_get_token_extra(int v, int16_t *token, EXTRABIT *extra) {
97
95.8M
  if (v >= CAT6_MIN_VAL || v <= -CAT6_MIN_VAL) {
98
4.83M
    *token = CATEGORY6_TOKEN;
99
4.83M
    if (v >= CAT6_MIN_VAL)
100
2.39M
      *extra = 2 * v - 2 * CAT6_MIN_VAL;
101
2.43M
    else
102
2.43M
      *extra = -2 * v - 2 * CAT6_MIN_VAL + 1;
103
4.83M
    return;
104
4.83M
  }
105
90.9M
  *token = vp9_dct_cat_lt_10_value_tokens[v].token;
106
90.9M
  *extra = vp9_dct_cat_lt_10_value_tokens[v].extra;
107
90.9M
}
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
95.8M
static INLINE void vp9_get_token_extra(int v, int16_t *token, EXTRABIT *extra) {
97
95.8M
  if (v >= CAT6_MIN_VAL || v <= -CAT6_MIN_VAL) {
98
4.83M
    *token = CATEGORY6_TOKEN;
99
4.83M
    if (v >= CAT6_MIN_VAL)
100
2.39M
      *extra = 2 * v - 2 * CAT6_MIN_VAL;
101
2.43M
    else
102
2.43M
      *extra = -2 * v - 2 * CAT6_MIN_VAL + 1;
103
4.83M
    return;
104
4.83M
  }
105
90.9M
  *token = vp9_dct_cat_lt_10_value_tokens[v].token;
106
90.9M
  *extra = vp9_dct_cat_lt_10_value_tokens[v].extra;
107
90.9M
}
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
788M
static INLINE int16_t vp9_get_token(int v) {
109
788M
  if (v >= CAT6_MIN_VAL || v <= -CAT6_MIN_VAL) return 10;
110
779M
  return vp9_dct_cat_lt_10_value_tokens[v].token;
111
788M
}
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
788M
static INLINE int16_t vp9_get_token(int v) {
109
788M
  if (v >= CAT6_MIN_VAL || v <= -CAT6_MIN_VAL) return 10;
110
779M
  return vp9_dct_cat_lt_10_value_tokens[v].token;
111
788M
}
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.4G
                                     const uint16_t *cat6_high_table) {
115
15.4G
  if (v >= CAT6_MIN_VAL || v <= -CAT6_MIN_VAL) {
116
461M
    EXTRABIT extrabits;
117
461M
    *token = CATEGORY6_TOKEN;
118
461M
    extrabits = abs(v) - CAT6_MIN_VAL;
119
461M
    return vp9_cat6_low_cost[extrabits & 0xff] +
120
461M
           cat6_high_table[extrabits >> 8];
121
461M
  }
122
14.9G
  *token = vp9_dct_cat_lt_10_value_tokens[v].token;
123
14.9G
  return vp9_dct_cat_lt_10_value_cost[v];
124
15.4G
}
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
479M
                                     const uint16_t *cat6_high_table) {
115
479M
  if (v >= CAT6_MIN_VAL || v <= -CAT6_MIN_VAL) {
116
12.6M
    EXTRABIT extrabits;
117
12.6M
    *token = CATEGORY6_TOKEN;
118
12.6M
    extrabits = abs(v) - CAT6_MIN_VAL;
119
12.6M
    return vp9_cat6_low_cost[extrabits & 0xff] +
120
12.6M
           cat6_high_table[extrabits >> 8];
121
12.6M
  }
122
466M
  *token = vp9_dct_cat_lt_10_value_tokens[v].token;
123
466M
  return vp9_dct_cat_lt_10_value_cost[v];
124
479M
}
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
14.9G
                                     const uint16_t *cat6_high_table) {
115
14.9G
  if (v >= CAT6_MIN_VAL || v <= -CAT6_MIN_VAL) {
116
449M
    EXTRABIT extrabits;
117
449M
    *token = CATEGORY6_TOKEN;
118
449M
    extrabits = abs(v) - CAT6_MIN_VAL;
119
449M
    return vp9_cat6_low_cost[extrabits & 0xff] +
120
449M
           cat6_high_table[extrabits >> 8];
121
449M
  }
122
14.5G
  *token = vp9_dct_cat_lt_10_value_tokens[v].token;
123
14.5G
  return vp9_dct_cat_lt_10_value_cost[v];
124
14.9G
}
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_