Coverage Report

Created: 2025-08-28 07:12

/src/libvpx/vp9/common/vp9_scale.h
Line
Count
Source
1
/*
2
 *  Copyright (c) 2013 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_SCALE_H_
12
#define VPX_VP9_COMMON_VP9_SCALE_H_
13
14
#include "vp9/common/vp9_mv.h"
15
#include "vpx_dsp/vpx_convolve.h"
16
17
#ifdef __cplusplus
18
extern "C" {
19
#endif
20
21
951M
#define REF_SCALE_SHIFT 14
22
559M
#define REF_NO_SCALE (1 << REF_SCALE_SHIFT)
23
573M
#define REF_INVALID_SCALE (-1)
24
25
struct scale_factors {
26
  int x_scale_fp;  // horizontal fixed point scale factor
27
  int y_scale_fp;  // vertical fixed point scale factor
28
  int x_step_q4;
29
  int y_step_q4;
30
31
  int (*scale_value_x)(int val, const struct scale_factors *sf);
32
  int (*scale_value_y)(int val, const struct scale_factors *sf);
33
34
  convolve_fn_t predict[2][2][2];  // horiz, vert, avg
35
#if CONFIG_VP9_HIGHBITDEPTH
36
  highbd_convolve_fn_t highbd_predict[2][2][2];  // horiz, vert, avg
37
#endif
38
};
39
40
MV32 vp9_scale_mv(const MV *mv, int x, int y, const struct scale_factors *sf);
41
42
#if CONFIG_VP9_HIGHBITDEPTH
43
void vp9_setup_scale_factors_for_frame(struct scale_factors *sf, int other_w,
44
                                       int other_h, int this_w, int this_h,
45
                                       int use_highbd);
46
#else
47
void vp9_setup_scale_factors_for_frame(struct scale_factors *sf, int other_w,
48
                                       int other_h, int this_w, int this_h);
49
#endif
50
51
190M
static INLINE int vp9_is_valid_scale(const struct scale_factors *sf) {
52
190M
  return sf->x_scale_fp != REF_INVALID_SCALE &&
53
190M
         sf->y_scale_fp != REF_INVALID_SCALE;
54
190M
}
Unexecuted instantiation: vp9_dx_iface.c:vp9_is_valid_scale
vp9_decodeframe.c:vp9_is_valid_scale
Line
Count
Source
51
8.28M
static INLINE int vp9_is_valid_scale(const struct scale_factors *sf) {
52
8.28M
  return sf->x_scale_fp != REF_INVALID_SCALE &&
53
8.28M
         sf->y_scale_fp != REF_INVALID_SCALE;
54
8.28M
}
Unexecuted instantiation: vp9_detokenize.c:vp9_is_valid_scale
Unexecuted instantiation: vp9_decoder.c:vp9_is_valid_scale
Unexecuted instantiation: yv12config.c:vp9_is_valid_scale
Unexecuted instantiation: vp9_alloccommon.c:vp9_is_valid_scale
Unexecuted instantiation: vp9_blockd.c:vp9_is_valid_scale
Unexecuted instantiation: vp9_entropy.c:vp9_is_valid_scale
Unexecuted instantiation: vp9_entropymode.c:vp9_is_valid_scale
Unexecuted instantiation: vp9_entropymv.c:vp9_is_valid_scale
Unexecuted instantiation: vp9_idct.c:vp9_is_valid_scale
Unexecuted instantiation: vp9_pred_common.c:vp9_is_valid_scale
vp9_scale.c:vp9_is_valid_scale
Line
Count
Source
51
384k
static INLINE int vp9_is_valid_scale(const struct scale_factors *sf) {
52
384k
  return sf->x_scale_fp != REF_INVALID_SCALE &&
53
384k
         sf->y_scale_fp != REF_INVALID_SCALE;
54
384k
}
Unexecuted instantiation: vp9_seg_common.c:vp9_is_valid_scale
Unexecuted instantiation: vp9_tile_common.c:vp9_is_valid_scale
Unexecuted instantiation: vp9_loopfilter.c:vp9_is_valid_scale
Unexecuted instantiation: vp9_thread_common.c:vp9_is_valid_scale
vp9_reconinter.c:vp9_is_valid_scale
Line
Count
Source
51
113M
static INLINE int vp9_is_valid_scale(const struct scale_factors *sf) {
52
113M
  return sf->x_scale_fp != REF_INVALID_SCALE &&
53
113M
         sf->y_scale_fp != REF_INVALID_SCALE;
54
113M
}
Unexecuted instantiation: vp9_reconintra.c:vp9_is_valid_scale
Unexecuted instantiation: vp9_scan.c:vp9_is_valid_scale
Unexecuted instantiation: vp9_frame_scale.c:vp9_is_valid_scale
vp9_encoder.c:vp9_is_valid_scale
Line
Count
Source
51
295k
static INLINE int vp9_is_valid_scale(const struct scale_factors *sf) {
52
295k
  return sf->x_scale_fp != REF_INVALID_SCALE &&
53
295k
         sf->y_scale_fp != REF_INVALID_SCALE;
54
295k
}
Unexecuted instantiation: vp9_picklpf.c:vp9_is_valid_scale
Unexecuted instantiation: vp9_quantize.c:vp9_is_valid_scale
Unexecuted instantiation: vp9_ratectrl.c:vp9_is_valid_scale
Unexecuted instantiation: vp9_rd.c:vp9_is_valid_scale
Unexecuted instantiation: vp9_segmentation.c:vp9_is_valid_scale
Unexecuted instantiation: vp9_speed_features.c:vp9_is_valid_scale
Unexecuted instantiation: vp9_svc_layercontext.c:vp9_is_valid_scale
Unexecuted instantiation: vp9_tokenize.c:vp9_is_valid_scale
Unexecuted instantiation: vp9_aq_variance.c:vp9_is_valid_scale
Unexecuted instantiation: vp9_aq_360.c:vp9_is_valid_scale
Unexecuted instantiation: vp9_aq_cyclicrefresh.c:vp9_is_valid_scale
Unexecuted instantiation: vp9_aq_complexity.c:vp9_is_valid_scale
Unexecuted instantiation: vp9_alt_ref_aq.c:vp9_is_valid_scale
Unexecuted instantiation: vp9_skin_detection.c:vp9_is_valid_scale
Unexecuted instantiation: vp9_noise_estimate.c:vp9_is_valid_scale
Unexecuted instantiation: vp9_ext_ratectrl.c:vp9_is_valid_scale
Unexecuted instantiation: vp9_temporal_filter.c:vp9_is_valid_scale
Unexecuted instantiation: vp9_tpl_model.c:vp9_is_valid_scale
Unexecuted instantiation: vp9_mbgraph.c:vp9_is_valid_scale
Unexecuted instantiation: temporal_filter_sse4.c:vp9_is_valid_scale
Unexecuted instantiation: vp9_quantize_sse2.c:vp9_is_valid_scale
Unexecuted instantiation: vp9_quantize_ssse3.c:vp9_is_valid_scale
Unexecuted instantiation: vp9_quantize_avx2.c:vp9_is_valid_scale
Unexecuted instantiation: highbd_temporal_filter_sse4.c:vp9_is_valid_scale
Unexecuted instantiation: vp9_decodemv.c:vp9_is_valid_scale
Unexecuted instantiation: quantize.c:vp9_is_valid_scale
Unexecuted instantiation: quantize_sse2.c:vp9_is_valid_scale
Unexecuted instantiation: quantize_ssse3.c:vp9_is_valid_scale
Unexecuted instantiation: quantize_avx.c:vp9_is_valid_scale
Unexecuted instantiation: quantize_avx2.c:vp9_is_valid_scale
Unexecuted instantiation: highbd_quantize_intrin_sse2.c:vp9_is_valid_scale
Unexecuted instantiation: highbd_quantize_intrin_avx2.c:vp9_is_valid_scale
Unexecuted instantiation: vp9_cx_iface.c:vp9_is_valid_scale
Unexecuted instantiation: vp9_bitstream.c:vp9_is_valid_scale
Unexecuted instantiation: vp9_context_tree.c:vp9_is_valid_scale
Unexecuted instantiation: vp9_dct.c:vp9_is_valid_scale
Unexecuted instantiation: vp9_encodeframe.c:vp9_is_valid_scale
Unexecuted instantiation: vp9_encodemb.c:vp9_is_valid_scale
Unexecuted instantiation: vp9_encodemv.c:vp9_is_valid_scale
Unexecuted instantiation: vp9_ethread.c:vp9_is_valid_scale
Unexecuted instantiation: vp9_firstpass.c:vp9_is_valid_scale
Unexecuted instantiation: vp9_lookahead.c:vp9_is_valid_scale
Unexecuted instantiation: vp9_multi_thread.c:vp9_is_valid_scale
Unexecuted instantiation: vp9_mcomp.c:vp9_is_valid_scale
vp9_rdopt.c:vp9_is_valid_scale
Line
Count
Source
51
68.3M
static INLINE int vp9_is_valid_scale(const struct scale_factors *sf) {
52
68.3M
  return sf->x_scale_fp != REF_INVALID_SCALE &&
53
68.3M
         sf->y_scale_fp != REF_INVALID_SCALE;
54
68.3M
}
Unexecuted instantiation: vp9_pickmode.c:vp9_is_valid_scale
Unexecuted instantiation: vp9_mvref_common.c:vp9_is_valid_scale
55
56
186M
static INLINE int vp9_is_scaled(const struct scale_factors *sf) {
57
186M
  return vp9_is_valid_scale(sf) &&
58
186M
         (sf->x_scale_fp != REF_NO_SCALE || sf->y_scale_fp != REF_NO_SCALE);
59
186M
}
Unexecuted instantiation: vp9_dx_iface.c:vp9_is_scaled
vp9_decodeframe.c:vp9_is_scaled
Line
Count
Source
56
4.14M
static INLINE int vp9_is_scaled(const struct scale_factors *sf) {
57
4.14M
  return vp9_is_valid_scale(sf) &&
58
4.14M
         (sf->x_scale_fp != REF_NO_SCALE || sf->y_scale_fp != REF_NO_SCALE);
59
4.14M
}
Unexecuted instantiation: vp9_detokenize.c:vp9_is_scaled
Unexecuted instantiation: vp9_decoder.c:vp9_is_scaled
Unexecuted instantiation: yv12config.c:vp9_is_scaled
Unexecuted instantiation: vp9_alloccommon.c:vp9_is_scaled
Unexecuted instantiation: vp9_blockd.c:vp9_is_scaled
Unexecuted instantiation: vp9_entropy.c:vp9_is_scaled
Unexecuted instantiation: vp9_entropymode.c:vp9_is_scaled
Unexecuted instantiation: vp9_entropymv.c:vp9_is_scaled
Unexecuted instantiation: vp9_idct.c:vp9_is_scaled
Unexecuted instantiation: vp9_pred_common.c:vp9_is_scaled
vp9_scale.c:vp9_is_scaled
Line
Count
Source
56
384k
static INLINE int vp9_is_scaled(const struct scale_factors *sf) {
57
384k
  return vp9_is_valid_scale(sf) &&
58
384k
         (sf->x_scale_fp != REF_NO_SCALE || sf->y_scale_fp != REF_NO_SCALE);
59
384k
}
Unexecuted instantiation: vp9_seg_common.c:vp9_is_scaled
Unexecuted instantiation: vp9_tile_common.c:vp9_is_scaled
Unexecuted instantiation: vp9_loopfilter.c:vp9_is_scaled
Unexecuted instantiation: vp9_thread_common.c:vp9_is_scaled
vp9_reconinter.c:vp9_is_scaled
Line
Count
Source
56
113M
static INLINE int vp9_is_scaled(const struct scale_factors *sf) {
57
113M
  return vp9_is_valid_scale(sf) &&
58
113M
         (sf->x_scale_fp != REF_NO_SCALE || sf->y_scale_fp != REF_NO_SCALE);
59
113M
}
Unexecuted instantiation: vp9_reconintra.c:vp9_is_scaled
Unexecuted instantiation: vp9_scan.c:vp9_is_scaled
Unexecuted instantiation: vp9_frame_scale.c:vp9_is_scaled
vp9_encoder.c:vp9_is_scaled
Line
Count
Source
56
147k
static INLINE int vp9_is_scaled(const struct scale_factors *sf) {
57
147k
  return vp9_is_valid_scale(sf) &&
58
147k
         (sf->x_scale_fp != REF_NO_SCALE || sf->y_scale_fp != REF_NO_SCALE);
59
147k
}
Unexecuted instantiation: vp9_picklpf.c:vp9_is_scaled
Unexecuted instantiation: vp9_quantize.c:vp9_is_scaled
Unexecuted instantiation: vp9_ratectrl.c:vp9_is_scaled
Unexecuted instantiation: vp9_rd.c:vp9_is_scaled
Unexecuted instantiation: vp9_segmentation.c:vp9_is_scaled
Unexecuted instantiation: vp9_speed_features.c:vp9_is_scaled
Unexecuted instantiation: vp9_svc_layercontext.c:vp9_is_scaled
Unexecuted instantiation: vp9_tokenize.c:vp9_is_scaled
Unexecuted instantiation: vp9_aq_variance.c:vp9_is_scaled
Unexecuted instantiation: vp9_aq_360.c:vp9_is_scaled
Unexecuted instantiation: vp9_aq_cyclicrefresh.c:vp9_is_scaled
Unexecuted instantiation: vp9_aq_complexity.c:vp9_is_scaled
Unexecuted instantiation: vp9_alt_ref_aq.c:vp9_is_scaled
Unexecuted instantiation: vp9_skin_detection.c:vp9_is_scaled
Unexecuted instantiation: vp9_noise_estimate.c:vp9_is_scaled
Unexecuted instantiation: vp9_ext_ratectrl.c:vp9_is_scaled
Unexecuted instantiation: vp9_temporal_filter.c:vp9_is_scaled
Unexecuted instantiation: vp9_tpl_model.c:vp9_is_scaled
Unexecuted instantiation: vp9_mbgraph.c:vp9_is_scaled
Unexecuted instantiation: temporal_filter_sse4.c:vp9_is_scaled
Unexecuted instantiation: vp9_quantize_sse2.c:vp9_is_scaled
Unexecuted instantiation: vp9_quantize_ssse3.c:vp9_is_scaled
Unexecuted instantiation: vp9_quantize_avx2.c:vp9_is_scaled
Unexecuted instantiation: highbd_temporal_filter_sse4.c:vp9_is_scaled
Unexecuted instantiation: vp9_decodemv.c:vp9_is_scaled
Unexecuted instantiation: quantize.c:vp9_is_scaled
Unexecuted instantiation: quantize_sse2.c:vp9_is_scaled
Unexecuted instantiation: quantize_ssse3.c:vp9_is_scaled
Unexecuted instantiation: quantize_avx.c:vp9_is_scaled
Unexecuted instantiation: quantize_avx2.c:vp9_is_scaled
Unexecuted instantiation: highbd_quantize_intrin_sse2.c:vp9_is_scaled
Unexecuted instantiation: highbd_quantize_intrin_avx2.c:vp9_is_scaled
Unexecuted instantiation: vp9_cx_iface.c:vp9_is_scaled
Unexecuted instantiation: vp9_bitstream.c:vp9_is_scaled
Unexecuted instantiation: vp9_context_tree.c:vp9_is_scaled
Unexecuted instantiation: vp9_dct.c:vp9_is_scaled
Unexecuted instantiation: vp9_encodeframe.c:vp9_is_scaled
Unexecuted instantiation: vp9_encodemb.c:vp9_is_scaled
Unexecuted instantiation: vp9_encodemv.c:vp9_is_scaled
Unexecuted instantiation: vp9_ethread.c:vp9_is_scaled
Unexecuted instantiation: vp9_firstpass.c:vp9_is_scaled
Unexecuted instantiation: vp9_lookahead.c:vp9_is_scaled
Unexecuted instantiation: vp9_multi_thread.c:vp9_is_scaled
Unexecuted instantiation: vp9_mcomp.c:vp9_is_scaled
vp9_rdopt.c:vp9_is_scaled
Line
Count
Source
56
68.3M
static INLINE int vp9_is_scaled(const struct scale_factors *sf) {
57
68.3M
  return vp9_is_valid_scale(sf) &&
58
68.3M
         (sf->x_scale_fp != REF_NO_SCALE || sf->y_scale_fp != REF_NO_SCALE);
59
68.3M
}
Unexecuted instantiation: vp9_pickmode.c:vp9_is_scaled
Unexecuted instantiation: vp9_mvref_common.c:vp9_is_scaled
60
61
static INLINE int valid_ref_frame_size(int ref_width, int ref_height,
62
632k
                                       int this_width, int this_height) {
63
632k
  return 2 * this_width >= ref_width && 2 * this_height >= ref_height &&
64
632k
         this_width <= 16 * ref_width && this_height <= 16 * ref_height;
65
632k
}
Unexecuted instantiation: vp9_dx_iface.c:valid_ref_frame_size
vp9_decodeframe.c:valid_ref_frame_size
Line
Count
Source
62
247k
                                       int this_width, int this_height) {
63
247k
  return 2 * this_width >= ref_width && 2 * this_height >= ref_height &&
64
247k
         this_width <= 16 * ref_width && this_height <= 16 * ref_height;
65
247k
}
Unexecuted instantiation: vp9_detokenize.c:valid_ref_frame_size
Unexecuted instantiation: vp9_decoder.c:valid_ref_frame_size
Unexecuted instantiation: yv12config.c:valid_ref_frame_size
Unexecuted instantiation: vp9_alloccommon.c:valid_ref_frame_size
Unexecuted instantiation: vp9_blockd.c:valid_ref_frame_size
Unexecuted instantiation: vp9_entropy.c:valid_ref_frame_size
Unexecuted instantiation: vp9_entropymode.c:valid_ref_frame_size
Unexecuted instantiation: vp9_entropymv.c:valid_ref_frame_size
Unexecuted instantiation: vp9_idct.c:valid_ref_frame_size
Unexecuted instantiation: vp9_pred_common.c:valid_ref_frame_size
vp9_scale.c:valid_ref_frame_size
Line
Count
Source
62
384k
                                       int this_width, int this_height) {
63
384k
  return 2 * this_width >= ref_width && 2 * this_height >= ref_height &&
64
384k
         this_width <= 16 * ref_width && this_height <= 16 * ref_height;
65
384k
}
Unexecuted instantiation: vp9_seg_common.c:valid_ref_frame_size
Unexecuted instantiation: vp9_tile_common.c:valid_ref_frame_size
Unexecuted instantiation: vp9_loopfilter.c:valid_ref_frame_size
Unexecuted instantiation: vp9_thread_common.c:valid_ref_frame_size
Unexecuted instantiation: vp9_reconinter.c:valid_ref_frame_size
Unexecuted instantiation: vp9_reconintra.c:valid_ref_frame_size
Unexecuted instantiation: vp9_scan.c:valid_ref_frame_size
Unexecuted instantiation: vp9_frame_scale.c:valid_ref_frame_size
Unexecuted instantiation: vp9_encoder.c:valid_ref_frame_size
Unexecuted instantiation: vp9_picklpf.c:valid_ref_frame_size
Unexecuted instantiation: vp9_quantize.c:valid_ref_frame_size
Unexecuted instantiation: vp9_ratectrl.c:valid_ref_frame_size
Unexecuted instantiation: vp9_rd.c:valid_ref_frame_size
Unexecuted instantiation: vp9_segmentation.c:valid_ref_frame_size
Unexecuted instantiation: vp9_speed_features.c:valid_ref_frame_size
Unexecuted instantiation: vp9_svc_layercontext.c:valid_ref_frame_size
Unexecuted instantiation: vp9_tokenize.c:valid_ref_frame_size
Unexecuted instantiation: vp9_aq_variance.c:valid_ref_frame_size
Unexecuted instantiation: vp9_aq_360.c:valid_ref_frame_size
Unexecuted instantiation: vp9_aq_cyclicrefresh.c:valid_ref_frame_size
Unexecuted instantiation: vp9_aq_complexity.c:valid_ref_frame_size
Unexecuted instantiation: vp9_alt_ref_aq.c:valid_ref_frame_size
Unexecuted instantiation: vp9_skin_detection.c:valid_ref_frame_size
Unexecuted instantiation: vp9_noise_estimate.c:valid_ref_frame_size
Unexecuted instantiation: vp9_ext_ratectrl.c:valid_ref_frame_size
Unexecuted instantiation: vp9_temporal_filter.c:valid_ref_frame_size
Unexecuted instantiation: vp9_tpl_model.c:valid_ref_frame_size
Unexecuted instantiation: vp9_mbgraph.c:valid_ref_frame_size
Unexecuted instantiation: temporal_filter_sse4.c:valid_ref_frame_size
Unexecuted instantiation: vp9_quantize_sse2.c:valid_ref_frame_size
Unexecuted instantiation: vp9_quantize_ssse3.c:valid_ref_frame_size
Unexecuted instantiation: vp9_quantize_avx2.c:valid_ref_frame_size
Unexecuted instantiation: highbd_temporal_filter_sse4.c:valid_ref_frame_size
Unexecuted instantiation: vp9_decodemv.c:valid_ref_frame_size
Unexecuted instantiation: quantize.c:valid_ref_frame_size
Unexecuted instantiation: quantize_sse2.c:valid_ref_frame_size
Unexecuted instantiation: quantize_ssse3.c:valid_ref_frame_size
Unexecuted instantiation: quantize_avx.c:valid_ref_frame_size
Unexecuted instantiation: quantize_avx2.c:valid_ref_frame_size
Unexecuted instantiation: highbd_quantize_intrin_sse2.c:valid_ref_frame_size
Unexecuted instantiation: highbd_quantize_intrin_avx2.c:valid_ref_frame_size
Unexecuted instantiation: vp9_cx_iface.c:valid_ref_frame_size
Unexecuted instantiation: vp9_bitstream.c:valid_ref_frame_size
Unexecuted instantiation: vp9_context_tree.c:valid_ref_frame_size
Unexecuted instantiation: vp9_dct.c:valid_ref_frame_size
Unexecuted instantiation: vp9_encodeframe.c:valid_ref_frame_size
Unexecuted instantiation: vp9_encodemb.c:valid_ref_frame_size
Unexecuted instantiation: vp9_encodemv.c:valid_ref_frame_size
Unexecuted instantiation: vp9_ethread.c:valid_ref_frame_size
Unexecuted instantiation: vp9_firstpass.c:valid_ref_frame_size
Unexecuted instantiation: vp9_lookahead.c:valid_ref_frame_size
Unexecuted instantiation: vp9_multi_thread.c:valid_ref_frame_size
Unexecuted instantiation: vp9_mcomp.c:valid_ref_frame_size
Unexecuted instantiation: vp9_rdopt.c:valid_ref_frame_size
Unexecuted instantiation: vp9_pickmode.c:valid_ref_frame_size
Unexecuted instantiation: vp9_mvref_common.c:valid_ref_frame_size
66
67
#ifdef __cplusplus
68
}  // extern "C"
69
#endif
70
71
#endif  // VPX_VP9_COMMON_VP9_SCALE_H_