#include "h264chroma_template.c"
#undef BIT_DEPTH
-#define BIT_DEPTH 9
-#include "h264chroma_template.c"
-#undef BIT_DEPTH
-
-#define BIT_DEPTH 10
+#define BIT_DEPTH 16
#include "h264chroma_template.c"
#undef BIT_DEPTH
void ff_h264chroma_init(H264ChromaContext *c, int bit_depth)
{
- switch (bit_depth) {
- case 10:
- SET_CHROMA(10);
- break;
- case 9:
- SET_CHROMA(9);
- break;
- default:
+ if (bit_depth > 8 && bit_depth <= 16) {
+ SET_CHROMA(16);
+ } else {
SET_CHROMA(8);
- break;
}
if (ARCH_ARM)
c->put_h264_chroma_pixels_tab[2] = ff_put_h264_chroma_mc2_mmxext;
}
- if (EXTERNAL_MMXEXT(mm_flags) && bit_depth == 10) {
+ if (EXTERNAL_MMXEXT(mm_flags) && bit_depth > 8 && bit_depth <= 10) {
c->put_h264_chroma_pixels_tab[2] = ff_put_h264_chroma_mc2_10_mmxext;
c->avg_h264_chroma_pixels_tab[2] = ff_avg_h264_chroma_mc2_10_mmxext;
c->put_h264_chroma_pixels_tab[1] = ff_put_h264_chroma_mc4_10_mmxext;
c->avg_h264_chroma_pixels_tab[1] = ff_avg_h264_chroma_mc4_10_mmxext;
}
- if (EXTERNAL_SSE2(mm_flags) && bit_depth == 10) {
+ if (EXTERNAL_SSE2(mm_flags) && bit_depth > 8 && bit_depth <= 10) {
c->put_h264_chroma_pixels_tab[0] = ff_put_h264_chroma_mc8_10_sse2;
c->avg_h264_chroma_pixels_tab[0] = ff_avg_h264_chroma_mc8_10_sse2;
}
c->avg_h264_chroma_pixels_tab[1] = ff_avg_h264_chroma_mc4_ssse3;
}
- if (EXTERNAL_AVX(mm_flags) && bit_depth == 10) {
+ if (EXTERNAL_AVX(mm_flags) && bit_depth > 8 && bit_depth <= 10) {
// AVX implies !cache64.
// TODO: Port cache(32|64) detection from x264.
c->put_h264_chroma_pixels_tab[0] = ff_put_h264_chroma_mc8_10_avx;