[Ffmpeg-cvslog] CVS: ffmpeg/libavcodec/ppc dsputil_snow_altivec.c, 1.3, 1.4
Luca Barbato CVS
lu_zero
Tue Apr 25 19:29:34 CEST 2006
Update of /cvsroot/ffmpeg/ffmpeg/libavcodec/ppc
In directory mail:/var2/tmp/cvs-serv13989/libavcodec/ppc
Modified Files:
dsputil_snow_altivec.c
Log Message:
40% faster decode
Index: dsputil_snow_altivec.c
===================================================================
RCS file: /cvsroot/ffmpeg/ffmpeg/libavcodec/ppc/dsputil_snow_altivec.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- dsputil_snow_altivec.c 31 Mar 2006 09:59:53 -0000 1.3
+++ dsputil_snow_altivec.c 25 Apr 2006 17:29:31 -0000 1.4
@@ -423,8 +423,8 @@
{
int y, x;
DWTELEM * dst;
- vector bool int mask;
- vector signed int vs;
+// vector bool int mask;
+// vector signed int vs;
vector unsigned short h1, h2, l1, l2;
vector unsigned char ih, il, tmp1, tmp2, align;
vector unsigned char b0,b1,b2,b3;
@@ -546,6 +546,18 @@
#endif
+
+#if 1
+ for(x=0; x<b_w; x++)
+ if(add){
+ vbuf[x] += dst[x + src_x];
+ vbuf[x] = (vbuf[x] + (1<<(FRAC_BITS-1))) >> FRAC_BITS;
+ if(vbuf[x]&(~255)) vbuf[x]= ~(vbuf[x]>>31);
+ dst8[x + y*src_stride] = vbuf[x];
+ }else{
+ dst[x + src_x] -= vbuf[x];
+ }
+#else
if(add)
{
for(x=0; x<b_w/4; x++)
@@ -579,7 +591,7 @@
else
for(x=0; x<b_w/4; x++)
d[x] = vec_sub(d[x], v[x]);
-
+#endif
}
@@ -792,11 +804,12 @@
slice_buffer * sb, int add,
uint8_t * dst8)
{
+//FIXME implement src_x&15 cases later
if (b_w == 16)
inner_add_yblock_bw_16_obmc_32_altivec(obmc, obmc_stride, block, b_w,
b_h, src_x, src_y, src_stride,
sb, add, dst8);
- else if (b_w == 8 && ! src_x&15 )
+ else if (b_w == 8)
inner_add_yblock_bw_8_obmc_16_altivec(obmc, obmc_stride, block,
b_w, b_h, src_x, src_y,
src_stride, sb, add, dst8);
More information about the ffmpeg-cvslog
mailing list