Coverage Report

Created: 2024-09-06 07:53

/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
135M
#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
546M
static INLINE const uint16_t *vp9_get_high_cost_table(int bit_depth) {
85
546M
  return bit_depth == 8 ? vp9_cat6_high_cost
86
546M
                        : (bit_depth == 10 ? vp9_cat6_high10_high_cost
87
0
                                           : vp9_cat6_high12_high_cost);
88
546M
}
Unexecuted instantiation: vp9_cx_iface.c:vp9_get_high_cost_table
Unexecuted instantiation: vp9_firstpass.c:vp9_get_high_cost_table
Unexecuted instantiation: vp9_mcomp.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: 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
15.3M
static INLINE const uint16_t *vp9_get_high_cost_table(int bit_depth) {
85
15.3M
  return bit_depth == 8 ? vp9_cat6_high_cost
86
15.3M
                        : (bit_depth == 10 ? vp9_cat6_high10_high_cost
87
0
                                           : vp9_cat6_high12_high_cost);
88
15.3M
}
Unexecuted instantiation: vp9_encodemv.c:vp9_get_high_cost_table
Unexecuted instantiation: vp9_ethread.c:vp9_get_high_cost_table
Unexecuted instantiation: vp9_frame_scale.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
vp9_rdopt.c:vp9_get_high_cost_table
Line
Count
Source
84
530M
static INLINE const uint16_t *vp9_get_high_cost_table(int bit_depth) {
85
530M
  return bit_depth == 8 ? vp9_cat6_high_cost
86
530M
                        : (bit_depth == 10 ? vp9_cat6_high10_high_cost
87
0
                                           : vp9_cat6_high12_high_cost);
88
530M
}
Unexecuted instantiation: vp9_pickmode.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
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
99.2M
static INLINE void vp9_get_token_extra(int v, int16_t *token, EXTRABIT *extra) {
97
99.2M
  if (v >= CAT6_MIN_VAL || v <= -CAT6_MIN_VAL) {
98
7.50M
    *token = CATEGORY6_TOKEN;
99
7.50M
    if (v >= CAT6_MIN_VAL)
100
3.74M
      *extra = 2 * v - 2 * CAT6_MIN_VAL;
101
3.76M
    else
102
3.76M
      *extra = -2 * v - 2 * CAT6_MIN_VAL + 1;
103
7.50M
    return;
104
7.50M
  }
105
91.6M
  *token = vp9_dct_cat_lt_10_value_tokens[v].token;
106
91.6M
  *extra = vp9_dct_cat_lt_10_value_tokens[v].extra;
107
91.6M
}
Unexecuted instantiation: vp9_cx_iface.c:vp9_get_token_extra
Unexecuted instantiation: vp9_firstpass.c:vp9_get_token_extra
Unexecuted instantiation: vp9_mcomp.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
99.2M
static INLINE void vp9_get_token_extra(int v, int16_t *token, EXTRABIT *extra) {
97
99.2M
  if (v >= CAT6_MIN_VAL || v <= -CAT6_MIN_VAL) {
98
7.50M
    *token = CATEGORY6_TOKEN;
99
7.50M
    if (v >= CAT6_MIN_VAL)
100
3.74M
      *extra = 2 * v - 2 * CAT6_MIN_VAL;
101
3.76M
    else
102
3.76M
      *extra = -2 * v - 2 * CAT6_MIN_VAL + 1;
103
7.50M
    return;
104
7.50M
  }
105
91.6M
  *token = vp9_dct_cat_lt_10_value_tokens[v].token;
106
91.6M
  *extra = vp9_dct_cat_lt_10_value_tokens[v].extra;
107
91.6M
}
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: 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_frame_scale.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_rdopt.c:vp9_get_token_extra
Unexecuted instantiation: vp9_pickmode.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
108
585M
static INLINE int16_t vp9_get_token(int v) {
109
585M
  if (v >= CAT6_MIN_VAL || v <= -CAT6_MIN_VAL) return 10;
110
575M
  return vp9_dct_cat_lt_10_value_tokens[v].token;
111
585M
}
Unexecuted instantiation: vp9_cx_iface.c:vp9_get_token
Unexecuted instantiation: vp9_firstpass.c:vp9_get_token
Unexecuted instantiation: vp9_mcomp.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: 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
585M
static INLINE int16_t vp9_get_token(int v) {
109
585M
  if (v >= CAT6_MIN_VAL || v <= -CAT6_MIN_VAL) return 10;
110
575M
  return vp9_dct_cat_lt_10_value_tokens[v].token;
111
585M
}
Unexecuted instantiation: vp9_encodemv.c:vp9_get_token
Unexecuted instantiation: vp9_ethread.c:vp9_get_token
Unexecuted instantiation: vp9_frame_scale.c:vp9_get_token
Unexecuted instantiation: vp9_lookahead.c:vp9_get_token
Unexecuted instantiation: vp9_multi_thread.c:vp9_get_token
Unexecuted instantiation: vp9_rdopt.c:vp9_get_token
Unexecuted instantiation: vp9_pickmode.c:vp9_get_token
Unexecuted instantiation: temporal_filter_sse4.c:vp9_get_token
Unexecuted instantiation: highbd_temporal_filter_sse4.c:vp9_get_token
112
113
static INLINE int vp9_get_token_cost(int v, int16_t *token,
114
13.6G
                                     const uint16_t *cat6_high_table) {
115
13.6G
  if (v >= CAT6_MIN_VAL || v <= -CAT6_MIN_VAL) {
116
524M
    EXTRABIT extrabits;
117
524M
    *token = CATEGORY6_TOKEN;
118
524M
    extrabits = abs(v) - CAT6_MIN_VAL;
119
524M
    return vp9_cat6_low_cost[extrabits & 0xff] +
120
524M
           cat6_high_table[extrabits >> 8];
121
524M
  }
122
13.0G
  *token = vp9_dct_cat_lt_10_value_tokens[v].token;
123
13.0G
  return vp9_dct_cat_lt_10_value_cost[v];
124
13.6G
}
Unexecuted instantiation: vp9_cx_iface.c:vp9_get_token_cost
Unexecuted instantiation: vp9_firstpass.c:vp9_get_token_cost
Unexecuted instantiation: vp9_mcomp.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: 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
362M
                                     const uint16_t *cat6_high_table) {
115
362M
  if (v >= CAT6_MIN_VAL || v <= -CAT6_MIN_VAL) {
116
11.3M
    EXTRABIT extrabits;
117
11.3M
    *token = CATEGORY6_TOKEN;
118
11.3M
    extrabits = abs(v) - CAT6_MIN_VAL;
119
11.3M
    return vp9_cat6_low_cost[extrabits & 0xff] +
120
11.3M
           cat6_high_table[extrabits >> 8];
121
11.3M
  }
122
351M
  *token = vp9_dct_cat_lt_10_value_tokens[v].token;
123
351M
  return vp9_dct_cat_lt_10_value_cost[v];
124
362M
}
Unexecuted instantiation: vp9_encodemv.c:vp9_get_token_cost
Unexecuted instantiation: vp9_ethread.c:vp9_get_token_cost
Unexecuted instantiation: vp9_frame_scale.c:vp9_get_token_cost
Unexecuted instantiation: vp9_lookahead.c:vp9_get_token_cost
Unexecuted instantiation: vp9_multi_thread.c:vp9_get_token_cost
vp9_rdopt.c:vp9_get_token_cost
Line
Count
Source
114
13.2G
                                     const uint16_t *cat6_high_table) {
115
13.2G
  if (v >= CAT6_MIN_VAL || v <= -CAT6_MIN_VAL) {
116
512M
    EXTRABIT extrabits;
117
512M
    *token = CATEGORY6_TOKEN;
118
512M
    extrabits = abs(v) - CAT6_MIN_VAL;
119
512M
    return vp9_cat6_low_cost[extrabits & 0xff] +
120
512M
           cat6_high_table[extrabits >> 8];
121
512M
  }
122
12.7G
  *token = vp9_dct_cat_lt_10_value_tokens[v].token;
123
12.7G
  return vp9_dct_cat_lt_10_value_cost[v];
124
13.2G
}
Unexecuted instantiation: vp9_pickmode.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
125
126
#ifdef __cplusplus
127
}  // extern "C"
128
#endif
129
130
#endif  // VPX_VP9_ENCODER_VP9_TOKENIZE_H_