diff h263.c @ 21:20e680e7a490 libavcodec

get_bits() specialization, gives 4\speedup
author arpi_esp
date Sat, 04 Aug 2001 00:46:50 +0000
parents 1d3ac9654178
children 8e2d8dbf89a5
line wrap: on
line diff
--- a/h263.c	Fri Aug 03 23:09:15 2001 +0000
+++ b/h263.c	Sat Aug 04 00:46:50 2001 +0000
@@ -729,7 +729,7 @@
     static UINT8 quant_tab[4] = { -1, -2, 1, 2 };
 
     if (s->pict_type == P_TYPE) {
-        if (get_bits(&s->gb, 1)) {
+        if (get_bits1(&s->gb)) {
             /* skip mb */
             s->mb_intra = 0;
             for(i=0;i<6;i++)
@@ -796,7 +796,7 @@
     } else {
         s->ac_pred = 0;
 	if (s->h263_pred) {
-            s->ac_pred = get_bits(&s->gb, 1);
+            s->ac_pred = get_bits1(&s->gb);
         }
         cbpy = get_vlc(&s->gb, &cbpy_vlc);
         cbp = (cbpc & 3) | (cbpy << 2);
@@ -834,7 +834,7 @@
 
     if (code == 0)
         return pred;
-    sign = get_bits(&s->gb, 1);
+    sign = get_bits1(&s->gb);
     shift = s->f_code - 1;
     val = (code - 1) << shift;
     if (shift > 0)
@@ -906,7 +906,7 @@
             return -1;
         if (code == rl->n) {
             /* escape */
-            last = get_bits(&s->gb, 1);
+            last = get_bits1(&s->gb);
             run = get_bits(&s->gb, 6);
             level = (INT8)get_bits(&s->gb, 8);
             if (s->h263_rv10 && level == -128) {
@@ -918,7 +918,7 @@
             run = rl->table_run[code];
             level = rl->table_level[code];
             last = code >= rl->last;
-            if (get_bits(&s->gb, 1))
+            if (get_bits1(&s->gb))
                 level = -level;
         }
         i += run;
@@ -952,7 +952,7 @@
         if ((level >> (code - 1)) == 0) /* if MSB not set it is negative*/
             level = - (level ^ ((1 << code) - 1));
         if (code > 8)
-            get_bits(&s->gb, 1); /* marker */
+            skip_bits1(&s->gb); /* marker */
     }
 
     pred = mpeg4_pred_dc(s, n, &dc_val, dir_ptr);
@@ -1009,15 +1009,15 @@
             return -1;
         if (code == rl->n) {
             /* escape */
-            if (get_bits(&s->gb, 1) != 0) {
-                if (get_bits(&s->gb, 1) != 0) {
+            if (get_bits1(&s->gb) != 0) {
+                if (get_bits1(&s->gb) != 0) {
                     /* third escape */
-                    last = get_bits(&s->gb, 1);
+                    last = get_bits1(&s->gb);
                     run = get_bits(&s->gb, 6);
-                    get_bits(&s->gb, 1); /* marker */
+                    get_bits1(&s->gb); /* marker */
                     level = get_bits(&s->gb, 12);
                     level = (level << 20) >> 20; /* sign extend */
-                    get_bits(&s->gb, 1); /* marker */
+                    skip_bits1(&s->gb); /* marker */
                 } else {
                     /* second escape */
                     code = get_vlc(&s->gb, &rl->vlc);
@@ -1027,7 +1027,7 @@
                     level = rl->table_level[code];
                     last = code >= rl->last;
                     run += rl->max_run[last][level] + 1;
-                    if (get_bits(&s->gb, 1))
+                    if (get_bits1(&s->gb))
                         level = -level;
                 }
             } else {
@@ -1039,14 +1039,14 @@
                 level = rl->table_level[code];
                 last = code >= rl->last;
                 level += rl->max_level[last][run];
-                if (get_bits(&s->gb, 1))
+                if (get_bits1(&s->gb))
                     level = -level;
             }
         } else {
             run = rl->table_run[code];
             level = rl->table_level[code];
             last = code >= rl->last;
-            if (get_bits(&s->gb, 1))
+            if (get_bits1(&s->gb))
                 level = -level;
         }
         i += run;
@@ -1077,15 +1077,15 @@
     /* picture header */
     if (get_bits(&s->gb, 22) != 0x20)
         return -1;
-    get_bits(&s->gb, 8); /* picture timestamp */
+    skip_bits(&s->gb, 8); /* picture timestamp */
 
-    if (get_bits(&s->gb, 1) != 1)
+    if (get_bits1(&s->gb) != 1)
         return -1;	/* marker */
-    if (get_bits(&s->gb, 1) != 0)
+    if (get_bits1(&s->gb) != 0)
         return -1;	/* h263 id */
-    get_bits(&s->gb, 1);	/* split screen off */
-    get_bits(&s->gb, 1);	/* camera  off */
-    get_bits(&s->gb, 1);	/* freeze picture release off */
+    skip_bits1(&s->gb);	/* split screen off */
+    skip_bits1(&s->gb);	/* camera  off */
+    skip_bits1(&s->gb);	/* freeze picture release off */
 
     format = get_bits(&s->gb, 3);
 
@@ -1097,20 +1097,20 @@
         if (!width)
             return -1;
 
-        s->pict_type = I_TYPE + get_bits(&s->gb, 1);
+        s->pict_type = I_TYPE + get_bits1(&s->gb);
 
-        s->unrestricted_mv = get_bits(&s->gb, 1); 
+        s->unrestricted_mv = get_bits1(&s->gb); 
         s->h263_long_vectors = s->unrestricted_mv;
 
-        if (get_bits(&s->gb, 1) != 0)
+        if (get_bits1(&s->gb) != 0)
             return -1;	/* SAC: off */
-        if (get_bits(&s->gb, 1) != 0)
+        if (get_bits1(&s->gb) != 0)
             return -1;	/* advanced prediction mode: off */
-        if (get_bits(&s->gb, 1) != 0)
+        if (get_bits1(&s->gb) != 0)
             return -1;	/* not PB frame */
 
         s->qscale = get_bits(&s->gb, 5);
-        get_bits(&s->gb, 1);	/* Continuous Presence Multipoint mode: off */
+        skip_bits1(&s->gb);	/* Continuous Presence Multipoint mode: off */
     } else {
         s->h263_plus = 1;
         /* H.263v2 */
@@ -1118,24 +1118,24 @@
             return -1;
         if (get_bits(&s->gb, 3) != 6) /* custom source format */
             return -1;
-        get_bits(&s->gb, 12);
-        get_bits(&s->gb, 3);
+        skip_bits(&s->gb, 12);
+        skip_bits(&s->gb, 3);
         s->pict_type = get_bits(&s->gb, 3) + 1;
         if (s->pict_type != I_TYPE &&
             s->pict_type != P_TYPE)
             return -1;
-        get_bits(&s->gb, 7);
-        get_bits(&s->gb, 4); /* aspect ratio */
+        skip_bits(&s->gb, 7);
+        skip_bits(&s->gb, 4); /* aspect ratio */
         width = (get_bits(&s->gb, 9) + 1) * 4;
-        get_bits(&s->gb, 1);
+        skip_bits1(&s->gb);
         height = get_bits(&s->gb, 9) * 4;
         if (height == 0)
             return -1;
         s->qscale = get_bits(&s->gb, 5);
     }
     /* PEI */
-    while (get_bits(&s->gb, 1) != 0) {
-        get_bits(&s->gb, 8);
+    while (get_bits1(&s->gb) != 0) {
+        skip_bits(&s->gb, 8);
     }
     s->f_code = 1;
     s->width = width;
@@ -1169,40 +1169,40 @@
         int time_increment_resolution, width, height;
 
         /* vol header */
-        get_bits(&s->gb, 1); /* random access */
-        get_bits(&s->gb, 8); /* vo_type */
-        get_bits(&s->gb, 1); /* is_ol_id */
-        get_bits(&s->gb, 4); /* vo_ver_id */
-        get_bits(&s->gb, 3); /* vo_priority */
+        skip_bits(&s->gb, 1); /* random access */
+        skip_bits(&s->gb, 8); /* vo_type */
+        skip_bits(&s->gb, 1); /* is_ol_id */
+        skip_bits(&s->gb, 4); /* vo_ver_id */
+        skip_bits(&s->gb, 3); /* vo_priority */
         
-        get_bits(&s->gb, 4); /* aspect_ratio_info */
-        get_bits(&s->gb, 1); /* vol control parameter */
-        get_bits(&s->gb, 2); /* vol shape */
-        get_bits(&s->gb, 1); /* marker */
+        skip_bits(&s->gb, 4); /* aspect_ratio_info */
+        skip_bits(&s->gb, 1); /* vol control parameter */
+        skip_bits(&s->gb, 2); /* vol shape */
+        skip_bits1(&s->gb);   /* marker */
         
         time_increment_resolution = get_bits(&s->gb, 16);
         s->time_increment_bits = log2(time_increment_resolution - 1) + 1;
-        get_bits(&s->gb, 1); /* marker */
+        skip_bits1(&s->gb);   /* marker */
 
-        get_bits(&s->gb, 1); /* vop rate  */
-        get_bits(&s->gb, s->time_increment_bits);
-        get_bits(&s->gb, 1); /* marker */
+        skip_bits1(&s->gb);   /* vop rate  */
+        skip_bits(&s->gb, s->time_increment_bits);
+        skip_bits1(&s->gb);   /* marker */
         
         width = get_bits(&s->gb, 13);
-        get_bits(&s->gb, 1); /* marker */
+        skip_bits1(&s->gb);   /* marker */
         height = get_bits(&s->gb, 13);
-        get_bits(&s->gb, 1); /* marker */
+        skip_bits1(&s->gb);   /* marker */
         
-        get_bits(&s->gb, 1); /* interfaced */
-        get_bits(&s->gb, 1); /* OBMC */
-        get_bits(&s->gb, 2); /* vol_sprite_usage */
-        get_bits(&s->gb, 1); /* not_8_bit */
+        skip_bits1(&s->gb);   /* interfaced */
+        skip_bits1(&s->gb);   /* OBMC */
+        skip_bits(&s->gb, 2); /* vol_sprite_usage */
+        skip_bits1(&s->gb);   /* not_8_bit */
 
-        get_bits(&s->gb, 1); /* vol_quant_type */
-        get_bits(&s->gb, 1); /* vol_quarter_pixel */
-        get_bits(&s->gb, 1); /* complexity_estimation_disabled */
-        get_bits(&s->gb, 1); /* resync_marker_disabled */
-        get_bits(&s->gb, 1); /* data_partioning_enabled */
+        skip_bits1(&s->gb);   /* vol_quant_type */
+        skip_bits1(&s->gb);   /* vol_quarter_pixel */
+        skip_bits1(&s->gb);   /* complexity_estimation_disabled */
+        skip_bits1(&s->gb);   /* resync_marker_disabled */
+        skip_bits1(&s->gb);   /* data_partioning_enabled */
         goto redo;
     } else if (startcode != 0x1b6) {
         goto redo;
@@ -1215,19 +1215,19 @@
     
     /* XXX: parse time base */
     time_incr = 0;
-    while (get_bits(&s->gb, 1) != 0) 
+    while (get_bits1(&s->gb) != 0) 
         time_incr++;
 
-    get_bits(&s->gb, 1);	/* marker */
-    get_bits(&s->gb, s->time_increment_bits);
-    get_bits(&s->gb, 1);	/* marker */
+    skip_bits1(&s->gb);   	/* marker */
+    skip_bits(&s->gb, s->time_increment_bits);
+    skip_bits1(&s->gb);   	/* marker */
     /* vop coded */
-    if (get_bits(&s->gb, 1) != 1)
+    if (get_bits1(&s->gb) != 1)
 	return -1; 
     
     if (s->pict_type == P_TYPE) {
         /* rounding type for motion estimation */
-	s->no_rounding = get_bits(&s->gb, 1);
+	s->no_rounding = get_bits1(&s->gb);
     }
         
     if (get_bits(&s->gb, 3) != 0)
@@ -1249,15 +1249,15 @@
     /* picture header */
     if (get_bits(&s->gb, 22) != 0x20)
         return -1;
-    get_bits(&s->gb, 8); /* picture timestamp */
+    skip_bits(&s->gb, 8); /* picture timestamp */
 
-    if (get_bits(&s->gb, 1) != 1)
+    if (get_bits1(&s->gb) != 1)
         return -1;	/* marker */
-    if (get_bits(&s->gb, 1) != 0)
+    if (get_bits1(&s->gb) != 0)
         return -1;	/* h263 id */
-    get_bits(&s->gb, 1);	/* split screen off */
-    get_bits(&s->gb, 1);	/* camera  off */
-    get_bits(&s->gb, 1);	/* freeze picture release off */
+    skip_bits1(&s->gb);	/* split screen off */
+    skip_bits1(&s->gb);	/* camera  off */
+    skip_bits1(&s->gb);	/* freeze picture release off */
 
     format = get_bits(&s->gb, 3);
     if (format != 7)
@@ -1265,27 +1265,27 @@
 
     s->h263_plus = 0;
 
-    s->pict_type = I_TYPE + get_bits(&s->gb, 1);
+    s->pict_type = I_TYPE + get_bits1(&s->gb);
     
-    s->unrestricted_mv = get_bits(&s->gb, 1); 
+    s->unrestricted_mv = get_bits1(&s->gb); 
     s->h263_long_vectors = s->unrestricted_mv;
 
-    if (get_bits(&s->gb, 1) != 0)
+    if (get_bits1(&s->gb) != 0)
         return -1;	/* SAC: off */
-    if (get_bits(&s->gb, 1) != 0)
+    if (get_bits1(&s->gb) != 0)
         return -1;	/* advanced prediction mode: off */
-    if (get_bits(&s->gb, 1) != 0)
+    if (get_bits1(&s->gb) != 0)
         return -1;	/* not PB frame */
 
     /* skip unknown header garbage */
-    get_bits(&s->gb, 41);
+    skip_bits(&s->gb, 41);
 
     s->qscale = get_bits(&s->gb, 5);
-    get_bits(&s->gb, 1);	/* Continuous Presence Multipoint mode: off */
+    skip_bits1(&s->gb);	/* Continuous Presence Multipoint mode: off */
 
     /* PEI */
-    while (get_bits(&s->gb, 1) != 0) {
-        get_bits(&s->gb, 8);
+    while (get_bits1(&s->gb) != 0) {
+        skip_bits(&s->gb, 8);
     }
     s->f_code = 1;
     return 0;