| @@ -32,7 +32,6 @@ | |||
| #define OP_U8_ALTIVEC PUT_OP_U8_ALTIVEC | |||
| #define PREFIX_h264_chroma_mc8_altivec put_h264_chroma_mc8_altivec | |||
| #define PREFIX_no_rnd_vc1_chroma_mc8_altivec put_no_rnd_vc1_chroma_mc8_altivec | |||
| #define PREFIX_h264_chroma_mc8_num altivec_put_h264_chroma_mc8_num | |||
| #define PREFIX_h264_qpel16_h_lowpass_altivec put_h264_qpel16_h_lowpass_altivec | |||
| #define PREFIX_h264_qpel16_h_lowpass_num altivec_put_h264_qpel16_h_lowpass_num | |||
| @@ -43,7 +42,6 @@ | |||
| #include "h264_template_altivec.c" | |||
| #undef OP_U8_ALTIVEC | |||
| #undef PREFIX_h264_chroma_mc8_altivec | |||
| #undef PREFIX_no_rnd_vc1_chroma_mc8_altivec | |||
| #undef PREFIX_h264_chroma_mc8_num | |||
| #undef PREFIX_h264_qpel16_h_lowpass_altivec | |||
| #undef PREFIX_h264_qpel16_h_lowpass_num | |||
| @@ -54,7 +52,6 @@ | |||
| #define OP_U8_ALTIVEC AVG_OP_U8_ALTIVEC | |||
| #define PREFIX_h264_chroma_mc8_altivec avg_h264_chroma_mc8_altivec | |||
| #define PREFIX_no_rnd_vc1_chroma_mc8_altivec avg_no_rnd_vc1_chroma_mc8_altivec | |||
| #define PREFIX_h264_chroma_mc8_num altivec_avg_h264_chroma_mc8_num | |||
| #define PREFIX_h264_qpel16_h_lowpass_altivec avg_h264_qpel16_h_lowpass_altivec | |||
| #define PREFIX_h264_qpel16_h_lowpass_num altivec_avg_h264_qpel16_h_lowpass_num | |||
| @@ -65,7 +62,6 @@ | |||
| #include "h264_template_altivec.c" | |||
| #undef OP_U8_ALTIVEC | |||
| #undef PREFIX_h264_chroma_mc8_altivec | |||
| #undef PREFIX_no_rnd_vc1_chroma_mc8_altivec | |||
| #undef PREFIX_h264_chroma_mc8_num | |||
| #undef PREFIX_h264_qpel16_h_lowpass_altivec | |||
| #undef PREFIX_h264_qpel16_h_lowpass_num | |||
| @@ -973,8 +969,6 @@ void dsputil_h264_init_ppc(DSPContext* c, AVCodecContext *avctx) { | |||
| if (av_get_cpu_flags() & AV_CPU_FLAG_ALTIVEC) { | |||
| c->put_h264_chroma_pixels_tab[0] = put_h264_chroma_mc8_altivec; | |||
| c->avg_h264_chroma_pixels_tab[0] = avg_h264_chroma_mc8_altivec; | |||
| c->put_no_rnd_vc1_chroma_pixels_tab[0] = put_no_rnd_vc1_chroma_mc8_altivec; | |||
| c->avg_no_rnd_vc1_chroma_pixels_tab[0] = avg_no_rnd_vc1_chroma_mc8_altivec; | |||
| #define dspfunc(PFX, IDX, NUM) \ | |||
| c->PFX ## _pixels_tab[IDX][ 0] = PFX ## NUM ## _mc00_altivec; \ | |||
| @@ -75,6 +75,7 @@ | |||
| #define noop(a) a | |||
| #define add28(a) vec_add(v28ss, a) | |||
| #ifdef PREFIX_h264_chroma_mc8_altivec | |||
| static void PREFIX_h264_chroma_mc8_altivec(uint8_t * dst, uint8_t * src, | |||
| int stride, int h, int x, int y) { | |||
| DECLARE_ALIGNED(16, signed int, ABCD)[4] = | |||
| @@ -201,8 +202,10 @@ static void PREFIX_h264_chroma_mc8_altivec(uint8_t * dst, uint8_t * src, | |||
| } | |||
| } | |||
| } | |||
| #endif | |||
| /* this code assume that stride % 16 == 0 */ | |||
| #ifdef PREFIX_no_rnd_vc1_chroma_mc8_altivec | |||
| static void PREFIX_no_rnd_vc1_chroma_mc8_altivec(uint8_t * dst, uint8_t * src, int stride, int h, int x, int y) { | |||
| DECLARE_ALIGNED(16, signed int, ABCD)[4] = | |||
| {((8 - x) * (8 - y)), | |||
| @@ -284,12 +287,14 @@ static void PREFIX_no_rnd_vc1_chroma_mc8_altivec(uint8_t * dst, uint8_t * src, i | |||
| } | |||
| } | |||
| } | |||
| #endif | |||
| #undef noop | |||
| #undef add28 | |||
| #undef CHROMA_MC8_ALTIVEC_CORE | |||
| /* this code assume stride % 16 == 0 */ | |||
| #ifdef PREFIX_h264_qpel16_h_lowpass_altivec | |||
| static void PREFIX_h264_qpel16_h_lowpass_altivec(uint8_t * dst, uint8_t * src, int dstStride, int srcStride) { | |||
| register int i; | |||
| @@ -427,8 +432,10 @@ static void PREFIX_h264_qpel16_h_lowpass_altivec(uint8_t * dst, uint8_t * src, i | |||
| dst += dstStride; | |||
| } | |||
| } | |||
| #endif | |||
| /* this code assume stride % 16 == 0 */ | |||
| #ifdef PREFIX_h264_qpel16_v_lowpass_altivec | |||
| static void PREFIX_h264_qpel16_v_lowpass_altivec(uint8_t * dst, uint8_t * src, int dstStride, int srcStride) { | |||
| register int i; | |||
| @@ -533,8 +540,10 @@ static void PREFIX_h264_qpel16_v_lowpass_altivec(uint8_t * dst, uint8_t * src, i | |||
| dst += dstStride; | |||
| } | |||
| } | |||
| #endif | |||
| /* this code assume stride % 16 == 0 *and* tmp is properly aligned */ | |||
| #ifdef PREFIX_h264_qpel16_hv_lowpass_altivec | |||
| static void PREFIX_h264_qpel16_hv_lowpass_altivec(uint8_t * dst, int16_t * tmp, uint8_t * src, int dstStride, int tmpStride, int srcStride) { | |||
| register int i; | |||
| LOAD_ZERO; | |||
| @@ -765,3 +774,4 @@ static void PREFIX_h264_qpel16_hv_lowpass_altivec(uint8_t * dst, int16_t * tmp, | |||
| dst += dstStride; | |||
| } | |||
| } | |||
| #endif | |||
| @@ -20,6 +20,7 @@ | |||
| */ | |||
| #include "libavcodec/dsputil.h" | |||
| #include "libavcodec/vc1dsp.h" | |||
| #include "util_altivec.h" | |||
| #include "dsputil_altivec.h" | |||
| @@ -321,6 +322,20 @@ static void vc1_inv_trans_8x4_altivec(uint8_t *dest, int stride, DCTELEM *block) | |||
| ADD (dest, src3, perm1) | |||
| } | |||
| #define PUT_OP_U8_ALTIVEC(d, s, dst) d = s | |||
| #define AVG_OP_U8_ALTIVEC(d, s, dst) d = vec_avg(dst, s) | |||
| #define OP_U8_ALTIVEC PUT_OP_U8_ALTIVEC | |||
| #define PREFIX_no_rnd_vc1_chroma_mc8_altivec put_no_rnd_vc1_chroma_mc8_altivec | |||
| #include "h264_template_altivec.c" | |||
| #undef OP_U8_ALTIVEC | |||
| #undef PREFIX_no_rnd_vc1_chroma_mc8_altivec | |||
| #define OP_U8_ALTIVEC AVG_OP_U8_ALTIVEC | |||
| #define PREFIX_no_rnd_vc1_chroma_mc8_altivec avg_no_rnd_vc1_chroma_mc8_altivec | |||
| #include "h264_template_altivec.c" | |||
| #undef OP_U8_ALTIVEC | |||
| #undef PREFIX_no_rnd_vc1_chroma_mc8_altivec | |||
| void ff_vc1dsp_init_altivec(VC1DSPContext* dsp) | |||
| { | |||
| @@ -329,4 +344,6 @@ void ff_vc1dsp_init_altivec(VC1DSPContext* dsp) | |||
| dsp->vc1_inv_trans_8x8 = vc1_inv_trans_8x8_altivec; | |||
| dsp->vc1_inv_trans_8x4 = vc1_inv_trans_8x4_altivec; | |||
| dsp->put_no_rnd_vc1_chroma_pixels_tab[0] = put_no_rnd_vc1_chroma_mc8_altivec; | |||
| dsp->avg_no_rnd_vc1_chroma_pixels_tab[0] = avg_no_rnd_vc1_chroma_mc8_altivec; | |||
| } | |||