/src/aom/av1/common/cfl.h
Line | Count | Source |
1 | | /* |
2 | | * Copyright (c) 2016, Alliance for Open Media. All rights reserved |
3 | | * |
4 | | * This source code is subject to the terms of the BSD 2 Clause License and |
5 | | * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License |
6 | | * was not distributed with this source code in the LICENSE file, you can |
7 | | * obtain it at www.aomedia.org/license/software. If the Alliance for Open |
8 | | * Media Patent License 1.0 was not distributed with this source code in the |
9 | | * PATENTS file, you can obtain it at www.aomedia.org/license/patent. |
10 | | */ |
11 | | |
12 | | #ifndef AOM_AV1_COMMON_CFL_H_ |
13 | | #define AOM_AV1_COMMON_CFL_H_ |
14 | | |
15 | | #include "av1/common/av1_common_int.h" |
16 | | #include "av1/common/blockd.h" |
17 | | |
18 | | // Can we use CfL for the current block? |
19 | 14.5M | static INLINE CFL_ALLOWED_TYPE is_cfl_allowed(const MACROBLOCKD *xd) { |
20 | 14.5M | const MB_MODE_INFO *mbmi = xd->mi[0]; |
21 | 14.5M | const BLOCK_SIZE bsize = mbmi->bsize; |
22 | 14.5M | assert(bsize < BLOCK_SIZES_ALL); |
23 | 14.5M | if (xd->lossless[mbmi->segment_id]) { |
24 | | // In lossless, CfL is available when the partition size is equal to the |
25 | | // transform size. |
26 | 37.7k | const int ssx = xd->plane[AOM_PLANE_U].subsampling_x; |
27 | 37.7k | const int ssy = xd->plane[AOM_PLANE_U].subsampling_y; |
28 | 37.7k | const int plane_bsize = get_plane_block_size(bsize, ssx, ssy); |
29 | 37.7k | return (CFL_ALLOWED_TYPE)(plane_bsize == BLOCK_4X4); |
30 | 37.7k | } |
31 | | // Spec: CfL is available to luma partitions lesser than or equal to 32x32 |
32 | 14.5M | return (CFL_ALLOWED_TYPE)(block_size_wide[bsize] <= 32 && |
33 | 14.5M | block_size_high[bsize] <= 32); |
34 | 14.5M | } Unexecuted instantiation: decodeframe.c:is_cfl_allowed decodemv.c:is_cfl_allowed Line | Count | Source | 19 | 7.31M | static INLINE CFL_ALLOWED_TYPE is_cfl_allowed(const MACROBLOCKD *xd) { | 20 | 7.31M | const MB_MODE_INFO *mbmi = xd->mi[0]; | 21 | 7.31M | const BLOCK_SIZE bsize = mbmi->bsize; | 22 | 7.31M | assert(bsize < BLOCK_SIZES_ALL); | 23 | 7.31M | if (xd->lossless[mbmi->segment_id]) { | 24 | | // In lossless, CfL is available when the partition size is equal to the | 25 | | // transform size. | 26 | 31.6k | const int ssx = xd->plane[AOM_PLANE_U].subsampling_x; | 27 | 31.6k | const int ssy = xd->plane[AOM_PLANE_U].subsampling_y; | 28 | 31.6k | const int plane_bsize = get_plane_block_size(bsize, ssx, ssy); | 29 | 31.6k | return (CFL_ALLOWED_TYPE)(plane_bsize == BLOCK_4X4); | 30 | 31.6k | } | 31 | | // Spec: CfL is available to luma partitions lesser than or equal to 32x32 | 32 | 7.28M | return (CFL_ALLOWED_TYPE)(block_size_wide[bsize] <= 32 && | 33 | 7.28M | block_size_high[bsize] <= 32); | 34 | 7.31M | } |
Unexecuted instantiation: bitstream.c:is_cfl_allowed Unexecuted instantiation: encoder.c:is_cfl_allowed Unexecuted instantiation: encoder_utils.c:is_cfl_allowed Unexecuted instantiation: encodetxb.c:is_cfl_allowed Unexecuted instantiation: ethread.c:is_cfl_allowed Unexecuted instantiation: global_motion_facade.c:is_cfl_allowed Unexecuted instantiation: mcomp.c:is_cfl_allowed Unexecuted instantiation: palette.c:is_cfl_allowed Unexecuted instantiation: rdopt.c:is_cfl_allowed Unexecuted instantiation: speed_features.c:is_cfl_allowed Unexecuted instantiation: superres_scale.c:is_cfl_allowed Unexecuted instantiation: svc_layercontext.c:is_cfl_allowed Unexecuted instantiation: tokenize.c:is_cfl_allowed Unexecuted instantiation: tpl_model.c:is_cfl_allowed Unexecuted instantiation: tx_search.c:is_cfl_allowed Unexecuted instantiation: intra_mode_search.c:is_cfl_allowed Line | Count | Source | 19 | 3.61M | static INLINE CFL_ALLOWED_TYPE is_cfl_allowed(const MACROBLOCKD *xd) { | 20 | 3.61M | const MB_MODE_INFO *mbmi = xd->mi[0]; | 21 | 3.61M | const BLOCK_SIZE bsize = mbmi->bsize; | 22 | 3.61M | assert(bsize < BLOCK_SIZES_ALL); | 23 | 3.61M | if (xd->lossless[mbmi->segment_id]) { | 24 | | // In lossless, CfL is available when the partition size is equal to the | 25 | | // transform size. | 26 | 3.04k | const int ssx = xd->plane[AOM_PLANE_U].subsampling_x; | 27 | 3.04k | const int ssy = xd->plane[AOM_PLANE_U].subsampling_y; | 28 | 3.04k | const int plane_bsize = get_plane_block_size(bsize, ssx, ssy); | 29 | 3.04k | return (CFL_ALLOWED_TYPE)(plane_bsize == BLOCK_4X4); | 30 | 3.04k | } | 31 | | // Spec: CfL is available to luma partitions lesser than or equal to 32x32 | 32 | 3.61M | return (CFL_ALLOWED_TYPE)(block_size_wide[bsize] <= 32 && | 33 | 3.61M | block_size_high[bsize] <= 32); | 34 | 3.61M | } |
reconintra.c:is_cfl_allowed Line | Count | Source | 19 | 3.61M | static INLINE CFL_ALLOWED_TYPE is_cfl_allowed(const MACROBLOCKD *xd) { | 20 | 3.61M | const MB_MODE_INFO *mbmi = xd->mi[0]; | 21 | 3.61M | const BLOCK_SIZE bsize = mbmi->bsize; | 22 | 3.61M | assert(bsize < BLOCK_SIZES_ALL); | 23 | 3.61M | if (xd->lossless[mbmi->segment_id]) { | 24 | | // In lossless, CfL is available when the partition size is equal to the | 25 | | // transform size. | 26 | 3.04k | const int ssx = xd->plane[AOM_PLANE_U].subsampling_x; | 27 | 3.04k | const int ssy = xd->plane[AOM_PLANE_U].subsampling_y; | 28 | 3.04k | const int plane_bsize = get_plane_block_size(bsize, ssx, ssy); | 29 | 3.04k | return (CFL_ALLOWED_TYPE)(plane_bsize == BLOCK_4X4); | 30 | 3.04k | } | 31 | | // Spec: CfL is available to luma partitions lesser than or equal to 32x32 | 32 | 3.61M | return (CFL_ALLOWED_TYPE)(block_size_wide[bsize] <= 32 && | 33 | 3.61M | block_size_high[bsize] <= 32); | 34 | 3.61M | } |
Unexecuted instantiation: allintra_vis.c:is_cfl_allowed Unexecuted instantiation: compound_type.c:is_cfl_allowed Unexecuted instantiation: encodeframe.c:is_cfl_allowed Unexecuted instantiation: encodeframe_utils.c:is_cfl_allowed Unexecuted instantiation: encodemb.c:is_cfl_allowed Unexecuted instantiation: encode_strategy.c:is_cfl_allowed Unexecuted instantiation: interp_search.c:is_cfl_allowed Unexecuted instantiation: motion_search_facade.c:is_cfl_allowed Unexecuted instantiation: partition_search.c:is_cfl_allowed Unexecuted instantiation: partition_strategy.c:is_cfl_allowed Unexecuted instantiation: nonrd_pickmode.c:is_cfl_allowed |
35 | | |
36 | | // Do we need to save the luma pixels from the current block, |
37 | | // for a possible future CfL prediction? |
38 | | static INLINE CFL_ALLOWED_TYPE store_cfl_required(const AV1_COMMON *cm, |
39 | 24.8M | const MACROBLOCKD *xd) { |
40 | 24.8M | const MB_MODE_INFO *mbmi = xd->mi[0]; |
41 | | |
42 | 24.8M | if (cm->seq_params->monochrome) return CFL_DISALLOWED; |
43 | | |
44 | 24.8M | if (!xd->is_chroma_ref) { |
45 | | // For non-chroma-reference blocks, we should always store the luma pixels, |
46 | | // in case the corresponding chroma-reference block uses CfL. |
47 | | // Note that this can only happen for block sizes which are <8 on |
48 | | // their shortest side, as otherwise they would be chroma reference |
49 | | // blocks. |
50 | 1.54M | return CFL_ALLOWED; |
51 | 1.54M | } |
52 | | |
53 | | // If this block has chroma information, we know whether we're |
54 | | // actually going to perform a CfL prediction |
55 | 23.2M | return (CFL_ALLOWED_TYPE)(!is_inter_block(mbmi) && |
56 | 23.2M | mbmi->uv_mode == UV_CFL_PRED); |
57 | 24.8M | } decodeframe.c:store_cfl_required Line | Count | Source | 39 | 16.8M | const MACROBLOCKD *xd) { | 40 | 16.8M | const MB_MODE_INFO *mbmi = xd->mi[0]; | 41 | | | 42 | 16.8M | if (cm->seq_params->monochrome) return CFL_DISALLOWED; | 43 | | | 44 | 16.7M | if (!xd->is_chroma_ref) { | 45 | | // For non-chroma-reference blocks, we should always store the luma pixels, | 46 | | // in case the corresponding chroma-reference block uses CfL. | 47 | | // Note that this can only happen for block sizes which are <8 on | 48 | | // their shortest side, as otherwise they would be chroma reference | 49 | | // blocks. | 50 | 810k | return CFL_ALLOWED; | 51 | 810k | } | 52 | | | 53 | | // If this block has chroma information, we know whether we're | 54 | | // actually going to perform a CfL prediction | 55 | 15.9M | return (CFL_ALLOWED_TYPE)(!is_inter_block(mbmi) && | 56 | 15.9M | mbmi->uv_mode == UV_CFL_PRED); | 57 | 16.7M | } |
decodemv.c:store_cfl_required Line | Count | Source | 39 | 8.07M | const MACROBLOCKD *xd) { | 40 | 8.07M | const MB_MODE_INFO *mbmi = xd->mi[0]; | 41 | | | 42 | 8.07M | if (cm->seq_params->monochrome) return CFL_DISALLOWED; | 43 | | | 44 | 8.05M | if (!xd->is_chroma_ref) { | 45 | | // For non-chroma-reference blocks, we should always store the luma pixels, | 46 | | // in case the corresponding chroma-reference block uses CfL. | 47 | | // Note that this can only happen for block sizes which are <8 on | 48 | | // their shortest side, as otherwise they would be chroma reference | 49 | | // blocks. | 50 | 738k | return CFL_ALLOWED; | 51 | 738k | } | 52 | | | 53 | | // If this block has chroma information, we know whether we're | 54 | | // actually going to perform a CfL prediction | 55 | 7.31M | return (CFL_ALLOWED_TYPE)(!is_inter_block(mbmi) && | 56 | 7.31M | mbmi->uv_mode == UV_CFL_PRED); | 57 | 8.05M | } |
Unexecuted instantiation: bitstream.c:store_cfl_required Unexecuted instantiation: encoder.c:store_cfl_required Unexecuted instantiation: encoder_utils.c:store_cfl_required Unexecuted instantiation: encodetxb.c:store_cfl_required Unexecuted instantiation: ethread.c:store_cfl_required Unexecuted instantiation: global_motion_facade.c:store_cfl_required Unexecuted instantiation: mcomp.c:store_cfl_required Unexecuted instantiation: palette.c:store_cfl_required Unexecuted instantiation: rdopt.c:store_cfl_required Unexecuted instantiation: speed_features.c:store_cfl_required Unexecuted instantiation: superres_scale.c:store_cfl_required Unexecuted instantiation: svc_layercontext.c:store_cfl_required Unexecuted instantiation: tokenize.c:store_cfl_required Unexecuted instantiation: tpl_model.c:store_cfl_required Unexecuted instantiation: tx_search.c:store_cfl_required Unexecuted instantiation: intra_mode_search.c:store_cfl_required Unexecuted instantiation: cfl.c:store_cfl_required Unexecuted instantiation: reconintra.c:store_cfl_required Unexecuted instantiation: allintra_vis.c:store_cfl_required Unexecuted instantiation: compound_type.c:store_cfl_required Unexecuted instantiation: encodeframe.c:store_cfl_required Unexecuted instantiation: encodeframe_utils.c:store_cfl_required Unexecuted instantiation: encodemb.c:store_cfl_required Unexecuted instantiation: encode_strategy.c:store_cfl_required Unexecuted instantiation: interp_search.c:store_cfl_required Unexecuted instantiation: motion_search_facade.c:store_cfl_required Unexecuted instantiation: partition_search.c:store_cfl_required Unexecuted instantiation: partition_strategy.c:store_cfl_required Unexecuted instantiation: nonrd_pickmode.c:store_cfl_required |
58 | | |
59 | 395M | static INLINE int get_scaled_luma_q0(int alpha_q3, int16_t pred_buf_q3) { |
60 | 395M | int scaled_luma_q6 = alpha_q3 * pred_buf_q3; |
61 | 395M | return ROUND_POWER_OF_TWO_SIGNED(scaled_luma_q6, 6); |
62 | 395M | } Unexecuted instantiation: decodeframe.c:get_scaled_luma_q0 Unexecuted instantiation: decodemv.c:get_scaled_luma_q0 Unexecuted instantiation: bitstream.c:get_scaled_luma_q0 Unexecuted instantiation: encoder.c:get_scaled_luma_q0 Unexecuted instantiation: encoder_utils.c:get_scaled_luma_q0 Unexecuted instantiation: encodetxb.c:get_scaled_luma_q0 Unexecuted instantiation: ethread.c:get_scaled_luma_q0 Unexecuted instantiation: global_motion_facade.c:get_scaled_luma_q0 Unexecuted instantiation: mcomp.c:get_scaled_luma_q0 Unexecuted instantiation: palette.c:get_scaled_luma_q0 Unexecuted instantiation: rdopt.c:get_scaled_luma_q0 Unexecuted instantiation: speed_features.c:get_scaled_luma_q0 Unexecuted instantiation: superres_scale.c:get_scaled_luma_q0 Unexecuted instantiation: svc_layercontext.c:get_scaled_luma_q0 Unexecuted instantiation: tokenize.c:get_scaled_luma_q0 Unexecuted instantiation: tpl_model.c:get_scaled_luma_q0 Unexecuted instantiation: tx_search.c:get_scaled_luma_q0 Unexecuted instantiation: intra_mode_search.c:get_scaled_luma_q0 Line | Count | Source | 59 | 395M | static INLINE int get_scaled_luma_q0(int alpha_q3, int16_t pred_buf_q3) { | 60 | 395M | int scaled_luma_q6 = alpha_q3 * pred_buf_q3; | 61 | 395M | return ROUND_POWER_OF_TWO_SIGNED(scaled_luma_q6, 6); | 62 | 395M | } |
Unexecuted instantiation: reconintra.c:get_scaled_luma_q0 Unexecuted instantiation: allintra_vis.c:get_scaled_luma_q0 Unexecuted instantiation: compound_type.c:get_scaled_luma_q0 Unexecuted instantiation: encodeframe.c:get_scaled_luma_q0 Unexecuted instantiation: encodeframe_utils.c:get_scaled_luma_q0 Unexecuted instantiation: encodemb.c:get_scaled_luma_q0 Unexecuted instantiation: encode_strategy.c:get_scaled_luma_q0 Unexecuted instantiation: interp_search.c:get_scaled_luma_q0 Unexecuted instantiation: motion_search_facade.c:get_scaled_luma_q0 Unexecuted instantiation: partition_search.c:get_scaled_luma_q0 Unexecuted instantiation: partition_strategy.c:get_scaled_luma_q0 Unexecuted instantiation: nonrd_pickmode.c:get_scaled_luma_q0 |
63 | | |
64 | 3.61M | static INLINE CFL_PRED_TYPE get_cfl_pred_type(PLANE_TYPE plane) { |
65 | 3.61M | assert(plane > 0); |
66 | 3.61M | return (CFL_PRED_TYPE)(plane - 1); |
67 | 3.61M | } Unexecuted instantiation: decodeframe.c:get_cfl_pred_type Unexecuted instantiation: decodemv.c:get_cfl_pred_type Unexecuted instantiation: bitstream.c:get_cfl_pred_type Unexecuted instantiation: encoder.c:get_cfl_pred_type Unexecuted instantiation: encoder_utils.c:get_cfl_pred_type Unexecuted instantiation: encodetxb.c:get_cfl_pred_type Unexecuted instantiation: ethread.c:get_cfl_pred_type Unexecuted instantiation: global_motion_facade.c:get_cfl_pred_type Unexecuted instantiation: mcomp.c:get_cfl_pred_type Unexecuted instantiation: palette.c:get_cfl_pred_type Unexecuted instantiation: rdopt.c:get_cfl_pred_type Unexecuted instantiation: speed_features.c:get_cfl_pred_type Unexecuted instantiation: superres_scale.c:get_cfl_pred_type Unexecuted instantiation: svc_layercontext.c:get_cfl_pred_type Unexecuted instantiation: tokenize.c:get_cfl_pred_type Unexecuted instantiation: tpl_model.c:get_cfl_pred_type Unexecuted instantiation: tx_search.c:get_cfl_pred_type Unexecuted instantiation: intra_mode_search.c:get_cfl_pred_type Unexecuted instantiation: cfl.c:get_cfl_pred_type reconintra.c:get_cfl_pred_type Line | Count | Source | 64 | 3.61M | static INLINE CFL_PRED_TYPE get_cfl_pred_type(PLANE_TYPE plane) { | 65 | 3.61M | assert(plane > 0); | 66 | 3.61M | return (CFL_PRED_TYPE)(plane - 1); | 67 | 3.61M | } |
Unexecuted instantiation: allintra_vis.c:get_cfl_pred_type Unexecuted instantiation: compound_type.c:get_cfl_pred_type Unexecuted instantiation: encodeframe.c:get_cfl_pred_type Unexecuted instantiation: encodeframe_utils.c:get_cfl_pred_type Unexecuted instantiation: encodemb.c:get_cfl_pred_type Unexecuted instantiation: encode_strategy.c:get_cfl_pred_type Unexecuted instantiation: interp_search.c:get_cfl_pred_type Unexecuted instantiation: motion_search_facade.c:get_cfl_pred_type Unexecuted instantiation: partition_search.c:get_cfl_pred_type Unexecuted instantiation: partition_strategy.c:get_cfl_pred_type Unexecuted instantiation: nonrd_pickmode.c:get_cfl_pred_type |
68 | | |
69 | | void cfl_predict_block(MACROBLOCKD *const xd, uint8_t *dst, int dst_stride, |
70 | | TX_SIZE tx_size, int plane); |
71 | | |
72 | | void cfl_store_block(MACROBLOCKD *const xd, BLOCK_SIZE bsize, TX_SIZE tx_size); |
73 | | |
74 | | void cfl_store_tx(MACROBLOCKD *const xd, int row, int col, TX_SIZE tx_size, |
75 | | BLOCK_SIZE bsize); |
76 | | |
77 | | void cfl_store_dc_pred(MACROBLOCKD *const xd, const uint8_t *input, |
78 | | CFL_PRED_TYPE pred_plane, int width); |
79 | | |
80 | | void cfl_load_dc_pred(MACROBLOCKD *const xd, uint8_t *dst, int dst_stride, |
81 | | TX_SIZE tx_size, CFL_PRED_TYPE pred_plane); |
82 | | |
83 | | // Allows the CFL_SUBSAMPLE function to switch types depending on the bitdepth. |
84 | | #define CFL_lbd_TYPE uint8_t *cfl_type |
85 | | #define CFL_hbd_TYPE uint16_t *cfl_type |
86 | | |
87 | | // Declare a size-specific wrapper for the size-generic function. The compiler |
88 | | // will inline the size generic function in here, the advantage is that the size |
89 | | // will be constant allowing for loop unrolling and other constant propagated |
90 | | // goodness. |
91 | | #define CFL_SUBSAMPLE(arch, sub, bd, width, height) \ |
92 | | void cfl_subsample_##bd##_##sub##_##width##x##height##_##arch( \ |
93 | 3.64M | const CFL_##bd##_TYPE, int input_stride, uint16_t *output_q3) { \ |
94 | 3.64M | cfl_luma_subsampling_##sub##_##bd##_##arch(cfl_type, input_stride, \ |
95 | 3.64M | output_q3, width, height); \ |
96 | 3.64M | } cfl_subsample_lbd_420_4x4_c Line | Count | Source | 93 | 215k | const CFL_##bd##_TYPE, int input_stride, uint16_t *output_q3) { \ | 94 | 215k | cfl_luma_subsampling_##sub##_##bd##_##arch(cfl_type, input_stride, \ | 95 | 215k | output_q3, width, height); \ | 96 | 215k | } |
cfl_subsample_lbd_420_8x8_c Line | Count | Source | 93 | 188k | const CFL_##bd##_TYPE, int input_stride, uint16_t *output_q3) { \ | 94 | 188k | cfl_luma_subsampling_##sub##_##bd##_##arch(cfl_type, input_stride, \ | 95 | 188k | output_q3, width, height); \ | 96 | 188k | } |
cfl_subsample_lbd_420_16x16_c Line | Count | Source | 93 | 20.7k | const CFL_##bd##_TYPE, int input_stride, uint16_t *output_q3) { \ | 94 | 20.7k | cfl_luma_subsampling_##sub##_##bd##_##arch(cfl_type, input_stride, \ | 95 | 20.7k | output_q3, width, height); \ | 96 | 20.7k | } |
cfl_subsample_lbd_420_32x32_c Line | Count | Source | 93 | 8.94k | const CFL_##bd##_TYPE, int input_stride, uint16_t *output_q3) { \ | 94 | 8.94k | cfl_luma_subsampling_##sub##_##bd##_##arch(cfl_type, input_stride, \ | 95 | 8.94k | output_q3, width, height); \ | 96 | 8.94k | } |
cfl_subsample_lbd_420_4x8_c Line | Count | Source | 93 | 36.5k | const CFL_##bd##_TYPE, int input_stride, uint16_t *output_q3) { \ | 94 | 36.5k | cfl_luma_subsampling_##sub##_##bd##_##arch(cfl_type, input_stride, \ | 95 | 36.5k | output_q3, width, height); \ | 96 | 36.5k | } |
cfl_subsample_lbd_420_8x4_c Line | Count | Source | 93 | 56.4k | const CFL_##bd##_TYPE, int input_stride, uint16_t *output_q3) { \ | 94 | 56.4k | cfl_luma_subsampling_##sub##_##bd##_##arch(cfl_type, input_stride, \ | 95 | 56.4k | output_q3, width, height); \ | 96 | 56.4k | } |
cfl_subsample_lbd_420_8x16_c Line | Count | Source | 93 | 15.0k | const CFL_##bd##_TYPE, int input_stride, uint16_t *output_q3) { \ | 94 | 15.0k | cfl_luma_subsampling_##sub##_##bd##_##arch(cfl_type, input_stride, \ | 95 | 15.0k | output_q3, width, height); \ | 96 | 15.0k | } |
cfl_subsample_lbd_420_16x8_c Line | Count | Source | 93 | 20.7k | const CFL_##bd##_TYPE, int input_stride, uint16_t *output_q3) { \ | 94 | 20.7k | cfl_luma_subsampling_##sub##_##bd##_##arch(cfl_type, input_stride, \ | 95 | 20.7k | output_q3, width, height); \ | 96 | 20.7k | } |
cfl_subsample_lbd_420_16x32_c Line | Count | Source | 93 | 9.51k | const CFL_##bd##_TYPE, int input_stride, uint16_t *output_q3) { \ | 94 | 9.51k | cfl_luma_subsampling_##sub##_##bd##_##arch(cfl_type, input_stride, \ | 95 | 9.51k | output_q3, width, height); \ | 96 | 9.51k | } |
cfl_subsample_lbd_420_32x16_c Line | Count | Source | 93 | 5.27k | const CFL_##bd##_TYPE, int input_stride, uint16_t *output_q3) { \ | 94 | 5.27k | cfl_luma_subsampling_##sub##_##bd##_##arch(cfl_type, input_stride, \ | 95 | 5.27k | output_q3, width, height); \ | 96 | 5.27k | } |
cfl_subsample_lbd_420_4x16_c Line | Count | Source | 93 | 89.1k | const CFL_##bd##_TYPE, int input_stride, uint16_t *output_q3) { \ | 94 | 89.1k | cfl_luma_subsampling_##sub##_##bd##_##arch(cfl_type, input_stride, \ | 95 | 89.1k | output_q3, width, height); \ | 96 | 89.1k | } |
cfl_subsample_lbd_420_16x4_c Line | Count | Source | 93 | 41.5k | const CFL_##bd##_TYPE, int input_stride, uint16_t *output_q3) { \ | 94 | 41.5k | cfl_luma_subsampling_##sub##_##bd##_##arch(cfl_type, input_stride, \ | 95 | 41.5k | output_q3, width, height); \ | 96 | 41.5k | } |
cfl_subsample_lbd_420_8x32_c Line | Count | Source | 93 | 36.3k | const CFL_##bd##_TYPE, int input_stride, uint16_t *output_q3) { \ | 94 | 36.3k | cfl_luma_subsampling_##sub##_##bd##_##arch(cfl_type, input_stride, \ | 95 | 36.3k | output_q3, width, height); \ | 96 | 36.3k | } |
cfl_subsample_lbd_420_32x8_c Line | Count | Source | 93 | 9.18k | const CFL_##bd##_TYPE, int input_stride, uint16_t *output_q3) { \ | 94 | 9.18k | cfl_luma_subsampling_##sub##_##bd##_##arch(cfl_type, input_stride, \ | 95 | 9.18k | output_q3, width, height); \ | 96 | 9.18k | } |
cfl_subsample_lbd_422_4x4_c Line | Count | Source | 93 | 367 | const CFL_##bd##_TYPE, int input_stride, uint16_t *output_q3) { \ | 94 | 367 | cfl_luma_subsampling_##sub##_##bd##_##arch(cfl_type, input_stride, \ | 95 | 367 | output_q3, width, height); \ | 96 | 367 | } |
cfl_subsample_lbd_422_8x8_c Line | Count | Source | 93 | 520 | const CFL_##bd##_TYPE, int input_stride, uint16_t *output_q3) { \ | 94 | 520 | cfl_luma_subsampling_##sub##_##bd##_##arch(cfl_type, input_stride, \ | 95 | 520 | output_q3, width, height); \ | 96 | 520 | } |
cfl_subsample_lbd_422_16x16_c Line | Count | Source | 93 | 93 | const CFL_##bd##_TYPE, int input_stride, uint16_t *output_q3) { \ | 94 | 93 | cfl_luma_subsampling_##sub##_##bd##_##arch(cfl_type, input_stride, \ | 95 | 93 | output_q3, width, height); \ | 96 | 93 | } |
cfl_subsample_lbd_422_32x32_c Line | Count | Source | 93 | 41 | const CFL_##bd##_TYPE, int input_stride, uint16_t *output_q3) { \ | 94 | 41 | cfl_luma_subsampling_##sub##_##bd##_##arch(cfl_type, input_stride, \ | 95 | 41 | output_q3, width, height); \ | 96 | 41 | } |
Unexecuted instantiation: cfl_subsample_lbd_422_4x8_c cfl_subsample_lbd_422_8x4_c Line | Count | Source | 93 | 122 | const CFL_##bd##_TYPE, int input_stride, uint16_t *output_q3) { \ | 94 | 122 | cfl_luma_subsampling_##sub##_##bd##_##arch(cfl_type, input_stride, \ | 95 | 122 | output_q3, width, height); \ | 96 | 122 | } |
Unexecuted instantiation: cfl_subsample_lbd_422_8x16_c cfl_subsample_lbd_422_16x8_c Line | Count | Source | 93 | 54 | const CFL_##bd##_TYPE, int input_stride, uint16_t *output_q3) { \ | 94 | 54 | cfl_luma_subsampling_##sub##_##bd##_##arch(cfl_type, input_stride, \ | 95 | 54 | output_q3, width, height); \ | 96 | 54 | } |
Unexecuted instantiation: cfl_subsample_lbd_422_16x32_c cfl_subsample_lbd_422_32x16_c Line | Count | Source | 93 | 39 | const CFL_##bd##_TYPE, int input_stride, uint16_t *output_q3) { \ | 94 | 39 | cfl_luma_subsampling_##sub##_##bd##_##arch(cfl_type, input_stride, \ | 95 | 39 | output_q3, width, height); \ | 96 | 39 | } |
Unexecuted instantiation: cfl_subsample_lbd_422_4x16_c cfl_subsample_lbd_422_16x4_c Line | Count | Source | 93 | 75 | const CFL_##bd##_TYPE, int input_stride, uint16_t *output_q3) { \ | 94 | 75 | cfl_luma_subsampling_##sub##_##bd##_##arch(cfl_type, input_stride, \ | 95 | 75 | output_q3, width, height); \ | 96 | 75 | } |
Unexecuted instantiation: cfl_subsample_lbd_422_8x32_c cfl_subsample_lbd_422_32x8_c Line | Count | Source | 93 | 28 | const CFL_##bd##_TYPE, int input_stride, uint16_t *output_q3) { \ | 94 | 28 | cfl_luma_subsampling_##sub##_##bd##_##arch(cfl_type, input_stride, \ | 95 | 28 | output_q3, width, height); \ | 96 | 28 | } |
cfl_subsample_lbd_444_4x4_c Line | Count | Source | 93 | 264k | const CFL_##bd##_TYPE, int input_stride, uint16_t *output_q3) { \ | 94 | 264k | cfl_luma_subsampling_##sub##_##bd##_##arch(cfl_type, input_stride, \ | 95 | 264k | output_q3, width, height); \ | 96 | 264k | } |
cfl_subsample_lbd_444_8x8_c Line | Count | Source | 93 | 327k | const CFL_##bd##_TYPE, int input_stride, uint16_t *output_q3) { \ | 94 | 327k | cfl_luma_subsampling_##sub##_##bd##_##arch(cfl_type, input_stride, \ | 95 | 327k | output_q3, width, height); \ | 96 | 327k | } |
cfl_subsample_lbd_444_16x16_c Line | Count | Source | 93 | 43.8k | const CFL_##bd##_TYPE, int input_stride, uint16_t *output_q3) { \ | 94 | 43.8k | cfl_luma_subsampling_##sub##_##bd##_##arch(cfl_type, input_stride, \ | 95 | 43.8k | output_q3, width, height); \ | 96 | 43.8k | } |
cfl_subsample_lbd_444_32x32_c Line | Count | Source | 93 | 17.7k | const CFL_##bd##_TYPE, int input_stride, uint16_t *output_q3) { \ | 94 | 17.7k | cfl_luma_subsampling_##sub##_##bd##_##arch(cfl_type, input_stride, \ | 95 | 17.7k | output_q3, width, height); \ | 96 | 17.7k | } |
cfl_subsample_lbd_444_4x8_c Line | Count | Source | 93 | 40.5k | const CFL_##bd##_TYPE, int input_stride, uint16_t *output_q3) { \ | 94 | 40.5k | cfl_luma_subsampling_##sub##_##bd##_##arch(cfl_type, input_stride, \ | 95 | 40.5k | output_q3, width, height); \ | 96 | 40.5k | } |
cfl_subsample_lbd_444_8x4_c Line | Count | Source | 93 | 56.5k | const CFL_##bd##_TYPE, int input_stride, uint16_t *output_q3) { \ | 94 | 56.5k | cfl_luma_subsampling_##sub##_##bd##_##arch(cfl_type, input_stride, \ | 95 | 56.5k | output_q3, width, height); \ | 96 | 56.5k | } |
cfl_subsample_lbd_444_8x16_c Line | Count | Source | 93 | 34.3k | const CFL_##bd##_TYPE, int input_stride, uint16_t *output_q3) { \ | 94 | 34.3k | cfl_luma_subsampling_##sub##_##bd##_##arch(cfl_type, input_stride, \ | 95 | 34.3k | output_q3, width, height); \ | 96 | 34.3k | } |
cfl_subsample_lbd_444_16x8_c Line | Count | Source | 93 | 45.4k | const CFL_##bd##_TYPE, int input_stride, uint16_t *output_q3) { \ | 94 | 45.4k | cfl_luma_subsampling_##sub##_##bd##_##arch(cfl_type, input_stride, \ | 95 | 45.4k | output_q3, width, height); \ | 96 | 45.4k | } |
cfl_subsample_lbd_444_16x32_c Line | Count | Source | 93 | 8.76k | const CFL_##bd##_TYPE, int input_stride, uint16_t *output_q3) { \ | 94 | 8.76k | cfl_luma_subsampling_##sub##_##bd##_##arch(cfl_type, input_stride, \ | 95 | 8.76k | output_q3, width, height); \ | 96 | 8.76k | } |
cfl_subsample_lbd_444_32x16_c Line | Count | Source | 93 | 10.5k | const CFL_##bd##_TYPE, int input_stride, uint16_t *output_q3) { \ | 94 | 10.5k | cfl_luma_subsampling_##sub##_##bd##_##arch(cfl_type, input_stride, \ | 95 | 10.5k | output_q3, width, height); \ | 96 | 10.5k | } |
cfl_subsample_lbd_444_4x16_c Line | Count | Source | 93 | 36.3k | const CFL_##bd##_TYPE, int input_stride, uint16_t *output_q3) { \ | 94 | 36.3k | cfl_luma_subsampling_##sub##_##bd##_##arch(cfl_type, input_stride, \ | 95 | 36.3k | output_q3, width, height); \ | 96 | 36.3k | } |
cfl_subsample_lbd_444_16x4_c Line | Count | Source | 93 | 36.0k | const CFL_##bd##_TYPE, int input_stride, uint16_t *output_q3) { \ | 94 | 36.0k | cfl_luma_subsampling_##sub##_##bd##_##arch(cfl_type, input_stride, \ | 95 | 36.0k | output_q3, width, height); \ | 96 | 36.0k | } |
cfl_subsample_lbd_444_8x32_c Line | Count | Source | 93 | 17.4k | const CFL_##bd##_TYPE, int input_stride, uint16_t *output_q3) { \ | 94 | 17.4k | cfl_luma_subsampling_##sub##_##bd##_##arch(cfl_type, input_stride, \ | 95 | 17.4k | output_q3, width, height); \ | 96 | 17.4k | } |
cfl_subsample_lbd_444_32x8_c Line | Count | Source | 93 | 20.6k | const CFL_##bd##_TYPE, int input_stride, uint16_t *output_q3) { \ | 94 | 20.6k | cfl_luma_subsampling_##sub##_##bd##_##arch(cfl_type, input_stride, \ | 95 | 20.6k | output_q3, width, height); \ | 96 | 20.6k | } |
cfl_subsample_hbd_420_4x4_c Line | Count | Source | 93 | 220k | const CFL_##bd##_TYPE, int input_stride, uint16_t *output_q3) { \ | 94 | 220k | cfl_luma_subsampling_##sub##_##bd##_##arch(cfl_type, input_stride, \ | 95 | 220k | output_q3, width, height); \ | 96 | 220k | } |
cfl_subsample_hbd_420_8x8_c Line | Count | Source | 93 | 225k | const CFL_##bd##_TYPE, int input_stride, uint16_t *output_q3) { \ | 94 | 225k | cfl_luma_subsampling_##sub##_##bd##_##arch(cfl_type, input_stride, \ | 95 | 225k | output_q3, width, height); \ | 96 | 225k | } |
cfl_subsample_hbd_420_16x16_c Line | Count | Source | 93 | 62.1k | const CFL_##bd##_TYPE, int input_stride, uint16_t *output_q3) { \ | 94 | 62.1k | cfl_luma_subsampling_##sub##_##bd##_##arch(cfl_type, input_stride, \ | 95 | 62.1k | output_q3, width, height); \ | 96 | 62.1k | } |
cfl_subsample_hbd_420_32x32_c Line | Count | Source | 93 | 24.7k | const CFL_##bd##_TYPE, int input_stride, uint16_t *output_q3) { \ | 94 | 24.7k | cfl_luma_subsampling_##sub##_##bd##_##arch(cfl_type, input_stride, \ | 95 | 24.7k | output_q3, width, height); \ | 96 | 24.7k | } |
cfl_subsample_hbd_420_4x8_c Line | Count | Source | 93 | 94.1k | const CFL_##bd##_TYPE, int input_stride, uint16_t *output_q3) { \ | 94 | 94.1k | cfl_luma_subsampling_##sub##_##bd##_##arch(cfl_type, input_stride, \ | 95 | 94.1k | output_q3, width, height); \ | 96 | 94.1k | } |
cfl_subsample_hbd_420_8x4_c Line | Count | Source | 93 | 125k | const CFL_##bd##_TYPE, int input_stride, uint16_t *output_q3) { \ | 94 | 125k | cfl_luma_subsampling_##sub##_##bd##_##arch(cfl_type, input_stride, \ | 95 | 125k | output_q3, width, height); \ | 96 | 125k | } |
cfl_subsample_hbd_420_8x16_c Line | Count | Source | 93 | 42.2k | const CFL_##bd##_TYPE, int input_stride, uint16_t *output_q3) { \ | 94 | 42.2k | cfl_luma_subsampling_##sub##_##bd##_##arch(cfl_type, input_stride, \ | 95 | 42.2k | output_q3, width, height); \ | 96 | 42.2k | } |
cfl_subsample_hbd_420_16x8_c Line | Count | Source | 93 | 64.6k | const CFL_##bd##_TYPE, int input_stride, uint16_t *output_q3) { \ | 94 | 64.6k | cfl_luma_subsampling_##sub##_##bd##_##arch(cfl_type, input_stride, \ | 95 | 64.6k | output_q3, width, height); \ | 96 | 64.6k | } |
cfl_subsample_hbd_420_16x32_c Line | Count | Source | 93 | 15.2k | const CFL_##bd##_TYPE, int input_stride, uint16_t *output_q3) { \ | 94 | 15.2k | cfl_luma_subsampling_##sub##_##bd##_##arch(cfl_type, input_stride, \ | 95 | 15.2k | output_q3, width, height); \ | 96 | 15.2k | } |
cfl_subsample_hbd_420_32x16_c Line | Count | Source | 93 | 14.6k | const CFL_##bd##_TYPE, int input_stride, uint16_t *output_q3) { \ | 94 | 14.6k | cfl_luma_subsampling_##sub##_##bd##_##arch(cfl_type, input_stride, \ | 95 | 14.6k | output_q3, width, height); \ | 96 | 14.6k | } |
cfl_subsample_hbd_420_4x16_c Line | Count | Source | 93 | 107k | const CFL_##bd##_TYPE, int input_stride, uint16_t *output_q3) { \ | 94 | 107k | cfl_luma_subsampling_##sub##_##bd##_##arch(cfl_type, input_stride, \ | 95 | 107k | output_q3, width, height); \ | 96 | 107k | } |
cfl_subsample_hbd_420_16x4_c Line | Count | Source | 93 | 135k | const CFL_##bd##_TYPE, int input_stride, uint16_t *output_q3) { \ | 94 | 135k | cfl_luma_subsampling_##sub##_##bd##_##arch(cfl_type, input_stride, \ | 95 | 135k | output_q3, width, height); \ | 96 | 135k | } |
cfl_subsample_hbd_420_8x32_c Line | Count | Source | 93 | 58.0k | const CFL_##bd##_TYPE, int input_stride, uint16_t *output_q3) { \ | 94 | 58.0k | cfl_luma_subsampling_##sub##_##bd##_##arch(cfl_type, input_stride, \ | 95 | 58.0k | output_q3, width, height); \ | 96 | 58.0k | } |
cfl_subsample_hbd_420_32x8_c Line | Count | Source | 93 | 25.3k | const CFL_##bd##_TYPE, int input_stride, uint16_t *output_q3) { \ | 94 | 25.3k | cfl_luma_subsampling_##sub##_##bd##_##arch(cfl_type, input_stride, \ | 95 | 25.3k | output_q3, width, height); \ | 96 | 25.3k | } |
cfl_subsample_hbd_422_4x4_c Line | Count | Source | 93 | 564 | const CFL_##bd##_TYPE, int input_stride, uint16_t *output_q3) { \ | 94 | 564 | cfl_luma_subsampling_##sub##_##bd##_##arch(cfl_type, input_stride, \ | 95 | 564 | output_q3, width, height); \ | 96 | 564 | } |
cfl_subsample_hbd_422_8x8_c Line | Count | Source | 93 | 1.46k | const CFL_##bd##_TYPE, int input_stride, uint16_t *output_q3) { \ | 94 | 1.46k | cfl_luma_subsampling_##sub##_##bd##_##arch(cfl_type, input_stride, \ | 95 | 1.46k | output_q3, width, height); \ | 96 | 1.46k | } |
cfl_subsample_hbd_422_16x16_c Line | Count | Source | 93 | 167 | const CFL_##bd##_TYPE, int input_stride, uint16_t *output_q3) { \ | 94 | 167 | cfl_luma_subsampling_##sub##_##bd##_##arch(cfl_type, input_stride, \ | 95 | 167 | output_q3, width, height); \ | 96 | 167 | } |
cfl_subsample_hbd_422_32x32_c Line | Count | Source | 93 | 260 | const CFL_##bd##_TYPE, int input_stride, uint16_t *output_q3) { \ | 94 | 260 | cfl_luma_subsampling_##sub##_##bd##_##arch(cfl_type, input_stride, \ | 95 | 260 | output_q3, width, height); \ | 96 | 260 | } |
Unexecuted instantiation: cfl_subsample_hbd_422_4x8_c cfl_subsample_hbd_422_8x4_c Line | Count | Source | 93 | 144 | const CFL_##bd##_TYPE, int input_stride, uint16_t *output_q3) { \ | 94 | 144 | cfl_luma_subsampling_##sub##_##bd##_##arch(cfl_type, input_stride, \ | 95 | 144 | output_q3, width, height); \ | 96 | 144 | } |
Unexecuted instantiation: cfl_subsample_hbd_422_8x16_c cfl_subsample_hbd_422_16x8_c Line | Count | Source | 93 | 171 | const CFL_##bd##_TYPE, int input_stride, uint16_t *output_q3) { \ | 94 | 171 | cfl_luma_subsampling_##sub##_##bd##_##arch(cfl_type, input_stride, \ | 95 | 171 | output_q3, width, height); \ | 96 | 171 | } |
Unexecuted instantiation: cfl_subsample_hbd_422_16x32_c cfl_subsample_hbd_422_32x16_c Line | Count | Source | 93 | 134 | const CFL_##bd##_TYPE, int input_stride, uint16_t *output_q3) { \ | 94 | 134 | cfl_luma_subsampling_##sub##_##bd##_##arch(cfl_type, input_stride, \ | 95 | 134 | output_q3, width, height); \ | 96 | 134 | } |
Unexecuted instantiation: cfl_subsample_hbd_422_4x16_c cfl_subsample_hbd_422_16x4_c Line | Count | Source | 93 | 163 | const CFL_##bd##_TYPE, int input_stride, uint16_t *output_q3) { \ | 94 | 163 | cfl_luma_subsampling_##sub##_##bd##_##arch(cfl_type, input_stride, \ | 95 | 163 | output_q3, width, height); \ | 96 | 163 | } |
Unexecuted instantiation: cfl_subsample_hbd_422_8x32_c cfl_subsample_hbd_422_32x8_c Line | Count | Source | 93 | 209 | const CFL_##bd##_TYPE, int input_stride, uint16_t *output_q3) { \ | 94 | 209 | cfl_luma_subsampling_##sub##_##bd##_##arch(cfl_type, input_stride, \ | 95 | 209 | output_q3, width, height); \ | 96 | 209 | } |
cfl_subsample_hbd_444_4x4_c Line | Count | Source | 93 | 168k | const CFL_##bd##_TYPE, int input_stride, uint16_t *output_q3) { \ | 94 | 168k | cfl_luma_subsampling_##sub##_##bd##_##arch(cfl_type, input_stride, \ | 95 | 168k | output_q3, width, height); \ | 96 | 168k | } |
cfl_subsample_hbd_444_8x8_c Line | Count | Source | 93 | 307k | const CFL_##bd##_TYPE, int input_stride, uint16_t *output_q3) { \ | 94 | 307k | cfl_luma_subsampling_##sub##_##bd##_##arch(cfl_type, input_stride, \ | 95 | 307k | output_q3, width, height); \ | 96 | 307k | } |
cfl_subsample_hbd_444_16x16_c Line | Count | Source | 93 | 27.3k | const CFL_##bd##_TYPE, int input_stride, uint16_t *output_q3) { \ | 94 | 27.3k | cfl_luma_subsampling_##sub##_##bd##_##arch(cfl_type, input_stride, \ | 95 | 27.3k | output_q3, width, height); \ | 96 | 27.3k | } |
cfl_subsample_hbd_444_32x32_c Line | Count | Source | 93 | 8.61k | const CFL_##bd##_TYPE, int input_stride, uint16_t *output_q3) { \ | 94 | 8.61k | cfl_luma_subsampling_##sub##_##bd##_##arch(cfl_type, input_stride, \ | 95 | 8.61k | output_q3, width, height); \ | 96 | 8.61k | } |
cfl_subsample_hbd_444_4x8_c Line | Count | Source | 93 | 28.0k | const CFL_##bd##_TYPE, int input_stride, uint16_t *output_q3) { \ | 94 | 28.0k | cfl_luma_subsampling_##sub##_##bd##_##arch(cfl_type, input_stride, \ | 95 | 28.0k | output_q3, width, height); \ | 96 | 28.0k | } |
cfl_subsample_hbd_444_8x4_c Line | Count | Source | 93 | 45.9k | const CFL_##bd##_TYPE, int input_stride, uint16_t *output_q3) { \ | 94 | 45.9k | cfl_luma_subsampling_##sub##_##bd##_##arch(cfl_type, input_stride, \ | 95 | 45.9k | output_q3, width, height); \ | 96 | 45.9k | } |
cfl_subsample_hbd_444_8x16_c Line | Count | Source | 93 | 17.0k | const CFL_##bd##_TYPE, int input_stride, uint16_t *output_q3) { \ | 94 | 17.0k | cfl_luma_subsampling_##sub##_##bd##_##arch(cfl_type, input_stride, \ | 95 | 17.0k | output_q3, width, height); \ | 96 | 17.0k | } |
cfl_subsample_hbd_444_16x8_c Line | Count | Source | 93 | 23.9k | const CFL_##bd##_TYPE, int input_stride, uint16_t *output_q3) { \ | 94 | 23.9k | cfl_luma_subsampling_##sub##_##bd##_##arch(cfl_type, input_stride, \ | 95 | 23.9k | output_q3, width, height); \ | 96 | 23.9k | } |
cfl_subsample_hbd_444_16x32_c Line | Count | Source | 93 | 4.99k | const CFL_##bd##_TYPE, int input_stride, uint16_t *output_q3) { \ | 94 | 4.99k | cfl_luma_subsampling_##sub##_##bd##_##arch(cfl_type, input_stride, \ | 95 | 4.99k | output_q3, width, height); \ | 96 | 4.99k | } |
cfl_subsample_hbd_444_32x16_c Line | Count | Source | 93 | 5.94k | const CFL_##bd##_TYPE, int input_stride, uint16_t *output_q3) { \ | 94 | 5.94k | cfl_luma_subsampling_##sub##_##bd##_##arch(cfl_type, input_stride, \ | 95 | 5.94k | output_q3, width, height); \ | 96 | 5.94k | } |
cfl_subsample_hbd_444_4x16_c Line | Count | Source | 93 | 36.9k | const CFL_##bd##_TYPE, int input_stride, uint16_t *output_q3) { \ | 94 | 36.9k | cfl_luma_subsampling_##sub##_##bd##_##arch(cfl_type, input_stride, \ | 95 | 36.9k | output_q3, width, height); \ | 96 | 36.9k | } |
cfl_subsample_hbd_444_16x4_c Line | Count | Source | 93 | 19.8k | const CFL_##bd##_TYPE, int input_stride, uint16_t *output_q3) { \ | 94 | 19.8k | cfl_luma_subsampling_##sub##_##bd##_##arch(cfl_type, input_stride, \ | 95 | 19.8k | output_q3, width, height); \ | 96 | 19.8k | } |
cfl_subsample_hbd_444_8x32_c Line | Count | Source | 93 | 11.0k | const CFL_##bd##_TYPE, int input_stride, uint16_t *output_q3) { \ | 94 | 11.0k | cfl_luma_subsampling_##sub##_##bd##_##arch(cfl_type, input_stride, \ | 95 | 11.0k | output_q3, width, height); \ | 96 | 11.0k | } |
cfl_subsample_hbd_444_32x8_c Line | Count | Source | 93 | 9.35k | const CFL_##bd##_TYPE, int input_stride, uint16_t *output_q3) { \ | 94 | 9.35k | cfl_luma_subsampling_##sub##_##bd##_##arch(cfl_type, input_stride, \ | 95 | 9.35k | output_q3, width, height); \ | 96 | 9.35k | } |
|
97 | | |
98 | | // Declare size-specific wrappers for all valid CfL sizes. |
99 | | #define CFL_SUBSAMPLE_FUNCTIONS(arch, sub, bd) \ |
100 | | CFL_SUBSAMPLE(arch, sub, bd, 4, 4) \ |
101 | | CFL_SUBSAMPLE(arch, sub, bd, 8, 8) \ |
102 | | CFL_SUBSAMPLE(arch, sub, bd, 16, 16) \ |
103 | | CFL_SUBSAMPLE(arch, sub, bd, 32, 32) \ |
104 | | CFL_SUBSAMPLE(arch, sub, bd, 4, 8) \ |
105 | | CFL_SUBSAMPLE(arch, sub, bd, 8, 4) \ |
106 | | CFL_SUBSAMPLE(arch, sub, bd, 8, 16) \ |
107 | | CFL_SUBSAMPLE(arch, sub, bd, 16, 8) \ |
108 | | CFL_SUBSAMPLE(arch, sub, bd, 16, 32) \ |
109 | | CFL_SUBSAMPLE(arch, sub, bd, 32, 16) \ |
110 | | CFL_SUBSAMPLE(arch, sub, bd, 4, 16) \ |
111 | | CFL_SUBSAMPLE(arch, sub, bd, 16, 4) \ |
112 | | CFL_SUBSAMPLE(arch, sub, bd, 8, 32) \ |
113 | | CFL_SUBSAMPLE(arch, sub, bd, 32, 8) \ |
114 | | cfl_subsample_##bd##_fn cfl_get_luma_subsampling_##sub##_##bd##_##arch( \ |
115 | 3.64M | TX_SIZE tx_size) { \ |
116 | 3.64M | CFL_SUBSAMPLE_FUNCTION_ARRAY(arch, sub, bd) \ |
117 | 3.64M | return subfn_##sub[tx_size]; \ |
118 | 3.64M | } cfl_get_luma_subsampling_420_lbd_c Line | Count | Source | 115 | 753k | TX_SIZE tx_size) { \ | 116 | 753k | CFL_SUBSAMPLE_FUNCTION_ARRAY(arch, sub, bd) \ | 117 | 753k | return subfn_##sub[tx_size]; \ | 118 | 753k | } |
cfl_get_luma_subsampling_422_lbd_c Line | Count | Source | 115 | 1.33k | TX_SIZE tx_size) { \ | 116 | 1.33k | CFL_SUBSAMPLE_FUNCTION_ARRAY(arch, sub, bd) \ | 117 | 1.33k | return subfn_##sub[tx_size]; \ | 118 | 1.33k | } |
cfl_get_luma_subsampling_444_lbd_c Line | Count | Source | 115 | 960k | TX_SIZE tx_size) { \ | 116 | 960k | CFL_SUBSAMPLE_FUNCTION_ARRAY(arch, sub, bd) \ | 117 | 960k | return subfn_##sub[tx_size]; \ | 118 | 960k | } |
cfl_get_luma_subsampling_420_hbd_c Line | Count | Source | 115 | 1.21M | TX_SIZE tx_size) { \ | 116 | 1.21M | CFL_SUBSAMPLE_FUNCTION_ARRAY(arch, sub, bd) \ | 117 | 1.21M | return subfn_##sub[tx_size]; \ | 118 | 1.21M | } |
cfl_get_luma_subsampling_422_hbd_c Line | Count | Source | 115 | 3.27k | TX_SIZE tx_size) { \ | 116 | 3.27k | CFL_SUBSAMPLE_FUNCTION_ARRAY(arch, sub, bd) \ | 117 | 3.27k | return subfn_##sub[tx_size]; \ | 118 | 3.27k | } |
cfl_get_luma_subsampling_444_hbd_c Line | Count | Source | 115 | 714k | TX_SIZE tx_size) { \ | 116 | 714k | CFL_SUBSAMPLE_FUNCTION_ARRAY(arch, sub, bd) \ | 117 | 714k | return subfn_##sub[tx_size]; \ | 118 | 714k | } |
|
119 | | |
120 | | // Declare an architecture-specific array of function pointers for size-specific |
121 | | // wrappers. |
122 | | #define CFL_SUBSAMPLE_FUNCTION_ARRAY(arch, sub, bd) \ |
123 | 3.64M | static const cfl_subsample_##bd##_fn subfn_##sub[TX_SIZES_ALL] = { \ |
124 | 3.64M | cfl_subsample_##bd##_##sub##_4x4_##arch, /* 4x4 */ \ |
125 | 3.64M | cfl_subsample_##bd##_##sub##_8x8_##arch, /* 8x8 */ \ |
126 | 3.64M | cfl_subsample_##bd##_##sub##_16x16_##arch, /* 16x16 */ \ |
127 | 3.64M | cfl_subsample_##bd##_##sub##_32x32_##arch, /* 32x32 */ \ |
128 | 3.64M | NULL, /* 64x64 (invalid CFL size) */ \ |
129 | 3.64M | cfl_subsample_##bd##_##sub##_4x8_##arch, /* 4x8 */ \ |
130 | 3.64M | cfl_subsample_##bd##_##sub##_8x4_##arch, /* 8x4 */ \ |
131 | 3.64M | cfl_subsample_##bd##_##sub##_8x16_##arch, /* 8x16 */ \ |
132 | 3.64M | cfl_subsample_##bd##_##sub##_16x8_##arch, /* 16x8 */ \ |
133 | 3.64M | cfl_subsample_##bd##_##sub##_16x32_##arch, /* 16x32 */ \ |
134 | 3.64M | cfl_subsample_##bd##_##sub##_32x16_##arch, /* 32x16 */ \ |
135 | 3.64M | NULL, /* 32x64 (invalid CFL size) */ \ |
136 | 3.64M | NULL, /* 64x32 (invalid CFL size) */ \ |
137 | 3.64M | cfl_subsample_##bd##_##sub##_4x16_##arch, /* 4x16 */ \ |
138 | 3.64M | cfl_subsample_##bd##_##sub##_16x4_##arch, /* 16x4 */ \ |
139 | 3.64M | cfl_subsample_##bd##_##sub##_8x32_##arch, /* 8x32 */ \ |
140 | 3.64M | cfl_subsample_##bd##_##sub##_32x8_##arch, /* 32x8 */ \ |
141 | 3.64M | NULL, /* 16x64 (invalid CFL size) */ \ |
142 | 3.64M | NULL, /* 64x16 (invalid CFL size) */ \ |
143 | 3.64M | }; |
144 | | |
145 | | // The RTCD script does not support passing in an array, so we wrap it in this |
146 | | // function. |
147 | | #if CONFIG_AV1_HIGHBITDEPTH |
148 | | #define CFL_GET_SUBSAMPLE_FUNCTION(arch) \ |
149 | | CFL_SUBSAMPLE_FUNCTIONS(arch, 420, lbd) \ |
150 | | CFL_SUBSAMPLE_FUNCTIONS(arch, 422, lbd) \ |
151 | | CFL_SUBSAMPLE_FUNCTIONS(arch, 444, lbd) \ |
152 | | CFL_SUBSAMPLE_FUNCTIONS(arch, 420, hbd) \ |
153 | | CFL_SUBSAMPLE_FUNCTIONS(arch, 422, hbd) \ |
154 | | CFL_SUBSAMPLE_FUNCTIONS(arch, 444, hbd) |
155 | | #else |
156 | | #define CFL_GET_SUBSAMPLE_FUNCTION(arch) \ |
157 | | CFL_SUBSAMPLE_FUNCTIONS(arch, 420, lbd) \ |
158 | | CFL_SUBSAMPLE_FUNCTIONS(arch, 422, lbd) \ |
159 | | CFL_SUBSAMPLE_FUNCTIONS(arch, 444, lbd) |
160 | | #endif |
161 | | |
162 | | // Declare a size-specific wrapper for the size-generic function. The compiler |
163 | | // will inline the size generic function in here, the advantage is that the size |
164 | | // will be constant allowing for loop unrolling and other constant propagated |
165 | | // goodness. |
166 | | #define CFL_SUB_AVG_X(arch, width, height, round_offset, num_pel_log2) \ |
167 | | void cfl_subtract_average_##width##x##height##_##arch(const uint16_t *src, \ |
168 | 1.80M | int16_t *dst) { \ |
169 | 1.80M | subtract_average_##arch(src, dst, width, height, round_offset, \ |
170 | 1.80M | num_pel_log2); \ |
171 | 1.80M | } cfl_subtract_average_4x4_c Line | Count | Source | 168 | 301k | int16_t *dst) { \ | 169 | 301k | subtract_average_##arch(src, dst, width, height, round_offset, \ | 170 | 301k | num_pel_log2); \ | 171 | 301k | } |
cfl_subtract_average_4x8_c Line | Count | Source | 168 | 201k | int16_t *dst) { \ | 169 | 201k | subtract_average_##arch(src, dst, width, height, round_offset, \ | 170 | 201k | num_pel_log2); \ | 171 | 201k | } |
cfl_subtract_average_4x16_c Line | Count | Source | 168 | 211k | int16_t *dst) { \ | 169 | 211k | subtract_average_##arch(src, dst, width, height, round_offset, \ | 170 | 211k | num_pel_log2); \ | 171 | 211k | } |
cfl_subtract_average_8x4_c Line | Count | Source | 168 | 202k | int16_t *dst) { \ | 169 | 202k | subtract_average_##arch(src, dst, width, height, round_offset, \ | 170 | 202k | num_pel_log2); \ | 171 | 202k | } |
cfl_subtract_average_8x8_c Line | Count | Source | 168 | 256k | int16_t *dst) { \ | 169 | 256k | subtract_average_##arch(src, dst, width, height, round_offset, \ | 170 | 256k | num_pel_log2); \ | 171 | 256k | } |
cfl_subtract_average_8x16_c Line | Count | Source | 168 | 101k | int16_t *dst) { \ | 169 | 101k | subtract_average_##arch(src, dst, width, height, round_offset, \ | 170 | 101k | num_pel_log2); \ | 171 | 101k | } |
cfl_subtract_average_8x32_c Line | Count | Source | 168 | 36.7k | int16_t *dst) { \ | 169 | 36.7k | subtract_average_##arch(src, dst, width, height, round_offset, \ | 170 | 36.7k | num_pel_log2); \ | 171 | 36.7k | } |
cfl_subtract_average_16x4_c Line | Count | Source | 168 | 121k | int16_t *dst) { \ | 169 | 121k | subtract_average_##arch(src, dst, width, height, round_offset, \ | 170 | 121k | num_pel_log2); \ | 171 | 121k | } |
cfl_subtract_average_16x8_c Line | Count | Source | 168 | 122k | int16_t *dst) { \ | 169 | 122k | subtract_average_##arch(src, dst, width, height, round_offset, \ | 170 | 122k | num_pel_log2); \ | 171 | 122k | } |
cfl_subtract_average_16x16_c Line | Count | Source | 168 | 131k | int16_t *dst) { \ | 169 | 131k | subtract_average_##arch(src, dst, width, height, round_offset, \ | 170 | 131k | num_pel_log2); \ | 171 | 131k | } |
cfl_subtract_average_16x32_c Line | Count | Source | 168 | 20.0k | int16_t *dst) { \ | 169 | 20.0k | subtract_average_##arch(src, dst, width, height, round_offset, \ | 170 | 20.0k | num_pel_log2); \ | 171 | 20.0k | } |
cfl_subtract_average_32x8_c Line | Count | Source | 168 | 39.3k | int16_t *dst) { \ | 169 | 39.3k | subtract_average_##arch(src, dst, width, height, round_offset, \ | 170 | 39.3k | num_pel_log2); \ | 171 | 39.3k | } |
cfl_subtract_average_32x16_c Line | Count | Source | 168 | 23.3k | int16_t *dst) { \ | 169 | 23.3k | subtract_average_##arch(src, dst, width, height, round_offset, \ | 170 | 23.3k | num_pel_log2); \ | 171 | 23.3k | } |
cfl_subtract_average_32x32_c Line | Count | Source | 168 | 37.2k | int16_t *dst) { \ | 169 | 37.2k | subtract_average_##arch(src, dst, width, height, round_offset, \ | 170 | 37.2k | num_pel_log2); \ | 171 | 37.2k | } |
|
172 | | |
173 | | // Declare size-specific wrappers for all valid CfL sizes. |
174 | | #define CFL_SUB_AVG_FN(arch) \ |
175 | | CFL_SUB_AVG_X(arch, 4, 4, 8, 4) \ |
176 | | CFL_SUB_AVG_X(arch, 4, 8, 16, 5) \ |
177 | | CFL_SUB_AVG_X(arch, 4, 16, 32, 6) \ |
178 | | CFL_SUB_AVG_X(arch, 8, 4, 16, 5) \ |
179 | | CFL_SUB_AVG_X(arch, 8, 8, 32, 6) \ |
180 | | CFL_SUB_AVG_X(arch, 8, 16, 64, 7) \ |
181 | | CFL_SUB_AVG_X(arch, 8, 32, 128, 8) \ |
182 | | CFL_SUB_AVG_X(arch, 16, 4, 32, 6) \ |
183 | | CFL_SUB_AVG_X(arch, 16, 8, 64, 7) \ |
184 | | CFL_SUB_AVG_X(arch, 16, 16, 128, 8) \ |
185 | | CFL_SUB_AVG_X(arch, 16, 32, 256, 9) \ |
186 | | CFL_SUB_AVG_X(arch, 32, 8, 128, 8) \ |
187 | | CFL_SUB_AVG_X(arch, 32, 16, 256, 9) \ |
188 | | CFL_SUB_AVG_X(arch, 32, 32, 512, 10) \ |
189 | | cfl_subtract_average_fn cfl_get_subtract_average_fn_##arch( \ |
190 | 1.80M | TX_SIZE tx_size) { \ |
191 | 1.80M | static const cfl_subtract_average_fn sub_avg[TX_SIZES_ALL] = { \ |
192 | 1.80M | cfl_subtract_average_4x4_##arch, /* 4x4 */ \ |
193 | 1.80M | cfl_subtract_average_8x8_##arch, /* 8x8 */ \ |
194 | 1.80M | cfl_subtract_average_16x16_##arch, /* 16x16 */ \ |
195 | 1.80M | cfl_subtract_average_32x32_##arch, /* 32x32 */ \ |
196 | 1.80M | NULL, /* 64x64 (invalid CFL size) */ \ |
197 | 1.80M | cfl_subtract_average_4x8_##arch, /* 4x8 */ \ |
198 | 1.80M | cfl_subtract_average_8x4_##arch, /* 8x4 */ \ |
199 | 1.80M | cfl_subtract_average_8x16_##arch, /* 8x16 */ \ |
200 | 1.80M | cfl_subtract_average_16x8_##arch, /* 16x8 */ \ |
201 | 1.80M | cfl_subtract_average_16x32_##arch, /* 16x32 */ \ |
202 | 1.80M | cfl_subtract_average_32x16_##arch, /* 32x16 */ \ |
203 | 1.80M | NULL, /* 32x64 (invalid CFL size) */ \ |
204 | 1.80M | NULL, /* 64x32 (invalid CFL size) */ \ |
205 | 1.80M | cfl_subtract_average_4x16_##arch, /* 4x16 (invalid CFL size) */ \ |
206 | 1.80M | cfl_subtract_average_16x4_##arch, /* 16x4 (invalid CFL size) */ \ |
207 | 1.80M | cfl_subtract_average_8x32_##arch, /* 8x32 (invalid CFL size) */ \ |
208 | 1.80M | cfl_subtract_average_32x8_##arch, /* 32x8 (invalid CFL size) */ \ |
209 | 1.80M | NULL, /* 16x64 (invalid CFL size) */ \ |
210 | 1.80M | NULL, /* 64x16 (invalid CFL size) */ \ |
211 | 1.80M | }; \ |
212 | 1.80M | /* Modulo TX_SIZES_ALL to ensure that an attacker won't be able to */ \ |
213 | 1.80M | /* index the function pointer array out of bounds. */ \ |
214 | 1.80M | return sub_avg[tx_size % TX_SIZES_ALL]; \ |
215 | 1.80M | } |
216 | | |
217 | | // For VSX SIMD optimization, the C versions of width == 4 subtract are |
218 | | // faster than the VSX. As such, the VSX code calls the C versions. |
219 | | void cfl_subtract_average_4x4_c(const uint16_t *src, int16_t *dst); |
220 | | void cfl_subtract_average_4x8_c(const uint16_t *src, int16_t *dst); |
221 | | void cfl_subtract_average_4x16_c(const uint16_t *src, int16_t *dst); |
222 | | |
223 | | #define CFL_PREDICT_lbd(arch, width, height) \ |
224 | | void cfl_predict_lbd_##width##x##height##_##arch( \ |
225 | | const int16_t *pred_buf_q3, uint8_t *dst, int dst_stride, \ |
226 | 1.73M | int alpha_q3) { \ |
227 | 1.73M | cfl_predict_lbd_##arch(pred_buf_q3, dst, dst_stride, alpha_q3, width, \ |
228 | 1.73M | height); \ |
229 | 1.73M | } Line | Count | Source | 226 | 231k | int alpha_q3) { \ | 227 | 231k | cfl_predict_lbd_##arch(pred_buf_q3, dst, dst_stride, alpha_q3, width, \ | 228 | 231k | height); \ | 229 | 231k | } |
Line | Count | Source | 226 | 202k | int alpha_q3) { \ | 227 | 202k | cfl_predict_lbd_##arch(pred_buf_q3, dst, dst_stride, alpha_q3, width, \ | 228 | 202k | height); \ | 229 | 202k | } |
Line | Count | Source | 226 | 184k | int alpha_q3) { \ | 227 | 184k | cfl_predict_lbd_##arch(pred_buf_q3, dst, dst_stride, alpha_q3, width, \ | 228 | 184k | height); \ | 229 | 184k | } |
Line | Count | Source | 226 | 160k | int alpha_q3) { \ | 227 | 160k | cfl_predict_lbd_##arch(pred_buf_q3, dst, dst_stride, alpha_q3, width, \ | 228 | 160k | height); \ | 229 | 160k | } |
Line | Count | Source | 226 | 261k | int alpha_q3) { \ | 227 | 261k | cfl_predict_lbd_##arch(pred_buf_q3, dst, dst_stride, alpha_q3, width, \ | 228 | 261k | height); \ | 229 | 261k | } |
Line | Count | Source | 226 | 115k | int alpha_q3) { \ | 227 | 115k | cfl_predict_lbd_##arch(pred_buf_q3, dst, dst_stride, alpha_q3, width, \ | 228 | 115k | height); \ | 229 | 115k | } |
Line | Count | Source | 226 | 42.0k | int alpha_q3) { \ | 227 | 42.0k | cfl_predict_lbd_##arch(pred_buf_q3, dst, dst_stride, alpha_q3, width, \ | 228 | 42.0k | height); \ | 229 | 42.0k | } |
Line | Count | Source | 226 | 121k | int alpha_q3) { \ | 227 | 121k | cfl_predict_lbd_##arch(pred_buf_q3, dst, dst_stride, alpha_q3, width, \ | 228 | 121k | height); \ | 229 | 121k | } |
Line | Count | Source | 226 | 136k | int alpha_q3) { \ | 227 | 136k | cfl_predict_lbd_##arch(pred_buf_q3, dst, dst_stride, alpha_q3, width, \ | 228 | 136k | height); \ | 229 | 136k | } |
Line | Count | Source | 226 | 134k | int alpha_q3) { \ | 227 | 134k | cfl_predict_lbd_##arch(pred_buf_q3, dst, dst_stride, alpha_q3, width, \ | 228 | 134k | height); \ | 229 | 134k | } |
Line | Count | Source | 226 | 23.1k | int alpha_q3) { \ | 227 | 23.1k | cfl_predict_lbd_##arch(pred_buf_q3, dst, dst_stride, alpha_q3, width, \ | 228 | 23.1k | height); \ | 229 | 23.1k | } |
Line | Count | Source | 226 | 50.5k | int alpha_q3) { \ | 227 | 50.5k | cfl_predict_lbd_##arch(pred_buf_q3, dst, dst_stride, alpha_q3, width, \ | 228 | 50.5k | height); \ | 229 | 50.5k | } |
Line | Count | Source | 226 | 26.2k | int alpha_q3) { \ | 227 | 26.2k | cfl_predict_lbd_##arch(pred_buf_q3, dst, dst_stride, alpha_q3, width, \ | 228 | 26.2k | height); \ | 229 | 26.2k | } |
Line | Count | Source | 226 | 46.4k | int alpha_q3) { \ | 227 | 46.4k | cfl_predict_lbd_##arch(pred_buf_q3, dst, dst_stride, alpha_q3, width, \ | 228 | 46.4k | height); \ | 229 | 46.4k | } |
|
230 | | |
231 | | #if CONFIG_AV1_HIGHBITDEPTH |
232 | | #define CFL_PREDICT_hbd(arch, width, height) \ |
233 | | void cfl_predict_hbd_##width##x##height##_##arch( \ |
234 | | const int16_t *pred_buf_q3, uint16_t *dst, int dst_stride, int alpha_q3, \ |
235 | 1.87M | int bd) { \ |
236 | 1.87M | cfl_predict_hbd_##arch(pred_buf_q3, dst, dst_stride, alpha_q3, bd, width, \ |
237 | 1.87M | height); \ |
238 | 1.87M | } Line | Count | Source | 235 | 371k | int bd) { \ | 236 | 371k | cfl_predict_hbd_##arch(pred_buf_q3, dst, dst_stride, alpha_q3, bd, width, \ | 237 | 371k | height); \ | 238 | 371k | } |
Line | Count | Source | 235 | 200k | int bd) { \ | 236 | 200k | cfl_predict_hbd_##arch(pred_buf_q3, dst, dst_stride, alpha_q3, bd, width, \ | 237 | 200k | height); \ | 238 | 200k | } |
Line | Count | Source | 235 | 237k | int bd) { \ | 236 | 237k | cfl_predict_hbd_##arch(pred_buf_q3, dst, dst_stride, alpha_q3, bd, width, \ | 237 | 237k | height); \ | 238 | 237k | } |
Line | Count | Source | 235 | 244k | int bd) { \ | 236 | 244k | cfl_predict_hbd_##arch(pred_buf_q3, dst, dst_stride, alpha_q3, bd, width, \ | 237 | 244k | height); \ | 238 | 244k | } |
Line | Count | Source | 235 | 250k | int bd) { \ | 236 | 250k | cfl_predict_hbd_##arch(pred_buf_q3, dst, dst_stride, alpha_q3, bd, width, \ | 237 | 250k | height); \ | 238 | 250k | } |
Line | Count | Source | 235 | 88.5k | int bd) { \ | 236 | 88.5k | cfl_predict_hbd_##arch(pred_buf_q3, dst, dst_stride, alpha_q3, bd, width, \ | 237 | 88.5k | height); \ | 238 | 88.5k | } |
Line | Count | Source | 235 | 31.3k | int bd) { \ | 236 | 31.3k | cfl_predict_hbd_##arch(pred_buf_q3, dst, dst_stride, alpha_q3, bd, width, \ | 237 | 31.3k | height); \ | 238 | 31.3k | } |
Line | Count | Source | 235 | 121k | int bd) { \ | 236 | 121k | cfl_predict_hbd_##arch(pred_buf_q3, dst, dst_stride, alpha_q3, bd, width, \ | 237 | 121k | height); \ | 238 | 121k | } |
Line | Count | Source | 235 | 108k | int bd) { \ | 236 | 108k | cfl_predict_hbd_##arch(pred_buf_q3, dst, dst_stride, alpha_q3, bd, width, \ | 237 | 108k | height); \ | 238 | 108k | } |
Line | Count | Source | 235 | 128k | int bd) { \ | 236 | 128k | cfl_predict_hbd_##arch(pred_buf_q3, dst, dst_stride, alpha_q3, bd, width, \ | 237 | 128k | height); \ | 238 | 128k | } |
Line | Count | Source | 235 | 16.8k | int bd) { \ | 236 | 16.8k | cfl_predict_hbd_##arch(pred_buf_q3, dst, dst_stride, alpha_q3, bd, width, \ | 237 | 16.8k | height); \ | 238 | 16.8k | } |
Line | Count | Source | 235 | 28.1k | int bd) { \ | 236 | 28.1k | cfl_predict_hbd_##arch(pred_buf_q3, dst, dst_stride, alpha_q3, bd, width, \ | 237 | 28.1k | height); \ | 238 | 28.1k | } |
Line | Count | Source | 235 | 20.3k | int bd) { \ | 236 | 20.3k | cfl_predict_hbd_##arch(pred_buf_q3, dst, dst_stride, alpha_q3, bd, width, \ | 237 | 20.3k | height); \ | 238 | 20.3k | } |
Line | Count | Source | 235 | 28.0k | int bd) { \ | 236 | 28.0k | cfl_predict_hbd_##arch(pred_buf_q3, dst, dst_stride, alpha_q3, bd, width, \ | 237 | 28.0k | height); \ | 238 | 28.0k | } |
|
239 | | #endif |
240 | | |
241 | | // This wrapper exists because clang format does not like calling macros with |
242 | | // lowercase letters. |
243 | | #define CFL_PREDICT_X(arch, width, height, bd) \ |
244 | | CFL_PREDICT_##bd(arch, width, height) |
245 | | |
246 | | #define CFL_PREDICT_FN(arch, bd) \ |
247 | | CFL_PREDICT_X(arch, 4, 4, bd) \ |
248 | | CFL_PREDICT_X(arch, 4, 8, bd) \ |
249 | | CFL_PREDICT_X(arch, 4, 16, bd) \ |
250 | | CFL_PREDICT_X(arch, 8, 4, bd) \ |
251 | | CFL_PREDICT_X(arch, 8, 8, bd) \ |
252 | | CFL_PREDICT_X(arch, 8, 16, bd) \ |
253 | | CFL_PREDICT_X(arch, 8, 32, bd) \ |
254 | | CFL_PREDICT_X(arch, 16, 4, bd) \ |
255 | | CFL_PREDICT_X(arch, 16, 8, bd) \ |
256 | | CFL_PREDICT_X(arch, 16, 16, bd) \ |
257 | | CFL_PREDICT_X(arch, 16, 32, bd) \ |
258 | | CFL_PREDICT_X(arch, 32, 8, bd) \ |
259 | | CFL_PREDICT_X(arch, 32, 16, bd) \ |
260 | | CFL_PREDICT_X(arch, 32, 32, bd) \ |
261 | 3.61M | cfl_predict_##bd##_fn cfl_get_predict_##bd##_fn_##arch(TX_SIZE tx_size) { \ |
262 | 3.61M | static const cfl_predict_##bd##_fn pred[TX_SIZES_ALL] = { \ |
263 | 3.61M | cfl_predict_##bd##_4x4_##arch, /* 4x4 */ \ |
264 | 3.61M | cfl_predict_##bd##_8x8_##arch, /* 8x8 */ \ |
265 | 3.61M | cfl_predict_##bd##_16x16_##arch, /* 16x16 */ \ |
266 | 3.61M | cfl_predict_##bd##_32x32_##arch, /* 32x32 */ \ |
267 | 3.61M | NULL, /* 64x64 (invalid CFL size) */ \ |
268 | 3.61M | cfl_predict_##bd##_4x8_##arch, /* 4x8 */ \ |
269 | 3.61M | cfl_predict_##bd##_8x4_##arch, /* 8x4 */ \ |
270 | 3.61M | cfl_predict_##bd##_8x16_##arch, /* 8x16 */ \ |
271 | 3.61M | cfl_predict_##bd##_16x8_##arch, /* 16x8 */ \ |
272 | 3.61M | cfl_predict_##bd##_16x32_##arch, /* 16x32 */ \ |
273 | 3.61M | cfl_predict_##bd##_32x16_##arch, /* 32x16 */ \ |
274 | 3.61M | NULL, /* 32x64 (invalid CFL size) */ \ |
275 | 3.61M | NULL, /* 64x32 (invalid CFL size) */ \ |
276 | 3.61M | cfl_predict_##bd##_4x16_##arch, /* 4x16 */ \ |
277 | 3.61M | cfl_predict_##bd##_16x4_##arch, /* 16x4 */ \ |
278 | 3.61M | cfl_predict_##bd##_8x32_##arch, /* 8x32 */ \ |
279 | 3.61M | cfl_predict_##bd##_32x8_##arch, /* 32x8 */ \ |
280 | 3.61M | NULL, /* 16x64 (invalid CFL size) */ \ |
281 | 3.61M | NULL, /* 64x16 (invalid CFL size) */ \ |
282 | 3.61M | }; \ |
283 | 3.61M | /* Modulo TX_SIZES_ALL to ensure that an attacker won't be able to */ \ |
284 | 3.61M | /* index the function pointer array out of bounds. */ \ |
285 | 3.61M | return pred[tx_size % TX_SIZES_ALL]; \ |
286 | 3.61M | } Line | Count | Source | 261 | 1.73M | cfl_predict_##bd##_fn cfl_get_predict_##bd##_fn_##arch(TX_SIZE tx_size) { \ | 262 | 1.73M | static const cfl_predict_##bd##_fn pred[TX_SIZES_ALL] = { \ | 263 | 1.73M | cfl_predict_##bd##_4x4_##arch, /* 4x4 */ \ | 264 | 1.73M | cfl_predict_##bd##_8x8_##arch, /* 8x8 */ \ | 265 | 1.73M | cfl_predict_##bd##_16x16_##arch, /* 16x16 */ \ | 266 | 1.73M | cfl_predict_##bd##_32x32_##arch, /* 32x32 */ \ | 267 | 1.73M | NULL, /* 64x64 (invalid CFL size) */ \ | 268 | 1.73M | cfl_predict_##bd##_4x8_##arch, /* 4x8 */ \ | 269 | 1.73M | cfl_predict_##bd##_8x4_##arch, /* 8x4 */ \ | 270 | 1.73M | cfl_predict_##bd##_8x16_##arch, /* 8x16 */ \ | 271 | 1.73M | cfl_predict_##bd##_16x8_##arch, /* 16x8 */ \ | 272 | 1.73M | cfl_predict_##bd##_16x32_##arch, /* 16x32 */ \ | 273 | 1.73M | cfl_predict_##bd##_32x16_##arch, /* 32x16 */ \ | 274 | 1.73M | NULL, /* 32x64 (invalid CFL size) */ \ | 275 | 1.73M | NULL, /* 64x32 (invalid CFL size) */ \ | 276 | 1.73M | cfl_predict_##bd##_4x16_##arch, /* 4x16 */ \ | 277 | 1.73M | cfl_predict_##bd##_16x4_##arch, /* 16x4 */ \ | 278 | 1.73M | cfl_predict_##bd##_8x32_##arch, /* 8x32 */ \ | 279 | 1.73M | cfl_predict_##bd##_32x8_##arch, /* 32x8 */ \ | 280 | 1.73M | NULL, /* 16x64 (invalid CFL size) */ \ | 281 | 1.73M | NULL, /* 64x16 (invalid CFL size) */ \ | 282 | 1.73M | }; \ | 283 | 1.73M | /* Modulo TX_SIZES_ALL to ensure that an attacker won't be able to */ \ | 284 | 1.73M | /* index the function pointer array out of bounds. */ \ | 285 | 1.73M | return pred[tx_size % TX_SIZES_ALL]; \ | 286 | 1.73M | } |
Line | Count | Source | 261 | 1.87M | cfl_predict_##bd##_fn cfl_get_predict_##bd##_fn_##arch(TX_SIZE tx_size) { \ | 262 | 1.87M | static const cfl_predict_##bd##_fn pred[TX_SIZES_ALL] = { \ | 263 | 1.87M | cfl_predict_##bd##_4x4_##arch, /* 4x4 */ \ | 264 | 1.87M | cfl_predict_##bd##_8x8_##arch, /* 8x8 */ \ | 265 | 1.87M | cfl_predict_##bd##_16x16_##arch, /* 16x16 */ \ | 266 | 1.87M | cfl_predict_##bd##_32x32_##arch, /* 32x32 */ \ | 267 | 1.87M | NULL, /* 64x64 (invalid CFL size) */ \ | 268 | 1.87M | cfl_predict_##bd##_4x8_##arch, /* 4x8 */ \ | 269 | 1.87M | cfl_predict_##bd##_8x4_##arch, /* 8x4 */ \ | 270 | 1.87M | cfl_predict_##bd##_8x16_##arch, /* 8x16 */ \ | 271 | 1.87M | cfl_predict_##bd##_16x8_##arch, /* 16x8 */ \ | 272 | 1.87M | cfl_predict_##bd##_16x32_##arch, /* 16x32 */ \ | 273 | 1.87M | cfl_predict_##bd##_32x16_##arch, /* 32x16 */ \ | 274 | 1.87M | NULL, /* 32x64 (invalid CFL size) */ \ | 275 | 1.87M | NULL, /* 64x32 (invalid CFL size) */ \ | 276 | 1.87M | cfl_predict_##bd##_4x16_##arch, /* 4x16 */ \ | 277 | 1.87M | cfl_predict_##bd##_16x4_##arch, /* 16x4 */ \ | 278 | 1.87M | cfl_predict_##bd##_8x32_##arch, /* 8x32 */ \ | 279 | 1.87M | cfl_predict_##bd##_32x8_##arch, /* 32x8 */ \ | 280 | 1.87M | NULL, /* 16x64 (invalid CFL size) */ \ | 281 | 1.87M | NULL, /* 64x16 (invalid CFL size) */ \ | 282 | 1.87M | }; \ | 283 | 1.87M | /* Modulo TX_SIZES_ALL to ensure that an attacker won't be able to */ \ | 284 | 1.87M | /* index the function pointer array out of bounds. */ \ | 285 | 1.87M | return pred[tx_size % TX_SIZES_ALL]; \ | 286 | 1.87M | } |
|
287 | | |
288 | | #endif // AOM_AV1_COMMON_CFL_H_ |