aboutsummaryrefslogtreecommitdiff
path: root/src/dsp/weight_mask.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/dsp/weight_mask.cc')
-rw-r--r--src/dsp/weight_mask.cc82
1 files changed, 82 insertions, 0 deletions
diff --git a/src/dsp/weight_mask.cc b/src/dsp/weight_mask.cc
index 41f4c70..ee3808b 100644
--- a/src/dsp/weight_mask.cc
+++ b/src/dsp/weight_mask.cc
@@ -213,7 +213,86 @@ void Init10bpp() {
#endif
#endif // LIBGAV1_ENABLE_ALL_DSP_FUNCTIONS
}
+#endif // LIBGAV1_MAX_BITDEPTH >= 10
+
+#if LIBGAV1_MAX_BITDEPTH == 12
+void Init12bpp() {
+ Dsp* const dsp = dsp_internal::GetWritableDspTable(12);
+ assert(dsp != nullptr);
+#if LIBGAV1_ENABLE_ALL_DSP_FUNCTIONS
+ INIT_WEIGHT_MASK(8, 8, 12, 0, 0);
+ INIT_WEIGHT_MASK(8, 16, 12, 0, 1);
+ INIT_WEIGHT_MASK(8, 32, 12, 0, 2);
+ INIT_WEIGHT_MASK(16, 8, 12, 1, 0);
+ INIT_WEIGHT_MASK(16, 16, 12, 1, 1);
+ INIT_WEIGHT_MASK(16, 32, 12, 1, 2);
+ INIT_WEIGHT_MASK(16, 64, 12, 1, 3);
+ INIT_WEIGHT_MASK(32, 8, 12, 2, 0);
+ INIT_WEIGHT_MASK(32, 16, 12, 2, 1);
+ INIT_WEIGHT_MASK(32, 32, 12, 2, 2);
+ INIT_WEIGHT_MASK(32, 64, 12, 2, 3);
+ INIT_WEIGHT_MASK(64, 16, 12, 3, 1);
+ INIT_WEIGHT_MASK(64, 32, 12, 3, 2);
+ INIT_WEIGHT_MASK(64, 64, 12, 3, 3);
+ INIT_WEIGHT_MASK(64, 128, 12, 3, 4);
+ INIT_WEIGHT_MASK(128, 64, 12, 4, 3);
+ INIT_WEIGHT_MASK(128, 128, 12, 4, 4);
+#else // !LIBGAV1_ENABLE_ALL_DSP_FUNCTIONS
+ static_cast<void>(dsp);
+#ifndef LIBGAV1_Dsp12bpp_WeightMask_8x8
+ INIT_WEIGHT_MASK(8, 8, 12, 0, 0);
+#endif
+#ifndef LIBGAV1_Dsp12bpp_WeightMask_8x16
+ INIT_WEIGHT_MASK(8, 16, 12, 0, 1);
+#endif
+#ifndef LIBGAV1_Dsp12bpp_WeightMask_8x32
+ INIT_WEIGHT_MASK(8, 32, 12, 0, 2);
+#endif
+#ifndef LIBGAV1_Dsp12bpp_WeightMask_16x8
+ INIT_WEIGHT_MASK(16, 8, 12, 1, 0);
+#endif
+#ifndef LIBGAV1_Dsp12bpp_WeightMask_16x16
+ INIT_WEIGHT_MASK(16, 16, 12, 1, 1);
+#endif
+#ifndef LIBGAV1_Dsp12bpp_WeightMask_16x32
+ INIT_WEIGHT_MASK(16, 32, 12, 1, 2);
+#endif
+#ifndef LIBGAV1_Dsp12bpp_WeightMask_16x64
+ INIT_WEIGHT_MASK(16, 64, 12, 1, 3);
+#endif
+#ifndef LIBGAV1_Dsp12bpp_WeightMask_32x8
+ INIT_WEIGHT_MASK(32, 8, 12, 2, 0);
#endif
+#ifndef LIBGAV1_Dsp12bpp_WeightMask_32x16
+ INIT_WEIGHT_MASK(32, 16, 12, 2, 1);
+#endif
+#ifndef LIBGAV1_Dsp12bpp_WeightMask_32x32
+ INIT_WEIGHT_MASK(32, 32, 12, 2, 2);
+#endif
+#ifndef LIBGAV1_Dsp12bpp_WeightMask_32x64
+ INIT_WEIGHT_MASK(32, 64, 12, 2, 3);
+#endif
+#ifndef LIBGAV1_Dsp12bpp_WeightMask_64x16
+ INIT_WEIGHT_MASK(64, 16, 12, 3, 1);
+#endif
+#ifndef LIBGAV1_Dsp12bpp_WeightMask_64x32
+ INIT_WEIGHT_MASK(64, 32, 12, 3, 2);
+#endif
+#ifndef LIBGAV1_Dsp12bpp_WeightMask_64x64
+ INIT_WEIGHT_MASK(64, 64, 12, 3, 3);
+#endif
+#ifndef LIBGAV1_Dsp12bpp_WeightMask_64x128
+ INIT_WEIGHT_MASK(64, 128, 12, 3, 4);
+#endif
+#ifndef LIBGAV1_Dsp12bpp_WeightMask_128x64
+ INIT_WEIGHT_MASK(128, 64, 12, 4, 3);
+#endif
+#ifndef LIBGAV1_Dsp12bpp_WeightMask_128x128
+ INIT_WEIGHT_MASK(128, 128, 12, 4, 4);
+#endif
+#endif // LIBGAV1_ENABLE_ALL_DSP_FUNCTIONS
+}
+#endif // LIBGAV1_MAX_BITDEPTH == 12
} // namespace
@@ -222,6 +301,9 @@ void WeightMaskInit_C() {
#if LIBGAV1_MAX_BITDEPTH >= 10
Init10bpp();
#endif
+#if LIBGAV1_MAX_BITDEPTH == 12
+ Init12bpp();
+#endif
}
} // namespace dsp