Coverage Report

Created: 2025-08-28 06:29

/src/libvpx/vp9/common/vp9_blockd.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_COMMON_VP9_BLOCKD_H_
12
#define VPX_VP9_COMMON_VP9_BLOCKD_H_
13
14
#include "./vpx_config.h"
15
16
#include "vpx_dsp/vpx_dsp_common.h"
17
#include "vpx_ports/mem.h"
18
#include "vpx_scale/yv12config.h"
19
20
#include "vp9/common/vp9_common_data.h"
21
#include "vp9/common/vp9_entropy.h"
22
#include "vp9/common/vp9_entropymode.h"
23
#include "vp9/common/vp9_mv.h"
24
#include "vp9/common/vp9_scale.h"
25
#include "vp9/common/vp9_seg_common.h"
26
#include "vp9/common/vp9_tile_common.h"
27
28
#ifdef __cplusplus
29
extern "C" {
30
#endif
31
32
437M
#define MAX_MB_PLANE 3
33
34
typedef enum {
35
  KEY_FRAME = 0,
36
  INTER_FRAME = 1,
37
  FRAME_TYPES,
38
} FRAME_TYPE;
39
40
0
static INLINE int is_inter_mode(PREDICTION_MODE mode) {
41
0
  return mode >= NEARESTMV && mode <= NEWMV;
42
0
}
Unexecuted instantiation: vp9_dx_iface.c:is_inter_mode
Unexecuted instantiation: vp9_decodeframe.c:is_inter_mode
Unexecuted instantiation: vp9_detokenize.c:is_inter_mode
Unexecuted instantiation: vp9_decoder.c:is_inter_mode
Unexecuted instantiation: yv12config.c:is_inter_mode
Unexecuted instantiation: vp9_alloccommon.c:is_inter_mode
Unexecuted instantiation: vp9_blockd.c:is_inter_mode
Unexecuted instantiation: vp9_entropy.c:is_inter_mode
Unexecuted instantiation: vp9_entropymode.c:is_inter_mode
Unexecuted instantiation: vp9_entropymv.c:is_inter_mode
Unexecuted instantiation: vp9_idct.c:is_inter_mode
Unexecuted instantiation: vp9_pred_common.c:is_inter_mode
Unexecuted instantiation: vp9_seg_common.c:is_inter_mode
Unexecuted instantiation: vp9_tile_common.c:is_inter_mode
Unexecuted instantiation: vp9_loopfilter.c:is_inter_mode
Unexecuted instantiation: vp9_thread_common.c:is_inter_mode
Unexecuted instantiation: vp9_reconinter.c:is_inter_mode
Unexecuted instantiation: vp9_reconintra.c:is_inter_mode
Unexecuted instantiation: vp9_scan.c:is_inter_mode
Unexecuted instantiation: vp9_decodemv.c:is_inter_mode
43
44
/* For keyframes, intra block modes are predicted by the (already decoded)
45
   modes for the Y blocks to the left and above us; for interframes, there
46
   is a single probability table. */
47
48
typedef struct {
49
  PREDICTION_MODE as_mode;
50
  int_mv as_mv[2];  // first, second inter predictor motion vectors
51
} b_mode_info;
52
53
// Note that the rate-distortion optimization loop, bit-stream writer, and
54
// decoder implementation modules critically rely on the defined entry values
55
// specified herein. They should be refactored concurrently.
56
57
12.8M
#define NO_REF_FRAME (-1)
58
427M
#define INTRA_FRAME 0
59
32.8M
#define LAST_FRAME 1
60
6.51M
#define GOLDEN_FRAME 2
61
1.41M
#define ALTREF_FRAME 3
62
879k
#define MAX_REF_FRAMES 4
63
#define MAX_INTER_REF_FRAMES 3
64
65
typedef int8_t MV_REFERENCE_FRAME;
66
67
static INLINE int mv_ref_frame_to_inter_ref_idx(
68
0
    MV_REFERENCE_FRAME mv_ref_frame) {
69
0
  assert(mv_ref_frame >= LAST_FRAME && mv_ref_frame < MAX_REF_FRAMES);
70
0
  return mv_ref_frame - 1;
71
0
}
Unexecuted instantiation: vp9_dx_iface.c:mv_ref_frame_to_inter_ref_idx
Unexecuted instantiation: vp9_decodeframe.c:mv_ref_frame_to_inter_ref_idx
Unexecuted instantiation: vp9_detokenize.c:mv_ref_frame_to_inter_ref_idx
Unexecuted instantiation: vp9_decoder.c:mv_ref_frame_to_inter_ref_idx
Unexecuted instantiation: yv12config.c:mv_ref_frame_to_inter_ref_idx
Unexecuted instantiation: vp9_alloccommon.c:mv_ref_frame_to_inter_ref_idx
Unexecuted instantiation: vp9_blockd.c:mv_ref_frame_to_inter_ref_idx
Unexecuted instantiation: vp9_entropy.c:mv_ref_frame_to_inter_ref_idx
Unexecuted instantiation: vp9_entropymode.c:mv_ref_frame_to_inter_ref_idx
Unexecuted instantiation: vp9_entropymv.c:mv_ref_frame_to_inter_ref_idx
Unexecuted instantiation: vp9_idct.c:mv_ref_frame_to_inter_ref_idx
Unexecuted instantiation: vp9_pred_common.c:mv_ref_frame_to_inter_ref_idx
Unexecuted instantiation: vp9_seg_common.c:mv_ref_frame_to_inter_ref_idx
Unexecuted instantiation: vp9_tile_common.c:mv_ref_frame_to_inter_ref_idx
Unexecuted instantiation: vp9_loopfilter.c:mv_ref_frame_to_inter_ref_idx
Unexecuted instantiation: vp9_thread_common.c:mv_ref_frame_to_inter_ref_idx
Unexecuted instantiation: vp9_reconinter.c:mv_ref_frame_to_inter_ref_idx
Unexecuted instantiation: vp9_reconintra.c:mv_ref_frame_to_inter_ref_idx
Unexecuted instantiation: vp9_scan.c:mv_ref_frame_to_inter_ref_idx
Unexecuted instantiation: vp9_decodemv.c:mv_ref_frame_to_inter_ref_idx
72
73
// This structure now relates to 8x8 block regions.
74
typedef struct MODE_INFO {
75
  // Common for both INTER and INTRA blocks
76
  BLOCK_SIZE sb_type;
77
  PREDICTION_MODE mode;
78
  TX_SIZE tx_size;
79
  int8_t skip;
80
  int8_t segment_id;
81
  int8_t seg_id_predicted;  // valid only when temporal_update is enabled
82
83
  // Only for INTRA blocks
84
  PREDICTION_MODE uv_mode;
85
86
  // Only for INTER blocks
87
  INTERP_FILTER interp_filter;
88
89
  // if ref_frame[idx] is equal to ALTREF_FRAME then
90
  // MACROBLOCKD::block_ref[idx] is an altref
91
  MV_REFERENCE_FRAME ref_frame[2];
92
93
  // TODO(slavarnway): Delete and use bmi[3].as_mv[] instead.
94
  int_mv mv[2];
95
96
  b_mode_info bmi[4];
97
} MODE_INFO;
98
99
9.33M
static INLINE PREDICTION_MODE get_y_mode(const MODE_INFO *mi, int block) {
100
9.33M
  return mi->sb_type < BLOCK_8X8 ? mi->bmi[block].as_mode : mi->mode;
101
9.33M
}
Unexecuted instantiation: vp9_dx_iface.c:get_y_mode
Unexecuted instantiation: vp9_decodeframe.c:get_y_mode
Unexecuted instantiation: vp9_detokenize.c:get_y_mode
Unexecuted instantiation: vp9_decoder.c:get_y_mode
Unexecuted instantiation: yv12config.c:get_y_mode
Unexecuted instantiation: vp9_alloccommon.c:get_y_mode
vp9_blockd.c:get_y_mode
Line
Count
Source
99
9.33M
static INLINE PREDICTION_MODE get_y_mode(const MODE_INFO *mi, int block) {
100
9.33M
  return mi->sb_type < BLOCK_8X8 ? mi->bmi[block].as_mode : mi->mode;
101
9.33M
}
Unexecuted instantiation: vp9_entropy.c:get_y_mode
Unexecuted instantiation: vp9_entropymode.c:get_y_mode
Unexecuted instantiation: vp9_entropymv.c:get_y_mode
Unexecuted instantiation: vp9_idct.c:get_y_mode
Unexecuted instantiation: vp9_pred_common.c:get_y_mode
Unexecuted instantiation: vp9_seg_common.c:get_y_mode
Unexecuted instantiation: vp9_tile_common.c:get_y_mode
Unexecuted instantiation: vp9_loopfilter.c:get_y_mode
Unexecuted instantiation: vp9_thread_common.c:get_y_mode
Unexecuted instantiation: vp9_reconinter.c:get_y_mode
Unexecuted instantiation: vp9_reconintra.c:get_y_mode
Unexecuted instantiation: vp9_scan.c:get_y_mode
Unexecuted instantiation: vp9_decodemv.c:get_y_mode
102
103
364M
static INLINE int is_inter_block(const MODE_INFO *mi) {
104
364M
  return mi->ref_frame[0] > INTRA_FRAME;
105
364M
}
Unexecuted instantiation: vp9_dx_iface.c:is_inter_block
vp9_decodeframe.c:is_inter_block
Line
Count
Source
103
17.8M
static INLINE int is_inter_block(const MODE_INFO *mi) {
104
17.8M
  return mi->ref_frame[0] > INTRA_FRAME;
105
17.8M
}
vp9_detokenize.c:is_inter_block
Line
Count
Source
103
268M
static INLINE int is_inter_block(const MODE_INFO *mi) {
104
268M
  return mi->ref_frame[0] > INTRA_FRAME;
105
268M
}
Unexecuted instantiation: vp9_decoder.c:is_inter_block
Unexecuted instantiation: yv12config.c:is_inter_block
Unexecuted instantiation: vp9_alloccommon.c:is_inter_block
vp9_blockd.c:is_inter_block
Line
Count
Source
103
9.33M
static INLINE int is_inter_block(const MODE_INFO *mi) {
104
9.33M
  return mi->ref_frame[0] > INTRA_FRAME;
105
9.33M
}
Unexecuted instantiation: vp9_entropy.c:is_inter_block
Unexecuted instantiation: vp9_entropymode.c:is_inter_block
Unexecuted instantiation: vp9_entropymv.c:is_inter_block
Unexecuted instantiation: vp9_idct.c:is_inter_block
vp9_pred_common.c:is_inter_block
Line
Count
Source
103
22.3M
static INLINE int is_inter_block(const MODE_INFO *mi) {
104
22.3M
  return mi->ref_frame[0] > INTRA_FRAME;
105
22.3M
}
Unexecuted instantiation: vp9_seg_common.c:is_inter_block
Unexecuted instantiation: vp9_tile_common.c:is_inter_block
vp9_loopfilter.c:is_inter_block
Line
Count
Source
103
21.1M
static INLINE int is_inter_block(const MODE_INFO *mi) {
104
21.1M
  return mi->ref_frame[0] > INTRA_FRAME;
105
21.1M
}
Unexecuted instantiation: vp9_thread_common.c:is_inter_block
Unexecuted instantiation: vp9_reconinter.c:is_inter_block
Unexecuted instantiation: vp9_reconintra.c:is_inter_block
Unexecuted instantiation: vp9_scan.c:is_inter_block
vp9_decodemv.c:is_inter_block
Line
Count
Source
103
25.6M
static INLINE int is_inter_block(const MODE_INFO *mi) {
104
25.6M
  return mi->ref_frame[0] > INTRA_FRAME;
105
25.6M
}
106
107
52.0M
static INLINE int has_second_ref(const MODE_INFO *mi) {
108
52.0M
  return mi->ref_frame[1] > INTRA_FRAME;
109
52.0M
}
Unexecuted instantiation: vp9_dx_iface.c:has_second_ref
vp9_decodeframe.c:has_second_ref
Line
Count
Source
107
9.65M
static INLINE int has_second_ref(const MODE_INFO *mi) {
108
9.65M
  return mi->ref_frame[1] > INTRA_FRAME;
109
9.65M
}
Unexecuted instantiation: vp9_detokenize.c:has_second_ref
Unexecuted instantiation: vp9_decoder.c:has_second_ref
Unexecuted instantiation: yv12config.c:has_second_ref
Unexecuted instantiation: vp9_alloccommon.c:has_second_ref
Unexecuted instantiation: vp9_blockd.c:has_second_ref
Unexecuted instantiation: vp9_entropy.c:has_second_ref
Unexecuted instantiation: vp9_entropymode.c:has_second_ref
Unexecuted instantiation: vp9_entropymv.c:has_second_ref
Unexecuted instantiation: vp9_idct.c:has_second_ref
vp9_pred_common.c:has_second_ref
Line
Count
Source
107
31.5M
static INLINE int has_second_ref(const MODE_INFO *mi) {
108
31.5M
  return mi->ref_frame[1] > INTRA_FRAME;
109
31.5M
}
Unexecuted instantiation: vp9_seg_common.c:has_second_ref
Unexecuted instantiation: vp9_tile_common.c:has_second_ref
Unexecuted instantiation: vp9_loopfilter.c:has_second_ref
Unexecuted instantiation: vp9_thread_common.c:has_second_ref
Unexecuted instantiation: vp9_reconinter.c:has_second_ref
Unexecuted instantiation: vp9_reconintra.c:has_second_ref
Unexecuted instantiation: vp9_scan.c:has_second_ref
vp9_decodemv.c:has_second_ref
Line
Count
Source
107
10.8M
static INLINE int has_second_ref(const MODE_INFO *mi) {
108
10.8M
  return mi->ref_frame[1] > INTRA_FRAME;
109
10.8M
}
110
111
PREDICTION_MODE vp9_left_block_mode(const MODE_INFO *cur_mi,
112
                                    const MODE_INFO *left_mi, int b);
113
114
PREDICTION_MODE vp9_above_block_mode(const MODE_INFO *cur_mi,
115
                                     const MODE_INFO *above_mi, int b);
116
117
enum mv_precision { MV_PRECISION_Q3, MV_PRECISION_Q4 };
118
119
struct buf_2d {
120
  uint8_t *buf;
121
  int stride;
122
};
123
124
struct macroblockd_plane {
125
  tran_low_t *dqcoeff;
126
  int subsampling_x;
127
  int subsampling_y;
128
  struct buf_2d dst;
129
  struct buf_2d pre[2];
130
  ENTROPY_CONTEXT *above_context;
131
  ENTROPY_CONTEXT *left_context;
132
  int16_t seg_dequant[MAX_SEGMENTS][2];
133
134
  // number of 4x4s in current block
135
  uint16_t n4_w, n4_h;
136
  // log2 of n4_w, n4_h
137
  uint8_t n4_wl, n4_hl;
138
139
  // encoder
140
  const int16_t *dequant;
141
142
  int *eob;
143
};
144
145
#define BLOCK_OFFSET(x, i) ((x) + (i) * 16)
146
147
typedef struct RefBuffer {
148
  // TODO(dkovalev): idx is not really required and should be removed, now it
149
  // is used in vp9_onyxd_if.c
150
  int idx;
151
  YV12_BUFFER_CONFIG *buf;
152
  struct scale_factors sf;
153
} RefBuffer;
154
155
typedef struct macroblockd {
156
  struct macroblockd_plane plane[MAX_MB_PLANE];
157
  uint8_t bmode_blocks_wl;
158
  uint8_t bmode_blocks_hl;
159
160
  FRAME_COUNTS *counts;
161
  TileInfo tile;
162
163
  int mi_stride;
164
165
  // Grid of 8x8 cells is placed over the block.
166
  // If some of them belong to the same mbtree-block
167
  // they will just have same mi[i][j] value
168
  MODE_INFO **mi;
169
  MODE_INFO *left_mi;
170
  MODE_INFO *above_mi;
171
172
  unsigned int max_blocks_wide;
173
  unsigned int max_blocks_high;
174
175
  const vpx_prob (*partition_probs)[PARTITION_TYPES - 1];
176
177
  /* Distance of MB away from frame edges */
178
  int mb_to_left_edge;
179
  int mb_to_right_edge;
180
  int mb_to_top_edge;
181
  int mb_to_bottom_edge;
182
183
  FRAME_CONTEXT *fc;
184
185
  /* pointers to reference frames */
186
  const RefBuffer *block_refs[2];
187
188
  /* pointer to current frame */
189
  const YV12_BUFFER_CONFIG *cur_buf;
190
191
  ENTROPY_CONTEXT *above_context[MAX_MB_PLANE];
192
  ENTROPY_CONTEXT left_context[MAX_MB_PLANE][16];
193
194
  PARTITION_CONTEXT *above_seg_context;
195
  PARTITION_CONTEXT left_seg_context[8];
196
197
#if CONFIG_VP9_HIGHBITDEPTH
198
  /* Bit depth: 8, 10, 12 */
199
  int bd;
200
#endif
201
202
  int lossless;
203
  int corrupted;
204
205
  struct vpx_internal_error_info *error_info;
206
207
  PARTITION_TYPE *partition;
208
} MACROBLOCKD;
209
210
274M
static INLINE PLANE_TYPE get_plane_type(int plane) {
211
274M
  return (PLANE_TYPE)(plane > 0);
212
274M
}
Unexecuted instantiation: vp9_dx_iface.c:get_plane_type
vp9_decodeframe.c:get_plane_type
Line
Count
Source
210
344k
static INLINE PLANE_TYPE get_plane_type(int plane) {
211
344k
  return (PLANE_TYPE)(plane > 0);
212
344k
}
vp9_detokenize.c:get_plane_type
Line
Count
Source
210
274M
static INLINE PLANE_TYPE get_plane_type(int plane) {
211
274M
  return (PLANE_TYPE)(plane > 0);
212
274M
}
Unexecuted instantiation: vp9_decoder.c:get_plane_type
Unexecuted instantiation: yv12config.c:get_plane_type
Unexecuted instantiation: vp9_alloccommon.c:get_plane_type
Unexecuted instantiation: vp9_blockd.c:get_plane_type
Unexecuted instantiation: vp9_entropy.c:get_plane_type
Unexecuted instantiation: vp9_entropymode.c:get_plane_type
Unexecuted instantiation: vp9_entropymv.c:get_plane_type
Unexecuted instantiation: vp9_idct.c:get_plane_type
Unexecuted instantiation: vp9_pred_common.c:get_plane_type
Unexecuted instantiation: vp9_seg_common.c:get_plane_type
Unexecuted instantiation: vp9_tile_common.c:get_plane_type
Unexecuted instantiation: vp9_loopfilter.c:get_plane_type
Unexecuted instantiation: vp9_thread_common.c:get_plane_type
Unexecuted instantiation: vp9_reconinter.c:get_plane_type
Unexecuted instantiation: vp9_reconintra.c:get_plane_type
Unexecuted instantiation: vp9_scan.c:get_plane_type
Unexecuted instantiation: vp9_decodemv.c:get_plane_type
213
214
static INLINE BLOCK_SIZE get_subsize(BLOCK_SIZE bsize,
215
0
                                     PARTITION_TYPE partition) {
216
0
  return subsize_lookup[partition][bsize];
217
0
}
Unexecuted instantiation: vp9_dx_iface.c:get_subsize
Unexecuted instantiation: vp9_decodeframe.c:get_subsize
Unexecuted instantiation: vp9_detokenize.c:get_subsize
Unexecuted instantiation: vp9_decoder.c:get_subsize
Unexecuted instantiation: yv12config.c:get_subsize
Unexecuted instantiation: vp9_alloccommon.c:get_subsize
Unexecuted instantiation: vp9_blockd.c:get_subsize
Unexecuted instantiation: vp9_entropy.c:get_subsize
Unexecuted instantiation: vp9_entropymode.c:get_subsize
Unexecuted instantiation: vp9_entropymv.c:get_subsize
Unexecuted instantiation: vp9_idct.c:get_subsize
Unexecuted instantiation: vp9_pred_common.c:get_subsize
Unexecuted instantiation: vp9_seg_common.c:get_subsize
Unexecuted instantiation: vp9_tile_common.c:get_subsize
Unexecuted instantiation: vp9_loopfilter.c:get_subsize
Unexecuted instantiation: vp9_thread_common.c:get_subsize
Unexecuted instantiation: vp9_reconinter.c:get_subsize
Unexecuted instantiation: vp9_reconintra.c:get_subsize
Unexecuted instantiation: vp9_scan.c:get_subsize
Unexecuted instantiation: vp9_decodemv.c:get_subsize
218
219
extern const TX_TYPE intra_mode_to_tx_type_lookup[INTRA_MODES];
220
221
static INLINE TX_TYPE get_tx_type(PLANE_TYPE plane_type,
222
0
                                  const MACROBLOCKD *xd) {
223
0
  const MODE_INFO *const mi = xd->mi[0];
224
0
225
0
  if (plane_type != PLANE_TYPE_Y || xd->lossless || is_inter_block(mi))
226
0
    return DCT_DCT;
227
0
228
0
  return intra_mode_to_tx_type_lookup[mi->mode];
229
0
}
Unexecuted instantiation: vp9_dx_iface.c:get_tx_type
Unexecuted instantiation: vp9_decodeframe.c:get_tx_type
Unexecuted instantiation: vp9_detokenize.c:get_tx_type
Unexecuted instantiation: vp9_decoder.c:get_tx_type
Unexecuted instantiation: yv12config.c:get_tx_type
Unexecuted instantiation: vp9_alloccommon.c:get_tx_type
Unexecuted instantiation: vp9_blockd.c:get_tx_type
Unexecuted instantiation: vp9_entropy.c:get_tx_type
Unexecuted instantiation: vp9_entropymode.c:get_tx_type
Unexecuted instantiation: vp9_entropymv.c:get_tx_type
Unexecuted instantiation: vp9_idct.c:get_tx_type
Unexecuted instantiation: vp9_pred_common.c:get_tx_type
Unexecuted instantiation: vp9_seg_common.c:get_tx_type
Unexecuted instantiation: vp9_tile_common.c:get_tx_type
Unexecuted instantiation: vp9_loopfilter.c:get_tx_type
Unexecuted instantiation: vp9_thread_common.c:get_tx_type
Unexecuted instantiation: vp9_reconinter.c:get_tx_type
Unexecuted instantiation: vp9_reconintra.c:get_tx_type
Unexecuted instantiation: vp9_scan.c:get_tx_type
Unexecuted instantiation: vp9_decodemv.c:get_tx_type
230
231
static INLINE TX_TYPE get_tx_type_4x4(PLANE_TYPE plane_type,
232
0
                                      const MACROBLOCKD *xd, int ib) {
233
0
  const MODE_INFO *const mi = xd->mi[0];
234
0
235
0
  if (plane_type != PLANE_TYPE_Y || xd->lossless || is_inter_block(mi))
236
0
    return DCT_DCT;
237
0
238
0
  return intra_mode_to_tx_type_lookup[get_y_mode(mi, ib)];
239
0
}
Unexecuted instantiation: vp9_dx_iface.c:get_tx_type_4x4
Unexecuted instantiation: vp9_decodeframe.c:get_tx_type_4x4
Unexecuted instantiation: vp9_detokenize.c:get_tx_type_4x4
Unexecuted instantiation: vp9_decoder.c:get_tx_type_4x4
Unexecuted instantiation: yv12config.c:get_tx_type_4x4
Unexecuted instantiation: vp9_alloccommon.c:get_tx_type_4x4
Unexecuted instantiation: vp9_blockd.c:get_tx_type_4x4
Unexecuted instantiation: vp9_entropy.c:get_tx_type_4x4
Unexecuted instantiation: vp9_entropymode.c:get_tx_type_4x4
Unexecuted instantiation: vp9_entropymv.c:get_tx_type_4x4
Unexecuted instantiation: vp9_idct.c:get_tx_type_4x4
Unexecuted instantiation: vp9_pred_common.c:get_tx_type_4x4
Unexecuted instantiation: vp9_seg_common.c:get_tx_type_4x4
Unexecuted instantiation: vp9_tile_common.c:get_tx_type_4x4
Unexecuted instantiation: vp9_loopfilter.c:get_tx_type_4x4
Unexecuted instantiation: vp9_thread_common.c:get_tx_type_4x4
Unexecuted instantiation: vp9_reconinter.c:get_tx_type_4x4
Unexecuted instantiation: vp9_reconintra.c:get_tx_type_4x4
Unexecuted instantiation: vp9_scan.c:get_tx_type_4x4
Unexecuted instantiation: vp9_decodemv.c:get_tx_type_4x4
240
241
void vp9_setup_block_planes(MACROBLOCKD *xd, int ss_x, int ss_y);
242
243
static INLINE TX_SIZE get_uv_tx_size(const MODE_INFO *mi,
244
29.0M
                                     const struct macroblockd_plane *pd) {
245
29.0M
  assert(mi->sb_type < BLOCK_8X8 ||
246
29.0M
         ss_size_lookup[mi->sb_type][pd->subsampling_x][pd->subsampling_y] !=
247
29.0M
             BLOCK_INVALID);
248
29.4M
  return uv_txsize_lookup[mi->sb_type][mi->tx_size][pd->subsampling_x]
249
29.4M
                         [pd->subsampling_y];
250
29.0M
}
Unexecuted instantiation: vp9_dx_iface.c:get_uv_tx_size
vp9_decodeframe.c:get_uv_tx_size
Line
Count
Source
244
18.9M
                                     const struct macroblockd_plane *pd) {
245
18.9M
  assert(mi->sb_type < BLOCK_8X8 ||
246
18.9M
         ss_size_lookup[mi->sb_type][pd->subsampling_x][pd->subsampling_y] !=
247
18.9M
             BLOCK_INVALID);
248
18.9M
  return uv_txsize_lookup[mi->sb_type][mi->tx_size][pd->subsampling_x]
249
18.9M
                         [pd->subsampling_y];
250
18.9M
}
Unexecuted instantiation: vp9_detokenize.c:get_uv_tx_size
Unexecuted instantiation: vp9_decoder.c:get_uv_tx_size
Unexecuted instantiation: yv12config.c:get_uv_tx_size
Unexecuted instantiation: vp9_alloccommon.c:get_uv_tx_size
Unexecuted instantiation: vp9_blockd.c:get_uv_tx_size
Unexecuted instantiation: vp9_entropy.c:get_uv_tx_size
Unexecuted instantiation: vp9_entropymode.c:get_uv_tx_size
Unexecuted instantiation: vp9_entropymv.c:get_uv_tx_size
Unexecuted instantiation: vp9_idct.c:get_uv_tx_size
Unexecuted instantiation: vp9_pred_common.c:get_uv_tx_size
Unexecuted instantiation: vp9_seg_common.c:get_uv_tx_size
Unexecuted instantiation: vp9_tile_common.c:get_uv_tx_size
vp9_loopfilter.c:get_uv_tx_size
Line
Count
Source
244
10.1M
                                     const struct macroblockd_plane *pd) {
245
10.1M
  assert(mi->sb_type < BLOCK_8X8 ||
246
10.1M
         ss_size_lookup[mi->sb_type][pd->subsampling_x][pd->subsampling_y] !=
247
10.1M
             BLOCK_INVALID);
248
10.4M
  return uv_txsize_lookup[mi->sb_type][mi->tx_size][pd->subsampling_x]
249
10.4M
                         [pd->subsampling_y];
250
10.1M
}
Unexecuted instantiation: vp9_thread_common.c:get_uv_tx_size
Unexecuted instantiation: vp9_reconinter.c:get_uv_tx_size
Unexecuted instantiation: vp9_reconintra.c:get_uv_tx_size
Unexecuted instantiation: vp9_scan.c:get_uv_tx_size
Unexecuted instantiation: vp9_decodemv.c:get_uv_tx_size
251
252
static INLINE BLOCK_SIZE
253
0
get_plane_block_size(BLOCK_SIZE bsize, const struct macroblockd_plane *pd) {
254
0
  return ss_size_lookup[bsize][pd->subsampling_x][pd->subsampling_y];
255
0
}
Unexecuted instantiation: vp9_dx_iface.c:get_plane_block_size
Unexecuted instantiation: vp9_decodeframe.c:get_plane_block_size
Unexecuted instantiation: vp9_detokenize.c:get_plane_block_size
Unexecuted instantiation: vp9_decoder.c:get_plane_block_size
Unexecuted instantiation: yv12config.c:get_plane_block_size
Unexecuted instantiation: vp9_alloccommon.c:get_plane_block_size
Unexecuted instantiation: vp9_blockd.c:get_plane_block_size
Unexecuted instantiation: vp9_entropy.c:get_plane_block_size
Unexecuted instantiation: vp9_entropymode.c:get_plane_block_size
Unexecuted instantiation: vp9_entropymv.c:get_plane_block_size
Unexecuted instantiation: vp9_idct.c:get_plane_block_size
Unexecuted instantiation: vp9_pred_common.c:get_plane_block_size
Unexecuted instantiation: vp9_seg_common.c:get_plane_block_size
Unexecuted instantiation: vp9_tile_common.c:get_plane_block_size
Unexecuted instantiation: vp9_loopfilter.c:get_plane_block_size
Unexecuted instantiation: vp9_thread_common.c:get_plane_block_size
Unexecuted instantiation: vp9_reconinter.c:get_plane_block_size
Unexecuted instantiation: vp9_reconintra.c:get_plane_block_size
Unexecuted instantiation: vp9_scan.c:get_plane_block_size
Unexecuted instantiation: vp9_decodemv.c:get_plane_block_size
256
257
0
static INLINE void reset_skip_context(MACROBLOCKD *xd, BLOCK_SIZE bsize) {
258
0
  int i;
259
0
  for (i = 0; i < MAX_MB_PLANE; i++) {
260
0
    struct macroblockd_plane *const pd = &xd->plane[i];
261
0
    const BLOCK_SIZE plane_bsize = get_plane_block_size(bsize, pd);
262
0
    memset(pd->above_context, 0,
263
0
           sizeof(ENTROPY_CONTEXT) * num_4x4_blocks_wide_lookup[plane_bsize]);
264
0
    memset(pd->left_context, 0,
265
0
           sizeof(ENTROPY_CONTEXT) * num_4x4_blocks_high_lookup[plane_bsize]);
266
0
  }
267
0
}
Unexecuted instantiation: vp9_dx_iface.c:reset_skip_context
Unexecuted instantiation: vp9_decodeframe.c:reset_skip_context
Unexecuted instantiation: vp9_detokenize.c:reset_skip_context
Unexecuted instantiation: vp9_decoder.c:reset_skip_context
Unexecuted instantiation: yv12config.c:reset_skip_context
Unexecuted instantiation: vp9_alloccommon.c:reset_skip_context
Unexecuted instantiation: vp9_blockd.c:reset_skip_context
Unexecuted instantiation: vp9_entropy.c:reset_skip_context
Unexecuted instantiation: vp9_entropymode.c:reset_skip_context
Unexecuted instantiation: vp9_entropymv.c:reset_skip_context
Unexecuted instantiation: vp9_idct.c:reset_skip_context
Unexecuted instantiation: vp9_pred_common.c:reset_skip_context
Unexecuted instantiation: vp9_seg_common.c:reset_skip_context
Unexecuted instantiation: vp9_tile_common.c:reset_skip_context
Unexecuted instantiation: vp9_loopfilter.c:reset_skip_context
Unexecuted instantiation: vp9_thread_common.c:reset_skip_context
Unexecuted instantiation: vp9_reconinter.c:reset_skip_context
Unexecuted instantiation: vp9_reconintra.c:reset_skip_context
Unexecuted instantiation: vp9_scan.c:reset_skip_context
Unexecuted instantiation: vp9_decodemv.c:reset_skip_context
268
269
static INLINE const vpx_prob *get_y_mode_probs(const MODE_INFO *mi,
270
                                               const MODE_INFO *above_mi,
271
                                               const MODE_INFO *left_mi,
272
5.54M
                                               int block) {
273
5.54M
  const PREDICTION_MODE above = vp9_above_block_mode(mi, above_mi, block);
274
5.54M
  const PREDICTION_MODE left = vp9_left_block_mode(mi, left_mi, block);
275
5.54M
  return vp9_kf_y_mode_prob[above][left];
276
5.54M
}
Unexecuted instantiation: vp9_dx_iface.c:get_y_mode_probs
Unexecuted instantiation: vp9_decodeframe.c:get_y_mode_probs
Unexecuted instantiation: vp9_detokenize.c:get_y_mode_probs
Unexecuted instantiation: vp9_decoder.c:get_y_mode_probs
Unexecuted instantiation: yv12config.c:get_y_mode_probs
Unexecuted instantiation: vp9_alloccommon.c:get_y_mode_probs
Unexecuted instantiation: vp9_blockd.c:get_y_mode_probs
Unexecuted instantiation: vp9_entropy.c:get_y_mode_probs
Unexecuted instantiation: vp9_entropymode.c:get_y_mode_probs
Unexecuted instantiation: vp9_entropymv.c:get_y_mode_probs
Unexecuted instantiation: vp9_idct.c:get_y_mode_probs
Unexecuted instantiation: vp9_pred_common.c:get_y_mode_probs
Unexecuted instantiation: vp9_seg_common.c:get_y_mode_probs
Unexecuted instantiation: vp9_tile_common.c:get_y_mode_probs
Unexecuted instantiation: vp9_loopfilter.c:get_y_mode_probs
Unexecuted instantiation: vp9_thread_common.c:get_y_mode_probs
Unexecuted instantiation: vp9_reconinter.c:get_y_mode_probs
Unexecuted instantiation: vp9_reconintra.c:get_y_mode_probs
Unexecuted instantiation: vp9_scan.c:get_y_mode_probs
vp9_decodemv.c:get_y_mode_probs
Line
Count
Source
272
5.54M
                                               int block) {
273
5.54M
  const PREDICTION_MODE above = vp9_above_block_mode(mi, above_mi, block);
274
5.54M
  const PREDICTION_MODE left = vp9_left_block_mode(mi, left_mi, block);
275
5.54M
  return vp9_kf_y_mode_prob[above][left];
276
5.54M
}
277
278
typedef void (*foreach_transformed_block_visitor)(int plane, int block, int row,
279
                                                  int col,
280
                                                  BLOCK_SIZE plane_bsize,
281
                                                  TX_SIZE tx_size, void *arg);
282
283
void vp9_foreach_transformed_block_in_plane(
284
    const MACROBLOCKD *const xd, BLOCK_SIZE bsize, int plane,
285
    foreach_transformed_block_visitor visit, void *arg);
286
287
void vp9_foreach_transformed_block(const MACROBLOCKD *const xd,
288
                                   BLOCK_SIZE bsize,
289
                                   foreach_transformed_block_visitor visit,
290
                                   void *arg);
291
292
void vp9_set_contexts(const MACROBLOCKD *xd, struct macroblockd_plane *pd,
293
                      BLOCK_SIZE plane_bsize, TX_SIZE tx_size, int has_eob,
294
                      int aoff, int loff);
295
296
#if CONFIG_MISMATCH_DEBUG
297
#define TX_UNIT_SIZE_LOG2 2
298
static INLINE void mi_to_pixel_loc(int *pixel_c, int *pixel_r, int mi_col,
299
                                   int mi_row, int tx_blk_col, int tx_blk_row,
300
                                   int subsampling_x, int subsampling_y) {
301
  *pixel_c = ((mi_col << MI_SIZE_LOG2) >> subsampling_x) +
302
             (tx_blk_col << TX_UNIT_SIZE_LOG2);
303
  *pixel_r = ((mi_row << MI_SIZE_LOG2) >> subsampling_y) +
304
             (tx_blk_row << TX_UNIT_SIZE_LOG2);
305
}
306
307
static INLINE int get_block_width(BLOCK_SIZE bsize) {
308
  const int num_4x4_w = num_4x4_blocks_wide_lookup[bsize];
309
  return 4 * num_4x4_w;
310
}
311
312
static INLINE int get_block_height(BLOCK_SIZE bsize) {
313
  const int num_4x4_h = num_4x4_blocks_high_lookup[bsize];
314
  return 4 * num_4x4_h;
315
}
316
#endif
317
318
#ifdef __cplusplus
319
}  // extern "C"
320
#endif
321
322
#endif  // VPX_VP9_COMMON_VP9_BLOCKD_H_