changeset 2719:5444d77adcbe libavcodec

another bitstream extraction to optimize: fixed-length motion vectors
author melanson
date Sat, 21 May 2005 01:12:41 +0000
parents 158dc437c783
children 4a5ed2d916f6
files vp3.c vp3data.h
diffstat 2 files changed, 22 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/vp3.c	Thu May 19 23:59:10 2005 +0000
+++ b/vp3.c	Sat May 21 01:12:41 2005 +0000
@@ -1540,9 +1540,15 @@
                         motion_y[0] = get_motion_vector_vlc(gb);
 #endif
                     } else {
+#if 1
+                        motion_x[0] = fixed_motion_vector_table[get_bits(gb, 6)];
+                        motion_y[0] = fixed_motion_vector_table[get_bits(gb, 6)];
+#else
                         motion_x[0] = get_motion_vector_fixed(gb);
                         motion_y[0] = get_motion_vector_fixed(gb);
+#endif
                     }
+
                     for (k = 1; k < 6; k++) {
                         motion_x[k] = motion_x[0];
                         motion_y[k] = motion_y[0];
@@ -1572,8 +1578,13 @@
                             motion_y[k] = get_motion_vector_vlc(gb);
 #endif
                         } else {
+#if 1
+                            motion_x[k] = fixed_motion_vector_table[get_bits(gb, 6)];
+                            motion_y[k] = fixed_motion_vector_table[get_bits(gb, 6)];
+#else
                             motion_x[k] = get_motion_vector_fixed(gb);
                             motion_y[k] = get_motion_vector_fixed(gb);
+#endif
                         }
                         motion_x[4] += motion_x[k];
                         motion_y[4] += motion_y[k];
--- a/vp3data.h	Thu May 19 23:59:10 2005 +0000
+++ b/vp3data.h	Sat May 21 01:12:41 2005 +0000
@@ -163,6 +163,17 @@
     24, -24, 25, -25, 26, -26, 27, -27, 28, -28, 29, -29, 30, -30, 31, -31
 };
 
+static const int8_t fixed_motion_vector_table[64] = {
+   0,   0,   1,  -1,   2,  -2,   3,  -3,   
+   4,  -4,   5,  -5,   6,  -6,   7,  -7,
+   8,  -8,   9,  -9,  10, -10,  11, -11,
+  12, -12,  13, -13,  14, -14,  15, -15,
+  16, -16,  17, -17,  18, -18,  19, -19,
+  20, -20,  21, -21,  22, -22,  23, -23,
+  24, -24,  25, -25,  26, -26,  27, -27,
+  28, -28,  29, -29,  30, -30,  31, -31
+};
+
 /* only tokens 0..6 indicate eob runs */
 static const int eob_run_base[7] = {
     1, 2, 3, 4, 8, 16, 0