Patch by Brian Foley % bfoley A compsoc P nuigalway P ie % Original thread: Date: Nov 26, 2006 6:44 PM Subject: Re: [Ffmpeg-devel] [PATCH] put_mpeg4_qpel16_h_lowpass altivec, take 2 Originally committed as revision 7172 to svn://svn.ffmpeg.org/ffmpeg/trunktags/v0.5
| @@ -1513,83 +1513,6 @@ static void put_no_rnd_h264_chroma_mc8_c(uint8_t *dst/*align 8*/, uint8_t *src/* | |||||
| } | } | ||||
| } | } | ||||
| static inline void copy_block2(uint8_t *dst, uint8_t *src, int dstStride, int srcStride, int h) | |||||
| { | |||||
| int i; | |||||
| for(i=0; i<h; i++) | |||||
| { | |||||
| ST16(dst , LD16(src )); | |||||
| dst+=dstStride; | |||||
| src+=srcStride; | |||||
| } | |||||
| } | |||||
| static inline void copy_block4(uint8_t *dst, uint8_t *src, int dstStride, int srcStride, int h) | |||||
| { | |||||
| int i; | |||||
| for(i=0; i<h; i++) | |||||
| { | |||||
| ST32(dst , LD32(src )); | |||||
| dst+=dstStride; | |||||
| src+=srcStride; | |||||
| } | |||||
| } | |||||
| static inline void copy_block8(uint8_t *dst, uint8_t *src, int dstStride, int srcStride, int h) | |||||
| { | |||||
| int i; | |||||
| for(i=0; i<h; i++) | |||||
| { | |||||
| ST32(dst , LD32(src )); | |||||
| ST32(dst+4 , LD32(src+4 )); | |||||
| dst+=dstStride; | |||||
| src+=srcStride; | |||||
| } | |||||
| } | |||||
| static inline void copy_block16(uint8_t *dst, uint8_t *src, int dstStride, int srcStride, int h) | |||||
| { | |||||
| int i; | |||||
| for(i=0; i<h; i++) | |||||
| { | |||||
| ST32(dst , LD32(src )); | |||||
| ST32(dst+4 , LD32(src+4 )); | |||||
| ST32(dst+8 , LD32(src+8 )); | |||||
| ST32(dst+12, LD32(src+12)); | |||||
| dst+=dstStride; | |||||
| src+=srcStride; | |||||
| } | |||||
| } | |||||
| static inline void copy_block17(uint8_t *dst, uint8_t *src, int dstStride, int srcStride, int h) | |||||
| { | |||||
| int i; | |||||
| for(i=0; i<h; i++) | |||||
| { | |||||
| ST32(dst , LD32(src )); | |||||
| ST32(dst+4 , LD32(src+4 )); | |||||
| ST32(dst+8 , LD32(src+8 )); | |||||
| ST32(dst+12, LD32(src+12)); | |||||
| dst[16]= src[16]; | |||||
| dst+=dstStride; | |||||
| src+=srcStride; | |||||
| } | |||||
| } | |||||
| static inline void copy_block9(uint8_t *dst, uint8_t *src, int dstStride, int srcStride, int h) | |||||
| { | |||||
| int i; | |||||
| for(i=0; i<h; i++) | |||||
| { | |||||
| ST32(dst , LD32(src )); | |||||
| ST32(dst+4 , LD32(src+4 )); | |||||
| dst[8]= src[8]; | |||||
| dst+=dstStride; | |||||
| src+=srcStride; | |||||
| } | |||||
| } | |||||
| #define QPEL_MC(r, OPNAME, RND, OP) \ | #define QPEL_MC(r, OPNAME, RND, OP) \ | ||||
| static void OPNAME ## mpeg4_qpel8_h_lowpass(uint8_t *dst, uint8_t *src, int dstStride, int srcStride, int h){\ | static void OPNAME ## mpeg4_qpel8_h_lowpass(uint8_t *dst, uint8_t *src, int dstStride, int srcStride, int h){\ | ||||
| uint8_t *cm = ff_cropTbl + MAX_NEG_CROP;\ | uint8_t *cm = ff_cropTbl + MAX_NEG_CROP;\ | ||||
| @@ -698,4 +698,81 @@ static int name16(void /*MpegEncContext*/ *s, uint8_t *dst, uint8_t *src, int st | |||||
| return score;\ | return score;\ | ||||
| } | } | ||||
| static inline void copy_block2(uint8_t *dst, uint8_t *src, int dstStride, int srcStride, int h) | |||||
| { | |||||
| int i; | |||||
| for(i=0; i<h; i++) | |||||
| { | |||||
| ST16(dst , LD16(src )); | |||||
| dst+=dstStride; | |||||
| src+=srcStride; | |||||
| } | |||||
| } | |||||
| static inline void copy_block4(uint8_t *dst, uint8_t *src, int dstStride, int srcStride, int h) | |||||
| { | |||||
| int i; | |||||
| for(i=0; i<h; i++) | |||||
| { | |||||
| ST32(dst , LD32(src )); | |||||
| dst+=dstStride; | |||||
| src+=srcStride; | |||||
| } | |||||
| } | |||||
| static inline void copy_block8(uint8_t *dst, uint8_t *src, int dstStride, int srcStride, int h) | |||||
| { | |||||
| int i; | |||||
| for(i=0; i<h; i++) | |||||
| { | |||||
| ST32(dst , LD32(src )); | |||||
| ST32(dst+4 , LD32(src+4 )); | |||||
| dst+=dstStride; | |||||
| src+=srcStride; | |||||
| } | |||||
| } | |||||
| static inline void copy_block9(uint8_t *dst, uint8_t *src, int dstStride, int srcStride, int h) | |||||
| { | |||||
| int i; | |||||
| for(i=0; i<h; i++) | |||||
| { | |||||
| ST32(dst , LD32(src )); | |||||
| ST32(dst+4 , LD32(src+4 )); | |||||
| dst[8]= src[8]; | |||||
| dst+=dstStride; | |||||
| src+=srcStride; | |||||
| } | |||||
| } | |||||
| static inline void copy_block16(uint8_t *dst, uint8_t *src, int dstStride, int srcStride, int h) | |||||
| { | |||||
| int i; | |||||
| for(i=0; i<h; i++) | |||||
| { | |||||
| ST32(dst , LD32(src )); | |||||
| ST32(dst+4 , LD32(src+4 )); | |||||
| ST32(dst+8 , LD32(src+8 )); | |||||
| ST32(dst+12, LD32(src+12)); | |||||
| dst+=dstStride; | |||||
| src+=srcStride; | |||||
| } | |||||
| } | |||||
| static inline void copy_block17(uint8_t *dst, uint8_t *src, int dstStride, int srcStride, int h) | |||||
| { | |||||
| int i; | |||||
| for(i=0; i<h; i++) | |||||
| { | |||||
| ST32(dst , LD32(src )); | |||||
| ST32(dst+4 , LD32(src+4 )); | |||||
| ST32(dst+8 , LD32(src+8 )); | |||||
| ST32(dst+12, LD32(src+12)); | |||||
| dst[16]= src[16]; | |||||
| dst+=dstStride; | |||||
| src+=srcStride; | |||||
| } | |||||
| } | |||||
| #endif | #endif | ||||
| @@ -564,73 +564,6 @@ H264_CHROMA_MC(avg_ , op_avg) | |||||
| #undef op_avg | #undef op_avg | ||||
| #undef op_put | #undef op_put | ||||
| /* not yet optimized */ | |||||
| static inline void copy_block4(uint8_t *dst, uint8_t *src, int dstStride, int srcStride, int h) | |||||
| { | |||||
| int i; | |||||
| for(i=0; i<h; i++) | |||||
| { | |||||
| ST32(dst , LD32(src )); | |||||
| dst+=dstStride; | |||||
| src+=srcStride; | |||||
| } | |||||
| } | |||||
| static inline void copy_block8(uint8_t *dst, uint8_t *src, int dstStride, int srcStride, int h) | |||||
| { | |||||
| int i; | |||||
| for(i=0; i<h; i++) | |||||
| { | |||||
| ST32(dst , LD32(src )); | |||||
| ST32(dst+4 , LD32(src+4 )); | |||||
| dst+=dstStride; | |||||
| src+=srcStride; | |||||
| } | |||||
| } | |||||
| static inline void copy_block16(uint8_t *dst, uint8_t *src, int dstStride, int srcStride, int h) | |||||
| { | |||||
| int i; | |||||
| for(i=0; i<h; i++) | |||||
| { | |||||
| ST32(dst , LD32(src )); | |||||
| ST32(dst+4 , LD32(src+4 )); | |||||
| ST32(dst+8 , LD32(src+8 )); | |||||
| ST32(dst+12, LD32(src+12)); | |||||
| dst+=dstStride; | |||||
| src+=srcStride; | |||||
| } | |||||
| } | |||||
| static inline void copy_block17(uint8_t *dst, uint8_t *src, int dstStride, int srcStride, int h) | |||||
| { | |||||
| int i; | |||||
| for(i=0; i<h; i++) | |||||
| { | |||||
| ST32(dst , LD32(src )); | |||||
| ST32(dst+4 , LD32(src+4 )); | |||||
| ST32(dst+8 , LD32(src+8 )); | |||||
| ST32(dst+12, LD32(src+12)); | |||||
| dst[16]= src[16]; | |||||
| dst+=dstStride; | |||||
| src+=srcStride; | |||||
| } | |||||
| } | |||||
| static inline void copy_block9(uint8_t *dst, uint8_t *src, int dstStride, int srcStride, int h) | |||||
| { | |||||
| int i; | |||||
| for(i=0; i<h; i++) | |||||
| { | |||||
| ST32(dst , LD32(src )); | |||||
| ST32(dst+4 , LD32(src+4 )); | |||||
| dst[8]= src[8]; | |||||
| dst+=dstStride; | |||||
| src+=srcStride; | |||||
| } | |||||
| } | |||||
| /* end not optimized */ | |||||
| #define QPEL_MC(r, OPNAME, RND, OP) \ | #define QPEL_MC(r, OPNAME, RND, OP) \ | ||||
| static void OPNAME ## mpeg4_qpel8_h_lowpass(uint8_t *dst, uint8_t *src, int dstStride, int srcStride, int h){\ | static void OPNAME ## mpeg4_qpel8_h_lowpass(uint8_t *dst, uint8_t *src, int dstStride, int srcStride, int h){\ | ||||
| uint8_t *cm = ff_cropTbl + MAX_NEG_CROP;\ | uint8_t *cm = ff_cropTbl + MAX_NEG_CROP;\ | ||||