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_