diff error_resilience.c @ 2444:a3e29f9ab677 libavcodec

count errors instead of printing 2^31
author michael
date Fri, 21 Jan 2005 23:47:03 +0000
parents 30d8b99e00f3
children 682c57163e60
line wrap: on
line diff
--- a/error_resilience.c	Fri Jan 21 22:16:05 2005 +0000
+++ b/error_resilience.c	Fri Jan 21 23:47:03 2005 +0000
@@ -661,7 +661,7 @@
 }
 
 void ff_er_frame_end(MpegEncContext *s){
-    int i, mb_x, mb_y, error, error_type;
+    int i, mb_x, mb_y, error, error_type, dc_error, mv_error, ac_error;
     int distance;
     int threshold_part[4]= {100,100,100};
     int threshold= 50;
@@ -672,8 +672,6 @@
     if(!s->error_resilience || s->error_count==0 || 
        s->error_count==3*s->mb_width*(s->avctx->skip_top + s->avctx->skip_bottom)) return;
 
-    av_log(s->avctx, AV_LOG_INFO, "concealing %d errors\n", s->error_count);
-    
     if(s->current_picture.motion_val[0] == NULL){
         av_log(s->avctx, AV_LOG_ERROR, "Warning MVs not available\n");
             
@@ -821,6 +819,17 @@
         }
     }
 #endif
+
+    dc_error= ac_error= mv_error=0;
+    for(i=0; i<s->mb_num; i++){
+        const int mb_xy= s->mb_index2xy[i];
+        error= s->error_status_table[mb_xy];
+        if(error&DC_ERROR) dc_error ++;
+        if(error&AC_ERROR) ac_error ++;
+        if(error&MV_ERROR) mv_error ++;
+    }
+    av_log(s->avctx, AV_LOG_INFO, "concealing %d DC, %d AC, %d MV errors\n", dc_error, ac_error, mv_error);
+
     is_intra_likely= is_intra_more_likely(s);
 
     /* set unknown mb-type to most likely */