diff mpegvideo.c @ 598:0c950f816d61 libavcodec

4mv + bframe decoding bugfix
author michaelni
date Mon, 05 Aug 2002 21:36:14 +0000
parents 909e50c67d0e
children b1a191202f96
line wrap: on
line diff
--- a/mpegvideo.c	Mon Aug 05 19:05:02 2002 +0000
+++ b/mpegvideo.c	Mon Aug 05 21:36:14 2002 +0000
@@ -236,6 +236,9 @@
         /* MV prediction */
         size = (2 * s->mb_width + 2) * (2 * s->mb_height + 2);
         CHECKED_ALLOCZ(s->motion_val, size * 2 * sizeof(INT16));
+        
+        /* 4mv direct mode decoding table */
+        CHECKED_ALLOCZ(s->non_b_mv4_table, size * sizeof(UINT8))
     }
 
     if (s->h263_pred || s->h263_plus) {
@@ -324,7 +327,8 @@
     av_freep(&s->tex_pb_buffer);
     av_freep(&s->pb2_buffer);
     av_freep(&s->edge_emu_buffer);
-    
+    av_freep(&s->non_b_mv4_table);
+
     for(i=0;i<3;i++) {
         int j;
         if(!(s->flags&CODEC_FLAG_DR1)){
@@ -1453,6 +1457,9 @@
             s->motion_val[xy + wrap][1] = motion_y;
             s->motion_val[xy + 1 + wrap][0] = motion_x;
             s->motion_val[xy + 1 + wrap][1] = motion_y;
+            s->non_b_mv4_table[xy]=0;
+        } else { /* 8X8 */
+            s->non_b_mv4_table[xy]=1;
         }
     }