Mercurial > libavcodec.hg
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;