Browse code

fix initialization bug in which execution overwrites essential data tables which causes trouble on subsequent runs if decoder is not disposed first

Originally committed as revision 3214 to svn://svn.ffmpeg.org/ffmpeg/trunk

Mike Melanson authored on 2004/06/11 11:24:08
Showing 1 changed files
... ...
@@ -62,10 +62,10 @@ typedef struct TrueMotion1Context {
62 62
     int block_width;
63 63
     int block_height;
64 64
 
65
-    int16_t *ydt;
66
-    int16_t *cdt;
67
-    int16_t *fat_ydt;
68
-    int16_t *fat_cdt;
65
+    int16_t ydt[8];
66
+    int16_t cdt[8];
67
+    int16_t fat_ydt[8];
68
+    int16_t fat_cdt[8];
69 69
     
70 70
     int last_deltaset, last_vectable;
71 71
 
... ...
@@ -146,10 +146,10 @@ static void select_delta_tables(TrueMotion1Context *s, int delta_table_index)
146 146
     if (delta_table_index > 3)
147 147
         return;
148 148
 
149
-    s->ydt = ydts[delta_table_index];
150
-    s->cdt = cdts[delta_table_index];
151
-    s->fat_ydt = fat_ydts[delta_table_index];
152
-    s->fat_cdt = fat_cdts[delta_table_index];
149
+    memcpy(s->ydt, ydts[delta_table_index], 8 * sizeof(int16_t));
150
+    memcpy(s->cdt, cdts[delta_table_index], 8 * sizeof(int16_t));
151
+    memcpy(s->fat_ydt, fat_ydts[delta_table_index], 8 * sizeof(int16_t));
152
+    memcpy(s->fat_cdt, fat_cdts[delta_table_index], 8 * sizeof(int16_t));
153 153
 
154 154
     /* Y skinny deltas need to be halved for some reason; maybe the
155 155
      * skinny Y deltas should be modified */