[FFmpeg-cvslog] r16252 - trunk/libavcodec/h264.c

michael subversion
Sun Dec 21 16:58:43 CET 2008


Author: michael
Date: Sun Dec 21 16:58:42 2008
New Revision: 16252

Log:
Only execute clear_blocks() when needed.
+0.3% speedup for both aladin & cathedral.


Modified:
   trunk/libavcodec/h264.c

Modified: trunk/libavcodec/h264.c
==============================================================================
--- trunk/libavcodec/h264.c	(original)
+++ trunk/libavcodec/h264.c	Sun Dec 21 16:58:42 2008
@@ -2595,6 +2595,9 @@ static av_always_inline void hl_decode_m
             }
         }
     }
+    if(h->cbp || IS_INTRA(mb_type))
+        s->dsp.clear_blocks(h->mb);
+
     if(h->deblocking_filter) {
         backup_mb_border(h, dest_y, dest_cb, dest_cr, linesize, uvlinesize, simple);
         fill_caches(h, mb_type, 1); //FIXME don't fill stuff which isn't used by filter_mb
@@ -4262,8 +4265,6 @@ static int decode_mb_cavlc(H264Context *
 
     mb_xy = h->mb_xy = s->mb_x + s->mb_y*s->mb_stride;
 
-    s->dsp.clear_blocks(h->mb); //FIXME avoid if already clear (move after skip handlong?
-
     tprintf(s->avctx, "pic:%d mb:%d/%d\n", h->frame_num, s->mb_x, s->mb_y);
     cbp = 0; /* avoid warning. FIXME: find a solution without slowing
                 down the code */
@@ -5340,8 +5341,6 @@ static int decode_mb_cabac(H264Context *
 
     mb_xy = h->mb_xy = s->mb_x + s->mb_y*s->mb_stride;
 
-    s->dsp.clear_blocks(h->mb); //FIXME avoid if already clear (move after skip handlong?)
-
     tprintf(s->avctx, "pic:%d mb:%d/%d\n", h->frame_num, s->mb_x, s->mb_y);
     if( h->slice_type_nos != FF_I_TYPE ) {
         int skip;




More information about the ffmpeg-cvslog mailing list