changeset 361:dc2fb310008d libavcodec

MV visualisation support
author michaelni
date Sun, 05 May 2002 01:39:07 +0000
parents 71792167020c
children 1ee4ba4ca783
files h263dec.c
diffstat 1 files changed, 34 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/h263dec.c	Sun May 05 01:37:07 2002 +0000
+++ b/h263dec.c	Sun May 05 01:39:07 2002 +0000
@@ -260,7 +260,40 @@
     }
   
     MPV_frame_end(s);
-    
+#if 0 //dirty show MVs, we should export the MV tables and write a filter to show them
+{
+  int mb_y;
+  s->has_b_frames=1;
+  for(mb_y=0; mb_y<s->mb_height; mb_y++){
+    int mb_x;
+    int y= mb_y*16;
+    for(mb_x=0; mb_x<s->mb_width; mb_x++){
+      int x= mb_x*16;
+      uint8_t *ptr= s->last_picture[0];
+      int xy= 1 + mb_x*2 + (mb_y*2 + 1)*(s->mb_width*2 + 2);
+      int mx= (s->motion_val[xy][0]>>1) + x;
+      int my= (s->motion_val[xy][1]>>1) + y;
+      int i;
+      int max;
+
+      if(mx<0) mx=0;
+      if(my<0) my=0;
+      if(mx>=s->width)  mx= s->width -1;
+      if(my>=s->height) my= s->height-1;
+      max= ABS(mx-x);
+      if(ABS(my-y) > max) max= ABS(my-y);
+      /* the ugliest linedrawing routine ... */
+      for(i=0; i<max; i++){
+        int x1= x + (mx-x)*i/max;
+        int y1= y + (my-y)*i/max;
+        ptr[y1*s->linesize + x1]+=100;
+      }
+      s->mbskip_table[mb_x + mb_y*s->mb_width]=0;
+    }
+  }
+
+}
+#endif    
     if(s->pict_type==B_TYPE || (!s->has_b_frames)){
         pict->data[0] = s->current_picture[0];
         pict->data[1] = s->current_picture[1];