diff --git a/libavcodec/hpeldsp.c b/libavcodec/hpeldsp.c index 512767492d..2c2d298cd2 100644 --- a/libavcodec/hpeldsp.c +++ b/libavcodec/hpeldsp.c @@ -54,6 +54,8 @@ av_cold void ff_hpeldsp_init(HpelDSPContext *c, int flags) hpel_funcs(avg, [3], 2); hpel_funcs(avg_no_rnd,, 16); + if (ARCH_PPC) + ff_hpeldsp_init_ppc(c, flags); if (ARCH_X86) ff_hpeldsp_init_x86(c, flags); if (ARCH_ARM) ff_hpeldsp_init_arm (c, flags); diff --git a/libavcodec/ppc/hpeldsp_altivec.c b/libavcodec/ppc/hpeldsp_altivec.c index 4309d39851..6382f0a767 100644 --- a/libavcodec/ppc/hpeldsp_altivec.c +++ b/libavcodec/ppc/hpeldsp_altivec.c @@ -444,20 +444,22 @@ static void avg_pixels8_xy2_altivec(uint8_t *block, const uint8_t *pixels, ptrdi } #endif /* HAVE_ALTIVEC */ -void ff_hpeldsp_init_ppc(HpelDSPContext* c, int flags) +av_cold void ff_hpeldsp_init_ppc(HpelDSPContext *c, int flags) { #if HAVE_ALTIVEC int mm_flags = av_get_cpu_flags(); if (mm_flags & AV_CPU_FLAG_ALTIVEC) { - c->put_pixels_tab[0][0] = ff_put_pixels16_altivec; + c->avg_pixels_tab[0][0] = ff_avg_pixels16_altivec; + c->avg_pixels_tab[1][0] = avg_pixels8_altivec; + c->avg_pixels_tab[1][3] = avg_pixels8_xy2_altivec; + + c->put_pixels_tab[0][0] = ff_put_pixels16_altivec; + c->put_pixels_tab[1][3] = put_pixels8_xy2_altivec; + c->put_pixels_tab[0][3] = put_pixels16_xy2_altivec; + c->put_no_rnd_pixels_tab[0][0] = ff_put_pixels16_altivec; - c->avg_pixels_tab[0][0] = ff_avg_pixels16_altivec; - c->avg_pixels_tab[1][0] = avg_pixels8_altivec; - c->avg_pixels_tab[1][3] = avg_pixels8_xy2_altivec; - c->put_pixels_tab[1][3] = put_pixels8_xy2_altivec; c->put_no_rnd_pixels_tab[1][3] = put_no_rnd_pixels8_xy2_altivec; - c->put_pixels_tab[0][3] = put_pixels16_xy2_altivec; c->put_no_rnd_pixels_tab[0][3] = put_no_rnd_pixels16_xy2_altivec; } #endif /* HAVE_ALTIVEC */