[CFL] Support for 4:4:4 High Bit Depth
Change-Id: I13ba0dbe57297b540b78512d21a119f05a86a849
diff --git a/av1/common/cfl.c b/av1/common/cfl.c
index 1ebb921..f9acfcb 100644
--- a/av1/common/cfl.c
+++ b/av1/common/cfl.c
@@ -338,6 +338,18 @@
}
}
+static void cfl_luma_subsampling_444_lbd(const uint8_t *input, int input_stride,
+ int16_t *output_q3, int width,
+ int height) {
+ for (int j = 0; j < height; j++) {
+ for (int i = 0; i < width; i++) {
+ output_q3[i] = input[i] << 3;
+ }
+ input += input_stride;
+ output_q3 += MAX_SB_SIZE;
+ }
+}
+
#if CONFIG_HIGHBITDEPTH
static void cfl_luma_subsampling_420_hbd(const uint16_t *input,
int input_stride, int16_t *output_q3,
@@ -353,6 +365,18 @@
output_q3 += MAX_SB_SIZE;
}
}
+
+static void cfl_luma_subsampling_444_hbd(const uint16_t *input,
+ int input_stride, int16_t *output_q3,
+ int width, int height) {
+ for (int j = 0; j < height; j++) {
+ for (int i = 0; i < width; i++) {
+ output_q3[i] = input[i] << 3;
+ }
+ input += input_stride;
+ output_q3 += MAX_SB_SIZE;
+ }
+}
#endif // CONFIG_HIGHBITDEPTH
static void cfl_luma_subsampling_420(const uint8_t *input, int input_stride,
@@ -370,17 +394,19 @@
cfl_luma_subsampling_420_lbd(input, input_stride, output_q3, width, height);
}
-static INLINE void cfl_luma_subsampling_444(const uint8_t *input,
- int input_stride,
- int16_t *output_q3, int width,
- int height) {
- for (int j = 0; j < height; j++) {
- for (int i = 0; i < width; i++) {
- output_q3[i] = input[i] << 3;
- }
- input += input_stride;
- output_q3 += MAX_SB_SIZE;
+static void cfl_luma_subsampling_444(const uint8_t *input, int input_stride,
+ int16_t *output_q3, int width, int height,
+ int use_hbd) {
+#if CONFIG_HIGHBITDEPTH
+ if (use_hbd) {
+ uint16_t *input_16 = CONVERT_TO_SHORTPTR(input);
+ cfl_luma_subsampling_444_hbd(input_16, input_stride, output_q3, width,
+ height);
+ return;
}
+#endif // CONFIG_HIGHBITDEPTH
+ (void)use_hbd;
+ cfl_luma_subsampling_444_lbd(input, input_stride, output_q3, width, height);
}
static INLINE void cfl_store(CFL_CTX *cfl, const uint8_t *input,
@@ -417,10 +443,8 @@
cfl->pred_buf_q3 + (store_row * MAX_SB_SIZE + store_col);
if (sub_y == 0 && sub_x == 0) {
- // TODO(ltrudeau) add support for HBD 4:4:4
- assert(!use_hbd);
cfl_luma_subsampling_444(input, input_stride, pred_buf_q3, store_width,
- store_height);
+ store_height, use_hbd);
} else if (sub_y == 1 && sub_x == 1) {
cfl_luma_subsampling_420(input, input_stride, pred_buf_q3, store_width,
store_height, use_hbd);