diff h261.c @ 2045:9447bbd8a7e9 libavcodec

rewrite h261 loop filter no malloc(64) memcpy free stuff no filter1 A->B then filter2 A->B (yes not B->A) no incorrect rouding after the 1d filter
author michael
date Sun, 30 May 2004 21:21:13 +0000
parents b6f2add2511e
children 863ce5459aec
line wrap: on
line diff
--- a/h261.c	Sun May 30 20:37:15 2004 +0000
+++ b/h261.c	Sun May 30 21:21:13 2004 +0000
@@ -64,44 +64,13 @@
     uint8_t *dest_y = s->dest[0];
     uint8_t *dest_cb= s->dest[1];
     uint8_t *dest_cr= s->dest[2];
-    uint8_t *src;
-
-    CHECKED_ALLOCZ((src),sizeof(uint8_t) * 64 );
-
-    for(i=0; i<8;i++)
-        memcpy(src+i*8,dest_y+i*linesize,sizeof(uint8_t) * 8 );
-    s->dsp.h261_v_loop_filter(dest_y, src, linesize);
-    s->dsp.h261_h_loop_filter(dest_y, src, linesize);
-
-    for(i=0; i<8;i++)
-        memcpy(src+i*8,dest_y+i*linesize + 8,sizeof(uint8_t) * 8 );
-    s->dsp.h261_v_loop_filter(dest_y + 8, src, linesize);
-    s->dsp.h261_h_loop_filter(dest_y + 8, src, linesize);
-
-    for(i=0; i<8;i++)
-        memcpy(src+i*8,dest_y+(i+8)*linesize,sizeof(uint8_t) * 8 );
-    s->dsp.h261_v_loop_filter(dest_y + 8 * linesize, src, linesize);
-    s->dsp.h261_h_loop_filter(dest_y + 8 * linesize, src, linesize);
-
-    for(i=0; i<8;i++)
-        memcpy(src+i*8,dest_y+(i+8)*linesize + 8,sizeof(uint8_t) * 8 );
-    s->dsp.h261_v_loop_filter(dest_y + 8 * linesize + 8, src, linesize);
-    s->dsp.h261_h_loop_filter(dest_y + 8 * linesize + 8, src, linesize);
-
-    for(i=0; i<8;i++)
-        memcpy(src+i*8,dest_cb+i*uvlinesize,sizeof(uint8_t) * 8 );
-    s->dsp.h261_v_loop_filter(dest_cb, src, uvlinesize);
-    s->dsp.h261_h_loop_filter(dest_cb, src, uvlinesize);
-
-    for(i=0; i<8;i++)
-        memcpy(src+i*8,dest_cr+i*uvlinesize,sizeof(uint8_t) * 8 );
-    s->dsp.h261_v_loop_filter(dest_cr, src, uvlinesize);
-    s->dsp.h261_h_loop_filter(dest_cr, src, uvlinesize);
-
-fail:
-    av_free(src);
-
-    return;
+    
+    s->dsp.h261_loop_filter(dest_y                   , linesize);
+    s->dsp.h261_loop_filter(dest_y                + 8, linesize);
+    s->dsp.h261_loop_filter(dest_y + 8 * linesize    , linesize);
+    s->dsp.h261_loop_filter(dest_y + 8 * linesize + 8, linesize);
+    s->dsp.h261_loop_filter(dest_cb, uvlinesize);
+    s->dsp.h261_loop_filter(dest_cr, uvlinesize);
 }
 
 static int h261_decode_block(H261Context *h, DCTELEM *block,