Exclude hbd functions in decoder and common. BUG=aomedia:2397 Change-Id: I19cb3d25d7d8f4760249d5c9bd9e2ba2e4128b4b
diff --git a/av1/common/arm/selfguided_neon.c b/av1/common/arm/selfguided_neon.c index 992b863..d1e93d7 100644 --- a/av1/common/arm/selfguided_neon.c +++ b/av1/common/arm/selfguided_neon.c
@@ -509,6 +509,7 @@ } while (h > 0); } +#if CONFIG_AV1_HIGHBITDEPTH static INLINE void calc_ab_internal_hbd(int32_t *A, uint16_t *A16, uint16_t *B16, int32_t *B, const int buf_stride, const int width, @@ -573,6 +574,7 @@ h -= (ht_inc * 4); } while (h > 0); } +#endif // CONFIG_AV1_HIGHBITDEPTH static INLINE void calc_ab_fast_internal_lbd(int32_t *A, uint16_t *A16, int32_t *B, const int buf_stride, @@ -626,6 +628,7 @@ } while (h > 0); } +#if CONFIG_AV1_HIGHBITDEPTH static INLINE void calc_ab_fast_internal_hbd(int32_t *A, uint16_t *A16, int32_t *B, const int buf_stride, const int width, const int height, @@ -679,6 +682,7 @@ h -= (ht_inc * 4); } while (h > 0); } +#endif // CONFIG_AV1_HIGHBITDEPTH static INLINE void boxsum1(int16_t *src, const int src_stride, uint16_t *dst1, int32_t *dst2, const int dst_stride, const int width, @@ -1181,17 +1185,25 @@ // Calculation of a, b. a output is in 16bit tmp_buf which is in range of // [1, 256] for all bit depths. b output is kept in 32bit buffer. - if (8 == bit_depth) { - calc_ab_fast_internal_lbd( - (square_sum_buf - buf_stride - 1), (tmp16_buf - buf_stride - 1), - (sum_buf - buf_stride - 1), buf_stride * 2, width + 2, height + 2, r, - params->s[radius_idx], 2); - } else { +#if CONFIG_AV1_HIGHBITDEPTH + if (bit_depth > 8) { calc_ab_fast_internal_hbd( (square_sum_buf - buf_stride - 1), (tmp16_buf - buf_stride - 1), (sum_buf - buf_stride - 1), buf_stride * 2, width + 2, height + 2, bit_depth, r, params->s[radius_idx], 2); + } else { + calc_ab_fast_internal_lbd( + (square_sum_buf - buf_stride - 1), (tmp16_buf - buf_stride - 1), + (sum_buf - buf_stride - 1), buf_stride * 2, width + 2, height + 2, r, + params->s[radius_idx], 2); } +#else + (void)bit_depth; + calc_ab_fast_internal_lbd((square_sum_buf - buf_stride - 1), + (tmp16_buf - buf_stride - 1), + (sum_buf - buf_stride - 1), buf_stride * 2, + width + 2, height + 2, r, params->s[radius_idx], 2); +#endif final_filter_fast_internal(tmp16_buf, sum_buf, buf_stride, (int16_t *)dgd16, dgd_stride, dst, dst_stride, width, height); } @@ -1235,19 +1247,27 @@ A16 += SGRPROJ_BORDER_VERT * buf_stride + SGRPROJ_BORDER_HORZ; sum_buf += SGRPROJ_BORDER_VERT * buf_stride + SGRPROJ_BORDER_HORZ; +#if CONFIG_AV1_HIGHBITDEPTH // Calculation of a, b. a output is in 16bit tmp_buf which is in range of // [1, 256] for all bit depths. b output is kept in 32bit buffer. - if (8 == bit_depth) { - calc_ab_internal_lbd((square_sum_buf - buf_stride - 1), - (A16 - buf_stride - 1), (sum_buf - buf_stride - 1), - (B - buf_stride - 1), buf_stride, width + 2, - height + 2, r, params->s[radius_idx], 1); - } else { + if (bit_depth > 8) { calc_ab_internal_hbd((square_sum_buf - buf_stride - 1), (A16 - buf_stride - 1), (sum_buf - buf_stride - 1), (B - buf_stride - 1), buf_stride, width + 2, height + 2, bit_depth, r, params->s[radius_idx], 1); + } else { + calc_ab_internal_lbd((square_sum_buf - buf_stride - 1), + (A16 - buf_stride - 1), (sum_buf - buf_stride - 1), + (B - buf_stride - 1), buf_stride, width + 2, + height + 2, r, params->s[radius_idx], 1); } +#else + (void)bit_depth; + calc_ab_internal_lbd((square_sum_buf - buf_stride - 1), + (A16 - buf_stride - 1), (sum_buf - buf_stride - 1), + (B - buf_stride - 1), buf_stride, width + 2, height + 2, + r, params->s[radius_idx], 1); +#endif final_filter_internal(A16, B, buf_stride, (int16_t *)dgd16, dgd_stride, dst, dst_stride, width, height); } @@ -1301,6 +1321,7 @@ } } +#if CONFIG_AV1_HIGHBITDEPTH static INLINE void src_convert_hbd_copy(const uint16_t *src, int src_stride, uint16_t *dst, const int dst_stride, int width, int height) { @@ -1340,6 +1361,7 @@ sizeof(uint16_t) * width); } } +#endif // CONFIG_AV1_HIGHBITDEPTH int av1_selfguided_restoration_neon(const uint8_t *dat8, int width, int height, int stride, int32_t *flt0, int32_t *flt1, @@ -1356,6 +1378,7 @@ const int height_ext = height + 2 * SGRPROJ_BORDER_VERT; const int dgd_stride = stride; +#if CONFIG_AV1_HIGHBITDEPTH if (highbd) { const uint16_t *dgd16_tmp = CONVERT_TO_SHORTPTR(dat8); src_convert_hbd_copy( @@ -1370,6 +1393,13 @@ dgd16 - SGRPROJ_BORDER_VERT * dgd16_stride - SGRPROJ_BORDER_HORZ, dgd16_stride, width_ext, height_ext); } +#else + (void)highbd; + src_convert_u8_to_u16( + dat8 - SGRPROJ_BORDER_VERT * dgd_stride - SGRPROJ_BORDER_HORZ, dgd_stride, + dgd16 - SGRPROJ_BORDER_VERT * dgd16_stride - SGRPROJ_BORDER_HORZ, + dgd16_stride, width_ext, height_ext); +#endif if (params->r[0] > 0) restoration_fast_internal(dgd16, width, height, dgd16_stride, flt0, @@ -1400,6 +1430,7 @@ assert(!(params->r[0] == 0 && params->r[1] == 0)); +#if CONFIG_AV1_HIGHBITDEPTH if (highbd) { const uint16_t *dgd16_tmp = CONVERT_TO_SHORTPTR(dat8); src_convert_hbd_copy( @@ -1414,7 +1445,13 @@ dgd16 - SGRPROJ_BORDER_VERT * dgd16_stride - SGRPROJ_BORDER_HORZ, dgd16_stride, width_ext, height_ext); } - +#else + (void)highbd; + src_convert_u8_to_u16( + dat8 - SGRPROJ_BORDER_VERT * dgd_stride - SGRPROJ_BORDER_HORZ, dgd_stride, + dgd16 - SGRPROJ_BORDER_VERT * dgd16_stride - SGRPROJ_BORDER_HORZ, + dgd16_stride, width_ext, height_ext); +#endif if (params->r[0] > 0) restoration_fast_internal(dgd16, width, height, dgd16_stride, flt0, width, bit_depth, eps, 0); @@ -1485,6 +1522,7 @@ r4 = vreinterpretq_u16_s16(vmaxq_s16(r0, zero)); +#if CONFIG_AV1_HIGHBITDEPTH if (highbd) { r4 = vminq_u16(r4, max); vst1q_u16(dst16_ptr, r4); @@ -1492,6 +1530,11 @@ t0 = vqmovn_u16(r4); vst1_u8(dst_ptr, t0); } +#else + (void)max; + t0 = vqmovn_u16(r4); + vst1_u8(dst_ptr, t0); +#endif w -= 8; count += 8; dst_ptr += 8;
diff --git a/av1/common/av1_rtcd_defs.pl b/av1/common/av1_rtcd_defs.pl index 792f171..65c0fe2 100644 --- a/av1/common/av1_rtcd_defs.pl +++ b/av1/common/av1_rtcd_defs.pl
@@ -90,16 +90,16 @@ add_proto qw/void av1_convolve_horiz_rs/, "const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const int16_t *x_filters, int x0_qn, int x_step_qn"; specialize qw/av1_convolve_horiz_rs sse4_1/; -add_proto qw/void av1_highbd_convolve_horiz_rs/, "const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const int16_t *x_filters, int x0_qn, int x_step_qn, int bd"; -specialize qw/av1_highbd_convolve_horiz_rs sse4_1/; +if(aom_config("CONFIG_AV1_HIGHBITDEPTH") eq "yes") { + add_proto qw/void av1_highbd_convolve_horiz_rs/, "const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const int16_t *x_filters, int x0_qn, int x_step_qn, int bd"; + specialize qw/av1_highbd_convolve_horiz_rs sse4_1/; + + add_proto qw/void av1_highbd_wiener_convolve_add_src/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, const ConvolveParams *conv_params, int bd"; + specialize qw/av1_highbd_wiener_convolve_add_src ssse3 avx2/; +} add_proto qw/void av1_wiener_convolve_add_src/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, const ConvolveParams *conv_params"; - -add_proto qw/void av1_highbd_wiener_convolve_add_src/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, const ConvolveParams *conv_params, int bd"; - specialize qw/av1_wiener_convolve_add_src sse2 avx2 neon/; -specialize qw/av1_highbd_wiener_convolve_add_src ssse3/; -specialize qw/av1_highbd_wiener_convolve_add_src avx2/; # directional intra predictor functions add_proto qw/void av1_dr_prediction_z1/, "uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int dx, int dy"; @@ -418,10 +418,10 @@ add_proto qw/void av1_highbd_dist_wtd_convolve_x/, "const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd"; add_proto qw/void av1_highbd_dist_wtd_convolve_y/, "const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd"; add_proto qw/void av1_highbd_dist_wtd_convolve_2d_copy/, "const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd"; + add_proto qw/void av1_highbd_convolve_2d_scale/, "const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int x_step_qn, const int subpel_y_qn, const int y_step_qn, ConvolveParams *conv_params, int bd"; } add_proto qw/void av1_convolve_2d_scale/, "const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int x_step_qn, const int subpel_y_qn, const int y_step_qn, ConvolveParams *conv_params"; - add_proto qw/void av1_highbd_convolve_2d_scale/, "const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int x_step_qn, const int subpel_y_qn, const int y_step_qn, ConvolveParams *conv_params, int bd"; specialize qw/av1_convolve_2d_sr sse2 avx2 neon/; specialize qw/av1_convolve_2d_copy_sr sse2 avx2 neon/; @@ -441,8 +441,8 @@ specialize qw/av1_highbd_convolve_2d_sr ssse3 avx2/; specialize qw/av1_highbd_convolve_x_sr ssse3 avx2/; specialize qw/av1_highbd_convolve_y_sr ssse3 avx2/; + specialize qw/av1_highbd_convolve_2d_scale sse4_1/; } - specialize qw/av1_highbd_convolve_2d_scale sse4_1/; # INTRA_EDGE functions add_proto qw/void av1_filter_intra_edge/, "uint8_t *p, int sz, int strength";
diff --git a/av1/common/convolve.c b/av1/common/convolve.c index bd40e72..e52139e 100644 --- a/av1/common/convolve.c +++ b/av1/common/convolve.c
@@ -620,6 +620,7 @@ } } +#if CONFIG_AV1_HIGHBITDEPTH void av1_highbd_convolve_2d_copy_sr_c( const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, @@ -1121,6 +1122,7 @@ filter_params_y, subpel_x_qn, subpel_y_qn, conv_params, bd); } } +#endif // CONFIG_AV1_HIGHBITDEPTH // Note: Fixed size intermediate buffers, place limits on parameters // of some functions. 2d filtering proceeds in 2 steps: @@ -1142,12 +1144,14 @@ return sum; } +#if CONFIG_AV1_HIGHBITDEPTH static INLINE int highbd_horz_scalar_product(const uint16_t *a, const int16_t *b) { int sum = 0; for (int k = 0; k < SUBPEL_TAPS; ++k) sum += a[k] * b[k]; return sum; } +#endif static INLINE int highbd_vert_scalar_product(const uint16_t *a, ptrdiff_t a_stride, @@ -1248,6 +1252,7 @@ y_step_q4, w, h, conv_params->round_1); } +#if CONFIG_AV1_HIGHBITDEPTH static void highbd_convolve_add_src_horiz_hip( const uint8_t *src8, ptrdiff_t src_stride, uint16_t *dst, ptrdiff_t dst_stride, const InterpKernel *x_filters, int x0_q4, @@ -1326,3 +1331,4 @@ temp + MAX_SB_SIZE * (SUBPEL_TAPS / 2 - 1), MAX_SB_SIZE, dst, dst_stride, filters_y, y0_q4, y_step_q4, w, h, conv_params->round_1, bd); } +#endif // CONFIG_AV1_HIGHBITDEPTH
diff --git a/av1/common/reconinter.c b/av1/common/reconinter.c index 4532f9b..2da1913 100644 --- a/av1/common/reconinter.c +++ b/av1/common/reconinter.c
@@ -88,13 +88,20 @@ pre_buf->buf0, pre_buf->width, pre_buf->height, pre_buf->stride, dst, p_col, p_row, w, h, dst_stride, pd->subsampling_x, pd->subsampling_y, conv_params); - } else if (is_cur_buf_hbd(xd)) { - highbd_inter_predictor(src, src_stride, dst, dst_stride, subpel_params, sf, - w, h, conv_params, interp_filters, is_intrabc, - xd->bd); } else { +#if CONFIG_AV1_HIGHBITDEPTH + if (is_cur_buf_hbd(xd)) { + highbd_inter_predictor(src, src_stride, dst, dst_stride, subpel_params, + sf, w, h, conv_params, interp_filters, is_intrabc, + xd->bd); + } else { + inter_predictor(src, src_stride, dst, dst_stride, subpel_params, sf, w, h, + conv_params, interp_filters, is_intrabc); + } +#else inter_predictor(src, src_stride, dst, dst_stride, subpel_params, sf, w, h, conv_params, interp_filters, is_intrabc); +#endif } }
diff --git a/av1/common/resize.c b/av1/common/resize.c index ae6698f..2f2efd8 100644 --- a/av1/common/resize.c +++ b/av1/common/resize.c
@@ -758,6 +758,7 @@ } } +#if CONFIG_AV1_HIGHBITDEPTH static void highbd_interpolate_core(const uint16_t *const input, int in_length, uint16_t *output, int out_length, int bd, const int16_t *interp_filters, @@ -1105,6 +1106,7 @@ aom_free(tmp_right); } } +#endif // CONFIG_AV1_HIGHBITDEPTH void av1_resize_frame420(const uint8_t *const y, int y_stride, const uint8_t *const u, const uint8_t *const v, @@ -1142,6 +1144,7 @@ ouv_stride); } +#if CONFIG_AV1_HIGHBITDEPTH void av1_highbd_resize_frame420(const uint8_t *const y, int y_stride, const uint8_t *const u, const uint8_t *const v, int uv_stride, int height, int width, @@ -1183,6 +1186,7 @@ av1_highbd_resize_plane(v, height, width, uv_stride, ov, oheight, owidth, ouv_stride, bd); } +#endif // CONFIG_AV1_HIGHBITDEPTH void av1_resize_and_extend_frame(const YV12_BUFFER_CONFIG *src, YV12_BUFFER_CONFIG *dst, int bd, @@ -1193,6 +1197,7 @@ // the static analysis warnings. for (int i = 0; i < AOMMIN(num_planes, MAX_MB_PLANE); ++i) { const int is_uv = i > 0; +#if CONFIG_AV1_HIGHBITDEPTH if (src->flags & YV12_FLAG_HIGHBITDEPTH) av1_highbd_resize_plane(src->buffers[i], src->crop_heights[is_uv], src->crop_widths[is_uv], src->strides[is_uv], @@ -1203,6 +1208,13 @@ src->crop_widths[is_uv], src->strides[is_uv], dst->buffers[i], dst->crop_heights[is_uv], dst->crop_widths[is_uv], dst->strides[is_uv]); +#else + (void)bd; + av1_resize_plane(src->buffers[i], src->crop_heights[is_uv], + src->crop_widths[is_uv], src->strides[is_uv], + dst->buffers[i], dst->crop_heights[is_uv], + dst->crop_widths[is_uv], dst->strides[is_uv]); +#endif } aom_extend_frame_borders(dst, num_planes); } @@ -1252,6 +1264,7 @@ const int pad_left = (j == 0); const int pad_right = (j == cm->tile_cols - 1); +#if CONFIG_AV1_HIGHBITDEPTH if (cm->seq_params.use_highbitdepth) highbd_upscale_normative_rect(src_ptr, rows, src_width, src_stride, dst_ptr, rows, dst_width, dst_stride, @@ -1261,7 +1274,11 @@ upscale_normative_rect(src_ptr, rows, src_width, src_stride, dst_ptr, rows, dst_width, dst_stride, x_step_qn, x0_qn, pad_left, pad_right); - +#else + upscale_normative_rect(src_ptr, rows, src_width, src_stride, dst_ptr, rows, + dst_width, dst_stride, x_step_qn, x0_qn, pad_left, + pad_right); +#endif // Update the fractional pixel offset to prepare for the next tile column. x0_qn += (dst_width * x_step_qn) - (src_width << RS_SCALE_SUBPEL_BITS); }
diff --git a/av1/common/restoration.c b/av1/common/restoration.c index bd07b89..70ad118 100644 --- a/av1/common/restoration.c +++ b/av1/common/restoration.c
@@ -153,6 +153,7 @@ } } +#if CONFIG_AV1_HIGHBITDEPTH static void extend_frame_highbd(uint16_t *data, int width, int height, int stride, int border_horz, int border_vert) { uint16_t *data_p; @@ -173,13 +174,24 @@ } } +static void copy_tile_highbd(int width, int height, const uint16_t *src, + int src_stride, uint16_t *dst, int dst_stride) { + for (int i = 0; i < height; ++i) + memcpy(dst + i * dst_stride, src + i * src_stride, width * sizeof(*dst)); +} +#endif + void av1_extend_frame(uint8_t *data, int width, int height, int stride, int border_horz, int border_vert, int highbd) { - if (highbd) +#if CONFIG_AV1_HIGHBITDEPTH + if (highbd) { extend_frame_highbd(CONVERT_TO_SHORTPTR(data), width, height, stride, border_horz, border_vert); - else - extend_frame_lowbd(data, width, height, stride, border_horz, border_vert); + return; + } +#endif + (void)highbd; + extend_frame_lowbd(data, width, height, stride, border_horz, border_vert); } static void copy_tile_lowbd(int width, int height, const uint8_t *src, @@ -188,19 +200,17 @@ memcpy(dst + i * dst_stride, src + i * src_stride, width); } -static void copy_tile_highbd(int width, int height, const uint16_t *src, - int src_stride, uint16_t *dst, int dst_stride) { - for (int i = 0; i < height; ++i) - memcpy(dst + i * dst_stride, src + i * src_stride, width * sizeof(*dst)); -} - static void copy_tile(int width, int height, const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int highbd) { - if (highbd) +#if CONFIG_AV1_HIGHBITDEPTH + if (highbd) { copy_tile_highbd(width, height, CONVERT_TO_SHORTPTR(src), src_stride, CONVERT_TO_SHORTPTR(dst), dst_stride); - else - copy_tile_lowbd(width, height, src, src_stride, dst, dst_stride); + return; + } +#endif + (void)highbd; + copy_tile_lowbd(width, height, src, src_stride, dst, dst_stride); } #define REAL_PTR(hbd, d) ((hbd) ? (uint8_t *)CONVERT_TO_SHORTPTR(d) : (d)) @@ -955,6 +965,7 @@ } } +#if CONFIG_AV1_HIGHBITDEPTH static void wiener_filter_stripe_highbd(const RestorationUnitInfo *rui, int stripe_width, int stripe_height, int procunit_width, const uint8_t *src8, @@ -988,6 +999,7 @@ rui->sgrproj_info.xqd, dst8 + j, dst_stride, tmpbuf, bit_depth, 1); } } +#endif // CONFIG_AV1_HIGHBITDEPTH typedef void (*stripe_filter_fun)(const RestorationUnitInfo *rui, int stripe_width, int stripe_height, @@ -995,12 +1007,18 @@ int src_stride, uint8_t *dst, int dst_stride, int32_t *tmpbuf, int bit_depth); +#if CONFIG_AV1_HIGHBITDEPTH #define NUM_STRIPE_FILTERS 4 - static const stripe_filter_fun stripe_filters[NUM_STRIPE_FILTERS] = { wiener_filter_stripe, sgrproj_filter_stripe, wiener_filter_stripe_highbd, sgrproj_filter_stripe_highbd }; +#else +#define NUM_STRIPE_FILTERS 2 +static const stripe_filter_fun stripe_filters[NUM_STRIPE_FILTERS] = { + wiener_filter_stripe, sgrproj_filter_stripe +}; +#endif // CONFIG_AV1_HIGHBITDEPTH // Filter one restoration unit void av1_loop_restoration_filter_unit(
diff --git a/av1/decoder/decodeframe.c b/av1/decoder/decodeframe.c index 017740d..2f0a45e 100644 --- a/av1/decoder/decodeframe.c +++ b/av1/decoder/decodeframe.c
@@ -407,6 +407,7 @@ int y1; } PadBlock; +#if CONFIG_AV1_HIGHBITDEPTH static AOM_INLINE void highbd_build_mc_border(const uint8_t *src8, int src_stride, uint8_t *dst8, int dst_stride, int x, int y, @@ -445,6 +446,7 @@ if (y > 0 && y < h) ref_row += src_stride; } while (--b_h); } +#endif // CONFIG_AV1_HIGHBITDEPTH static AOM_INLINE void build_mc_border(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int x, @@ -535,6 +537,7 @@ const int b_w = block.x1 - block.x0; const int b_h = block.y1 - block.y0; +#if CONFIG_AV1_HIGHBITDEPTH // Extend the border. if (highbd) { highbd_build_mc_border(buf_ptr, buf_stride, mc_buf, b_w, block.x0, @@ -544,6 +547,11 @@ build_mc_border(buf_ptr, buf_stride, mc_buf, b_w, block.x0, block.y0, b_w, b_h, pre_buf->width, pre_buf->height); } +#else + (void)highbd; + build_mc_border(buf_ptr, buf_stride, mc_buf, b_w, block.x0, block.y0, b_w, + b_h, pre_buf->width, pre_buf->height); +#endif *src_stride = b_w; *pre = mc_buf + y_pad * (AOM_INTERP_EXTEND - 1) * b_w + x_pad * (AOM_INTERP_EXTEND - 1); @@ -1008,6 +1016,31 @@ xd->mb_to_bottom_edge = ctxt.mb_to_far_edge; } +static void set_dst_buf(MACROBLOCKD *xd, uint8_t **dst_buf1, + uint8_t **dst_buf2) { + dst_buf1[0] = xd->tmp_obmc_bufs[0]; + dst_buf1[1] = xd->tmp_obmc_bufs[0] + MAX_SB_SQUARE; + dst_buf1[2] = xd->tmp_obmc_bufs[0] + MAX_SB_SQUARE * 2; + dst_buf2[0] = xd->tmp_obmc_bufs[1]; + dst_buf2[1] = xd->tmp_obmc_bufs[1] + MAX_SB_SQUARE; + dst_buf2[2] = xd->tmp_obmc_bufs[1] + MAX_SB_SQUARE * 2; +} + +#if CONFIG_AV1_HIGHBITDEPTH +static void set_dst_buf_highbd(MACROBLOCKD *xd, uint8_t **dst_buf1, + uint8_t **dst_buf2) { + int len = sizeof(uint16_t); + dst_buf1[0] = CONVERT_TO_BYTEPTR(xd->tmp_obmc_bufs[0]); + dst_buf1[1] = CONVERT_TO_BYTEPTR(xd->tmp_obmc_bufs[0] + MAX_SB_SQUARE * len); + dst_buf1[2] = + CONVERT_TO_BYTEPTR(xd->tmp_obmc_bufs[0] + MAX_SB_SQUARE * 2 * len); + dst_buf2[0] = CONVERT_TO_BYTEPTR(xd->tmp_obmc_bufs[1]); + dst_buf2[1] = CONVERT_TO_BYTEPTR(xd->tmp_obmc_bufs[1] + MAX_SB_SQUARE * len); + dst_buf2[2] = + CONVERT_TO_BYTEPTR(xd->tmp_obmc_bufs[1] + MAX_SB_SQUARE * 2 * len); +} +#endif + static AOM_INLINE void dec_build_obmc_inter_predictors_sb(const AV1_COMMON *cm, MACROBLOCKD *xd, int mi_row, @@ -1021,26 +1054,16 @@ int dst_height1[MAX_MB_PLANE] = { MAX_SB_SIZE, MAX_SB_SIZE, MAX_SB_SIZE }; int dst_height2[MAX_MB_PLANE] = { MAX_SB_SIZE, MAX_SB_SIZE, MAX_SB_SIZE }; +#if CONFIG_AV1_HIGHBITDEPTH if (is_cur_buf_hbd(xd)) { - int len = sizeof(uint16_t); - dst_buf1[0] = CONVERT_TO_BYTEPTR(xd->tmp_obmc_bufs[0]); - dst_buf1[1] = - CONVERT_TO_BYTEPTR(xd->tmp_obmc_bufs[0] + MAX_SB_SQUARE * len); - dst_buf1[2] = - CONVERT_TO_BYTEPTR(xd->tmp_obmc_bufs[0] + MAX_SB_SQUARE * 2 * len); - dst_buf2[0] = CONVERT_TO_BYTEPTR(xd->tmp_obmc_bufs[1]); - dst_buf2[1] = - CONVERT_TO_BYTEPTR(xd->tmp_obmc_bufs[1] + MAX_SB_SQUARE * len); - dst_buf2[2] = - CONVERT_TO_BYTEPTR(xd->tmp_obmc_bufs[1] + MAX_SB_SQUARE * 2 * len); + set_dst_buf_highbd(xd, dst_buf1, dst_buf2); } else { - dst_buf1[0] = xd->tmp_obmc_bufs[0]; - dst_buf1[1] = xd->tmp_obmc_bufs[0] + MAX_SB_SQUARE; - dst_buf1[2] = xd->tmp_obmc_bufs[0] + MAX_SB_SQUARE * 2; - dst_buf2[0] = xd->tmp_obmc_bufs[1]; - dst_buf2[1] = xd->tmp_obmc_bufs[1] + MAX_SB_SQUARE; - dst_buf2[2] = xd->tmp_obmc_bufs[1] + MAX_SB_SQUARE * 2; + set_dst_buf(xd, dst_buf1, dst_buf2); } +#else + set_dst_buf(xd, dst_buf1, dst_buf2); +#endif + dec_build_prediction_by_above_preds(cm, xd, mi_row, mi_col, dst_buf1, dst_width1, dst_height1, dst_stride1); dec_build_prediction_by_left_preds(cm, xd, mi_row, mi_col, dst_buf2,
diff --git a/test/av1_convolve_scale_test.cc b/test/av1_convolve_scale_test.cc index a933fc9..2a1d176 100644 --- a/test/av1_convolve_scale_test.cc +++ b/test/av1_convolve_scale_test.cc
@@ -461,6 +461,7 @@ ::testing::ValuesIn(kNTaps), ::testing::ValuesIn(kNTaps), ::testing::Bool())); +#if CONFIG_AV1_HIGHBITDEPTH typedef void (*HighbdConvolveFunc)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, @@ -526,4 +527,5 @@ ::testing::ValuesIn(kBlockDim), ::testing::ValuesIn(kNTaps), ::testing::ValuesIn(kNTaps), ::testing::Bool(), ::testing::ValuesIn(kBDs))); +#endif // CONFIG_AV1_HIGHBITDEPTH } // namespace
diff --git a/test/av1_horz_only_frame_superres_test.cc b/test/av1_horz_only_frame_superres_test.cc index ffc9136..c26b70e 100644 --- a/test/av1_horz_only_frame_superres_test.cc +++ b/test/av1_horz_only_frame_superres_test.cc
@@ -300,6 +300,7 @@ INSTANTIATE_TEST_CASE_P(SSE4_1, LowBDConvolveHorizRSTest, ::testing::Values(av1_convolve_horiz_rs_sse4_1)); +#if CONFIG_AV1_HIGHBITDEPTH typedef void (*HighBDConvolveHorizRsFunc)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const int16_t *x_filters, @@ -358,5 +359,6 @@ SSE4_1, HighBDConvolveHorizRSTest, ::testing::Combine(::testing::Values(av1_highbd_convolve_horiz_rs_sse4_1), ::testing::ValuesIn(kBDs))); +#endif // CONFIG_AV1_HIGHBITDEPTH } // namespace
diff --git a/test/hiprec_convolve_test.cc b/test/hiprec_convolve_test.cc index dcf8523..9301abf 100644 --- a/test/hiprec_convolve_test.cc +++ b/test/hiprec_convolve_test.cc
@@ -13,7 +13,9 @@ #include "test/hiprec_convolve_test_util.h" using libaom_test::ACMRandom; +#if CONFIG_AV1_HIGHBITDEPTH using libaom_test::AV1HighbdHiprecConvolve::AV1HighbdHiprecConvolveTest; +#endif using libaom_test::AV1HiprecConvolve::AV1HiprecConvolveTest; using ::testing::make_tuple; using ::testing::tuple; @@ -40,6 +42,7 @@ av1_wiener_convolve_add_src_neon)); #endif +#if CONFIG_AV1_HIGHBITDEPTH #if HAVE_SSSE3 || HAVE_AVX2 TEST_P(AV1HighbdHiprecConvolveTest, CheckOutput) { RunCheckOutput(GET_PARAM(4)); @@ -58,5 +61,6 @@ av1_highbd_wiener_convolve_add_src_avx2)); #endif #endif +#endif // CONFIG_AV1_HIGHBITDEPTH } // namespace
diff --git a/test/hiprec_convolve_test_util.cc b/test/hiprec_convolve_test_util.cc index cf7d079..5da8b84 100644 --- a/test/hiprec_convolve_test_util.cc +++ b/test/hiprec_convolve_test_util.cc
@@ -200,6 +200,7 @@ } } // namespace AV1HiprecConvolve +#if CONFIG_AV1_HIGHBITDEPTH namespace AV1HighbdHiprecConvolve { ::testing::internal::ParamGenerator<HighbdHiprecConvolveParam> BuildParams( @@ -345,4 +346,5 @@ delete[] output2; } } // namespace AV1HighbdHiprecConvolve +#endif // CONFIG_AV1_HIGHBITDEPTH } // namespace libaom_test
diff --git a/test/hiprec_convolve_test_util.h b/test/hiprec_convolve_test_util.h index 2abe24b..847fb55 100644 --- a/test/hiprec_convolve_test_util.h +++ b/test/hiprec_convolve_test_util.h
@@ -58,6 +58,7 @@ } // namespace AV1HiprecConvolve +#if CONFIG_AV1_HIGHBITDEPTH namespace AV1HighbdHiprecConvolve { typedef void (*highbd_hiprec_convolve_func)( const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, @@ -87,7 +88,7 @@ }; } // namespace AV1HighbdHiprecConvolve - +#endif // CONFIG_AV1_HIGHBITDEPTH } // namespace libaom_test #endif // AOM_TEST_HIPREC_CONVOLVE_TEST_UTIL_H_