Originally committed as revision 32 to svn://svn.ffmpeg.org/ffmpeg/trunktags/v0.5
@@ -80,6 +80,47 @@ static inline unsigned int get_bits(GetBitContext *s, int n){ | |||||
return get_bits_long(s,n); | return get_bits_long(s,n); | ||||
} | } | ||||
static inline unsigned int get_bits1(GetBitContext *s){ | |||||
if(s->bit_cnt>0){ | |||||
/* most common case here */ | |||||
unsigned int val = s->bit_buf >> 31; | |||||
s->bit_buf <<= 1; | |||||
s->bit_cnt--; | |||||
#ifdef STATS | |||||
st_bit_counts[st_current_index]++; | |||||
#endif | |||||
return val; | |||||
} | |||||
return get_bits_long(s,1); | |||||
} | |||||
static inline void skip_bits(GetBitContext *s, int n){ | |||||
if(s->bit_cnt>=n){ | |||||
/* most common case here */ | |||||
s->bit_buf <<= n; | |||||
s->bit_cnt -= n; | |||||
#ifdef STATS | |||||
st_bit_counts[st_current_index] += n; | |||||
#endif | |||||
} else { | |||||
get_bits_long(s,n); | |||||
} | |||||
} | |||||
static inline void skip_bits1(GetBitContext *s){ | |||||
if(s->bit_cnt>0){ | |||||
/* most common case here */ | |||||
s->bit_buf <<= 1; | |||||
s->bit_cnt--; | |||||
#ifdef STATS | |||||
st_bit_counts[st_current_index]++; | |||||
#endif | |||||
} else { | |||||
get_bits_long(s,1); | |||||
} | |||||
} | |||||
void align_get_bits(GetBitContext *s); | void align_get_bits(GetBitContext *s); | ||||
int init_vlc(VLC *vlc, int nb_bits, int nb_codes, | int init_vlc(VLC *vlc, int nb_bits, int nb_codes, | ||||
const void *bits, int bits_wrap, int bits_size, | const void *bits, int bits_wrap, int bits_size, | ||||
@@ -729,7 +729,7 @@ int h263_decode_mb(MpegEncContext *s, | |||||
static UINT8 quant_tab[4] = { -1, -2, 1, 2 }; | static UINT8 quant_tab[4] = { -1, -2, 1, 2 }; | ||||
if (s->pict_type == P_TYPE) { | if (s->pict_type == P_TYPE) { | ||||
if (get_bits(&s->gb, 1)) { | |||||
if (get_bits1(&s->gb)) { | |||||
/* skip mb */ | /* skip mb */ | ||||
s->mb_intra = 0; | s->mb_intra = 0; | ||||
for(i=0;i<6;i++) | for(i=0;i<6;i++) | ||||
@@ -796,7 +796,7 @@ int h263_decode_mb(MpegEncContext *s, | |||||
} else { | } else { | ||||
s->ac_pred = 0; | s->ac_pred = 0; | ||||
if (s->h263_pred) { | 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); | cbpy = get_vlc(&s->gb, &cbpy_vlc); | ||||
cbp = (cbpc & 3) | (cbpy << 2); | cbp = (cbpc & 3) | (cbpy << 2); | ||||
@@ -834,7 +834,7 @@ static int h263_decode_motion(MpegEncContext * s, int pred) | |||||
if (code == 0) | if (code == 0) | ||||
return pred; | return pred; | ||||
sign = get_bits(&s->gb, 1); | |||||
sign = get_bits1(&s->gb); | |||||
shift = s->f_code - 1; | shift = s->f_code - 1; | ||||
val = (code - 1) << shift; | val = (code - 1) << shift; | ||||
if (shift > 0) | if (shift > 0) | ||||
@@ -906,7 +906,7 @@ static int h263_decode_block(MpegEncContext * s, DCTELEM * block, | |||||
return -1; | return -1; | ||||
if (code == rl->n) { | if (code == rl->n) { | ||||
/* escape */ | /* escape */ | ||||
last = get_bits(&s->gb, 1); | |||||
last = get_bits1(&s->gb); | |||||
run = get_bits(&s->gb, 6); | run = get_bits(&s->gb, 6); | ||||
level = (INT8)get_bits(&s->gb, 8); | level = (INT8)get_bits(&s->gb, 8); | ||||
if (s->h263_rv10 && level == -128) { | if (s->h263_rv10 && level == -128) { | ||||
@@ -918,7 +918,7 @@ static int h263_decode_block(MpegEncContext * s, DCTELEM * block, | |||||
run = rl->table_run[code]; | run = rl->table_run[code]; | ||||
level = rl->table_level[code]; | level = rl->table_level[code]; | ||||
last = code >= rl->last; | last = code >= rl->last; | ||||
if (get_bits(&s->gb, 1)) | |||||
if (get_bits1(&s->gb)) | |||||
level = -level; | level = -level; | ||||
} | } | ||||
i += run; | i += run; | ||||
@@ -952,7 +952,7 @@ static int mpeg4_decode_dc(MpegEncContext * s, int n, int *dir_ptr) | |||||
if ((level >> (code - 1)) == 0) /* if MSB not set it is negative*/ | if ((level >> (code - 1)) == 0) /* if MSB not set it is negative*/ | ||||
level = - (level ^ ((1 << code) - 1)); | level = - (level ^ ((1 << code) - 1)); | ||||
if (code > 8) | if (code > 8) | ||||
get_bits(&s->gb, 1); /* marker */ | |||||
skip_bits1(&s->gb); /* marker */ | |||||
} | } | ||||
pred = mpeg4_pred_dc(s, n, &dc_val, dir_ptr); | pred = mpeg4_pred_dc(s, n, &dc_val, dir_ptr); | ||||
@@ -1009,15 +1009,15 @@ static int mpeg4_decode_block(MpegEncContext * s, DCTELEM * block, | |||||
return -1; | return -1; | ||||
if (code == rl->n) { | if (code == rl->n) { | ||||
/* escape */ | /* 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 */ | /* third escape */ | ||||
last = get_bits(&s->gb, 1); | |||||
last = get_bits1(&s->gb); | |||||
run = get_bits(&s->gb, 6); | run = get_bits(&s->gb, 6); | ||||
get_bits(&s->gb, 1); /* marker */ | |||||
get_bits1(&s->gb); /* marker */ | |||||
level = get_bits(&s->gb, 12); | level = get_bits(&s->gb, 12); | ||||
level = (level << 20) >> 20; /* sign extend */ | level = (level << 20) >> 20; /* sign extend */ | ||||
get_bits(&s->gb, 1); /* marker */ | |||||
skip_bits1(&s->gb); /* marker */ | |||||
} else { | } else { | ||||
/* second escape */ | /* second escape */ | ||||
code = get_vlc(&s->gb, &rl->vlc); | code = get_vlc(&s->gb, &rl->vlc); | ||||
@@ -1027,7 +1027,7 @@ static int mpeg4_decode_block(MpegEncContext * s, DCTELEM * block, | |||||
level = rl->table_level[code]; | level = rl->table_level[code]; | ||||
last = code >= rl->last; | last = code >= rl->last; | ||||
run += rl->max_run[last][level] + 1; | run += rl->max_run[last][level] + 1; | ||||
if (get_bits(&s->gb, 1)) | |||||
if (get_bits1(&s->gb)) | |||||
level = -level; | level = -level; | ||||
} | } | ||||
} else { | } else { | ||||
@@ -1039,14 +1039,14 @@ static int mpeg4_decode_block(MpegEncContext * s, DCTELEM * block, | |||||
level = rl->table_level[code]; | level = rl->table_level[code]; | ||||
last = code >= rl->last; | last = code >= rl->last; | ||||
level += rl->max_level[last][run]; | level += rl->max_level[last][run]; | ||||
if (get_bits(&s->gb, 1)) | |||||
if (get_bits1(&s->gb)) | |||||
level = -level; | level = -level; | ||||
} | } | ||||
} else { | } else { | ||||
run = rl->table_run[code]; | run = rl->table_run[code]; | ||||
level = rl->table_level[code]; | level = rl->table_level[code]; | ||||
last = code >= rl->last; | last = code >= rl->last; | ||||
if (get_bits(&s->gb, 1)) | |||||
if (get_bits1(&s->gb)) | |||||
level = -level; | level = -level; | ||||
} | } | ||||
i += run; | i += run; | ||||
@@ -1077,15 +1077,15 @@ int h263_decode_picture_header(MpegEncContext *s) | |||||
/* picture header */ | /* picture header */ | ||||
if (get_bits(&s->gb, 22) != 0x20) | if (get_bits(&s->gb, 22) != 0x20) | ||||
return -1; | 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 */ | return -1; /* marker */ | ||||
if (get_bits(&s->gb, 1) != 0) | |||||
if (get_bits1(&s->gb) != 0) | |||||
return -1; /* h263 id */ | 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); | format = get_bits(&s->gb, 3); | ||||
@@ -1097,20 +1097,20 @@ int h263_decode_picture_header(MpegEncContext *s) | |||||
if (!width) | if (!width) | ||||
return -1; | 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; | s->h263_long_vectors = s->unrestricted_mv; | ||||
if (get_bits(&s->gb, 1) != 0) | |||||
if (get_bits1(&s->gb) != 0) | |||||
return -1; /* SAC: off */ | return -1; /* SAC: off */ | ||||
if (get_bits(&s->gb, 1) != 0) | |||||
if (get_bits1(&s->gb) != 0) | |||||
return -1; /* advanced prediction mode: off */ | return -1; /* advanced prediction mode: off */ | ||||
if (get_bits(&s->gb, 1) != 0) | |||||
if (get_bits1(&s->gb) != 0) | |||||
return -1; /* not PB frame */ | return -1; /* not PB frame */ | ||||
s->qscale = get_bits(&s->gb, 5); | 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 { | } else { | ||||
s->h263_plus = 1; | s->h263_plus = 1; | ||||
/* H.263v2 */ | /* H.263v2 */ | ||||
@@ -1118,24 +1118,24 @@ int h263_decode_picture_header(MpegEncContext *s) | |||||
return -1; | return -1; | ||||
if (get_bits(&s->gb, 3) != 6) /* custom source format */ | if (get_bits(&s->gb, 3) != 6) /* custom source format */ | ||||
return -1; | 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; | s->pict_type = get_bits(&s->gb, 3) + 1; | ||||
if (s->pict_type != I_TYPE && | if (s->pict_type != I_TYPE && | ||||
s->pict_type != P_TYPE) | s->pict_type != P_TYPE) | ||||
return -1; | 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; | width = (get_bits(&s->gb, 9) + 1) * 4; | ||||
get_bits(&s->gb, 1); | |||||
skip_bits1(&s->gb); | |||||
height = get_bits(&s->gb, 9) * 4; | height = get_bits(&s->gb, 9) * 4; | ||||
if (height == 0) | if (height == 0) | ||||
return -1; | return -1; | ||||
s->qscale = get_bits(&s->gb, 5); | s->qscale = get_bits(&s->gb, 5); | ||||
} | } | ||||
/* PEI */ | /* 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->f_code = 1; | ||||
s->width = width; | s->width = width; | ||||
@@ -1169,40 +1169,40 @@ int mpeg4_decode_picture_header(MpegEncContext * s) | |||||
int time_increment_resolution, width, height; | int time_increment_resolution, width, height; | ||||
/* vol header */ | /* 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); | time_increment_resolution = get_bits(&s->gb, 16); | ||||
s->time_increment_bits = log2(time_increment_resolution - 1) + 1; | 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); | width = get_bits(&s->gb, 13); | ||||
get_bits(&s->gb, 1); /* marker */ | |||||
skip_bits1(&s->gb); /* marker */ | |||||
height = get_bits(&s->gb, 13); | 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 */ | |||||
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); /* interfaced */ | |||||
skip_bits1(&s->gb); /* OBMC */ | |||||
skip_bits(&s->gb, 2); /* vol_sprite_usage */ | |||||
skip_bits1(&s->gb); /* not_8_bit */ | |||||
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; | goto redo; | ||||
} else if (startcode != 0x1b6) { | } else if (startcode != 0x1b6) { | ||||
goto redo; | goto redo; | ||||
@@ -1215,19 +1215,19 @@ int mpeg4_decode_picture_header(MpegEncContext * s) | |||||
/* XXX: parse time base */ | /* XXX: parse time base */ | ||||
time_incr = 0; | time_incr = 0; | ||||
while (get_bits(&s->gb, 1) != 0) | |||||
while (get_bits1(&s->gb) != 0) | |||||
time_incr++; | 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 */ | /* vop coded */ | ||||
if (get_bits(&s->gb, 1) != 1) | |||||
if (get_bits1(&s->gb) != 1) | |||||
return -1; | return -1; | ||||
if (s->pict_type == P_TYPE) { | if (s->pict_type == P_TYPE) { | ||||
/* rounding type for motion estimation */ | /* 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) | if (get_bits(&s->gb, 3) != 0) | ||||
@@ -1249,15 +1249,15 @@ int intel_h263_decode_picture_header(MpegEncContext *s) | |||||
/* picture header */ | /* picture header */ | ||||
if (get_bits(&s->gb, 22) != 0x20) | if (get_bits(&s->gb, 22) != 0x20) | ||||
return -1; | 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 */ | return -1; /* marker */ | ||||
if (get_bits(&s->gb, 1) != 0) | |||||
if (get_bits1(&s->gb) != 0) | |||||
return -1; /* h263 id */ | 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); | format = get_bits(&s->gb, 3); | ||||
if (format != 7) | if (format != 7) | ||||
@@ -1265,27 +1265,27 @@ int intel_h263_decode_picture_header(MpegEncContext *s) | |||||
s->h263_plus = 0; | 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; | s->h263_long_vectors = s->unrestricted_mv; | ||||
if (get_bits(&s->gb, 1) != 0) | |||||
if (get_bits1(&s->gb) != 0) | |||||
return -1; /* SAC: off */ | return -1; /* SAC: off */ | ||||
if (get_bits(&s->gb, 1) != 0) | |||||
if (get_bits1(&s->gb) != 0) | |||||
return -1; /* advanced prediction mode: off */ | return -1; /* advanced prediction mode: off */ | ||||
if (get_bits(&s->gb, 1) != 0) | |||||
if (get_bits1(&s->gb) != 0) | |||||
return -1; /* not PB frame */ | return -1; /* not PB frame */ | ||||
/* skip unknown header garbage */ | /* skip unknown header garbage */ | ||||
get_bits(&s->gb, 41); | |||||
skip_bits(&s->gb, 41); | |||||
s->qscale = get_bits(&s->gb, 5); | 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 */ | /* 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->f_code = 1; | ||||
return 0; | return 0; | ||||
@@ -483,8 +483,8 @@ void mpeg1_init_vlc(MpegEncContext *s) | |||||
static inline int get_dmv(MpegEncContext *s) | static inline int get_dmv(MpegEncContext *s) | ||||
{ | { | ||||
if(get_bits(&s->gb, 1)) | |||||
return 1 - (get_bits(&s->gb, 1) << 1); | |||||
if(get_bits1(&s->gb)) | |||||
return 1 - (get_bits1(&s->gb) << 1); | |||||
else | else | ||||
return 0; | return 0; | ||||
} | } | ||||
@@ -552,8 +552,8 @@ static int mpeg_decode_mb(MpegEncContext *s, | |||||
switch(s->pict_type) { | switch(s->pict_type) { | ||||
default: | default: | ||||
case I_TYPE: | case I_TYPE: | ||||
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) | |||||
return -1; | return -1; | ||||
mb_type = MB_QUANT | MB_INTRA; | mb_type = MB_QUANT | MB_INTRA; | ||||
} else { | } else { | ||||
@@ -584,7 +584,7 @@ static int mpeg_decode_mb(MpegEncContext *s, | |||||
if (s->picture_structure == PICT_FRAME && | if (s->picture_structure == PICT_FRAME && | ||||
!s->frame_pred_frame_dct && | !s->frame_pred_frame_dct && | ||||
(mb_type & (MB_PAT | MB_INTRA))) { | (mb_type & (MB_PAT | MB_INTRA))) { | ||||
s->interlaced_dct = get_bits(&s->gb, 1); | |||||
s->interlaced_dct = get_bits1(&s->gb); | |||||
#ifdef DEBUG | #ifdef DEBUG | ||||
if (s->interlaced_dct) | if (s->interlaced_dct) | ||||
printf("interlaced_dct\n"); | printf("interlaced_dct\n"); | ||||
@@ -609,7 +609,7 @@ static int mpeg_decode_mb(MpegEncContext *s, | |||||
if (s->concealment_motion_vectors) { | if (s->concealment_motion_vectors) { | ||||
/* just parse them */ | /* just parse them */ | ||||
if (s->picture_structure != PICT_FRAME) | if (s->picture_structure != PICT_FRAME) | ||||
get_bits(&s->gb, 1); /* field select */ | |||||
skip_bits1(&s->gb); /* field select */ | |||||
mpeg_decode_motion(s, s->mpeg_f_code[0][0], 0); | mpeg_decode_motion(s, s->mpeg_f_code[0][0], 0); | ||||
mpeg_decode_motion(s, s->mpeg_f_code[0][1], 0); | mpeg_decode_motion(s, s->mpeg_f_code[0][1], 0); | ||||
} | } | ||||
@@ -655,7 +655,7 @@ static int mpeg_decode_mb(MpegEncContext *s, | |||||
/* MT_16X8 */ | /* MT_16X8 */ | ||||
s->mv_type = MV_TYPE_16X8; | s->mv_type = MV_TYPE_16X8; | ||||
for(j=0;j<2;j++) { | for(j=0;j<2;j++) { | ||||
s->field_select[i][j] = get_bits(&s->gb, 1); | |||||
s->field_select[i][j] = get_bits1(&s->gb); | |||||
for(k=0;k<2;k++) { | for(k=0;k<2;k++) { | ||||
val = mpeg_decode_motion(s, s->mpeg_f_code[i][k], | val = mpeg_decode_motion(s, s->mpeg_f_code[i][k], | ||||
s->last_mv[i][j][k]); | s->last_mv[i][j][k]); | ||||
@@ -669,7 +669,7 @@ static int mpeg_decode_mb(MpegEncContext *s, | |||||
if (s->picture_structure == PICT_FRAME) { | if (s->picture_structure == PICT_FRAME) { | ||||
s->mv_type = MV_TYPE_FIELD; | s->mv_type = MV_TYPE_FIELD; | ||||
for(j=0;j<2;j++) { | for(j=0;j<2;j++) { | ||||
s->field_select[i][j] = get_bits(&s->gb, 1); | |||||
s->field_select[i][j] = get_bits1(&s->gb); | |||||
val = mpeg_decode_motion(s, s->mpeg_f_code[i][0], | val = mpeg_decode_motion(s, s->mpeg_f_code[i][0], | ||||
s->last_mv[i][j][0]); | s->last_mv[i][j][0]); | ||||
s->last_mv[i][j][0] = val; | s->last_mv[i][j][0] = val; | ||||
@@ -683,7 +683,7 @@ static int mpeg_decode_mb(MpegEncContext *s, | |||||
} | } | ||||
} else { | } else { | ||||
s->mv_type = MV_TYPE_16X16; | s->mv_type = MV_TYPE_16X16; | ||||
s->field_select[i][0] = get_bits(&s->gb, 1); | |||||
s->field_select[i][0] = get_bits1(&s->gb); | |||||
for(k=0;k<2;k++) { | for(k=0;k<2;k++) { | ||||
val = mpeg_decode_motion(s, s->mpeg_f_code[i][k], | val = mpeg_decode_motion(s, s->mpeg_f_code[i][k], | ||||
s->last_mv[i][0][k]); | s->last_mv[i][0][k]); | ||||
@@ -739,7 +739,7 @@ static int mpeg_decode_mb(MpegEncContext *s, | |||||
} | } | ||||
if ((mb_type & MB_INTRA) && s->concealment_motion_vectors) { | if ((mb_type & MB_INTRA) && s->concealment_motion_vectors) { | ||||
get_bits(&s->gb, 1); /* marker */ | |||||
skip_bits1(&s->gb); /* marker */ | |||||
} | } | ||||
if (mb_type & MB_PAT) { | if (mb_type & MB_PAT) { | ||||
@@ -789,7 +789,7 @@ static int mpeg_decode_motion(MpegEncContext *s, int fcode, int pred) | |||||
if (code == 0) { | if (code == 0) { | ||||
return pred; | return pred; | ||||
} | } | ||||
sign = get_bits(&s->gb, 1); | |||||
sign = get_bits1(&s->gb); | |||||
shift = fcode - 1; | shift = fcode - 1; | ||||
val = (code - 1) << shift; | val = (code - 1) << shift; | ||||
if (shift > 0) | if (shift > 0) | ||||
@@ -890,7 +890,7 @@ static int mpeg1_decode_block(MpegEncContext *s, | |||||
} else { | } else { | ||||
run = rl->table_run[code]; | run = rl->table_run[code]; | ||||
level = rl->table_level[code]; | level = rl->table_level[code]; | ||||
if (get_bits(&s->gb, 1)) | |||||
if (get_bits1(&s->gb)) | |||||
level = -level; | level = -level; | ||||
} | } | ||||
i += run; | i += run; | ||||
@@ -963,7 +963,7 @@ static int mpeg2_decode_block_non_intra(MpegEncContext *s, | |||||
} else { | } else { | ||||
run = rl->table_run[code]; | run = rl->table_run[code]; | ||||
level = rl->table_level[code]; | level = rl->table_level[code]; | ||||
if (get_bits(&s->gb, 1)) | |||||
if (get_bits1(&s->gb)) | |||||
level = -level; | level = -level; | ||||
} | } | ||||
i += run; | i += run; | ||||
@@ -1036,7 +1036,7 @@ static int mpeg2_decode_block_intra(MpegEncContext *s, | |||||
} else { | } else { | ||||
run = rl->table_run[code]; | run = rl->table_run[code]; | ||||
level = rl->table_level[code]; | level = rl->table_level[code]; | ||||
if (get_bits(&s->gb, 1)) | |||||
if (get_bits1(&s->gb)) | |||||
level = -level; | level = -level; | ||||
} | } | ||||
i += run; | i += run; | ||||
@@ -1121,9 +1121,9 @@ static int mpeg1_decode_picture(AVCodecContext *avctx, | |||||
ref = get_bits(&s->gb, 10); /* temporal ref */ | ref = get_bits(&s->gb, 10); /* temporal ref */ | ||||
s->pict_type = get_bits(&s->gb, 3); | s->pict_type = get_bits(&s->gb, 3); | ||||
dprintf("pict_type=%d\n", s->pict_type); | dprintf("pict_type=%d\n", s->pict_type); | ||||
get_bits(&s->gb, 16); | |||||
skip_bits(&s->gb, 16); | |||||
if (s->pict_type == P_TYPE || s->pict_type == B_TYPE) { | if (s->pict_type == P_TYPE || s->pict_type == B_TYPE) { | ||||
s->full_pel[0] = get_bits(&s->gb, 1); | |||||
s->full_pel[0] = get_bits1(&s->gb); | |||||
f_code = get_bits(&s->gb, 3); | f_code = get_bits(&s->gb, 3); | ||||
if (f_code == 0) | if (f_code == 0) | ||||
return -1; | return -1; | ||||
@@ -1131,7 +1131,7 @@ static int mpeg1_decode_picture(AVCodecContext *avctx, | |||||
s->mpeg_f_code[0][1] = f_code; | s->mpeg_f_code[0][1] = f_code; | ||||
} | } | ||||
if (s->pict_type == B_TYPE) { | if (s->pict_type == B_TYPE) { | ||||
s->full_pel[1] = get_bits(&s->gb, 1); | |||||
s->full_pel[1] = get_bits1(&s->gb); | |||||
f_code = get_bits(&s->gb, 3); | f_code = get_bits(&s->gb, 3); | ||||
if (f_code == 0) | if (f_code == 0) | ||||
return -1; | return -1; | ||||
@@ -1150,18 +1150,18 @@ static void mpeg_decode_sequence_extension(MpegEncContext *s) | |||||
int bit_rate_ext, vbv_buf_ext, low_delay; | int bit_rate_ext, vbv_buf_ext, low_delay; | ||||
int frame_rate_ext_n, frame_rate_ext_d; | int frame_rate_ext_n, frame_rate_ext_d; | ||||
get_bits(&s->gb, 8); /* profil and level */ | |||||
get_bits(&s->gb, 1); /* progressive_sequence */ | |||||
get_bits(&s->gb, 2); /* chroma_format */ | |||||
skip_bits(&s->gb, 8); /* profil and level */ | |||||
skip_bits(&s->gb, 1); /* progressive_sequence */ | |||||
skip_bits(&s->gb, 2); /* chroma_format */ | |||||
horiz_size_ext = get_bits(&s->gb, 2); | horiz_size_ext = get_bits(&s->gb, 2); | ||||
vert_size_ext = get_bits(&s->gb, 2); | vert_size_ext = get_bits(&s->gb, 2); | ||||
s->width |= (horiz_size_ext << 12); | s->width |= (horiz_size_ext << 12); | ||||
s->height |= (vert_size_ext << 12); | s->height |= (vert_size_ext << 12); | ||||
bit_rate_ext = get_bits(&s->gb, 12); /* XXX: handle it */ | bit_rate_ext = get_bits(&s->gb, 12); /* XXX: handle it */ | ||||
s->bit_rate = ((s->bit_rate / 400) | (bit_rate_ext << 12)) * 400; | s->bit_rate = ((s->bit_rate / 400) | (bit_rate_ext << 12)) * 400; | ||||
get_bits(&s->gb, 1); /* marker */ | |||||
skip_bits1(&s->gb); /* marker */ | |||||
vbv_buf_ext = get_bits(&s->gb, 8); | vbv_buf_ext = get_bits(&s->gb, 8); | ||||
low_delay = get_bits(&s->gb, 1); | |||||
low_delay = get_bits1(&s->gb); | |||||
frame_rate_ext_n = get_bits(&s->gb, 2); | frame_rate_ext_n = get_bits(&s->gb, 2); | ||||
frame_rate_ext_d = get_bits(&s->gb, 5); | frame_rate_ext_d = get_bits(&s->gb, 5); | ||||
if (frame_rate_ext_d >= 1) | if (frame_rate_ext_d >= 1) | ||||
@@ -1174,27 +1174,27 @@ static void mpeg_decode_quant_matrix_extension(MpegEncContext *s) | |||||
{ | { | ||||
int i, v; | int i, v; | ||||
if (get_bits(&s->gb, 1)) { | |||||
if (get_bits1(&s->gb)) { | |||||
for(i=0;i<64;i++) { | for(i=0;i<64;i++) { | ||||
v = get_bits(&s->gb, 8); | v = get_bits(&s->gb, 8); | ||||
s->intra_matrix[i] = v; | s->intra_matrix[i] = v; | ||||
s->chroma_intra_matrix[i] = v; | s->chroma_intra_matrix[i] = v; | ||||
} | } | ||||
} | } | ||||
if (get_bits(&s->gb, 1)) { | |||||
if (get_bits1(&s->gb)) { | |||||
for(i=0;i<64;i++) { | for(i=0;i<64;i++) { | ||||
v = get_bits(&s->gb, 8); | v = get_bits(&s->gb, 8); | ||||
s->non_intra_matrix[i] = v; | s->non_intra_matrix[i] = v; | ||||
s->chroma_non_intra_matrix[i] = v; | s->chroma_non_intra_matrix[i] = v; | ||||
} | } | ||||
} | } | ||||
if (get_bits(&s->gb, 1)) { | |||||
if (get_bits1(&s->gb)) { | |||||
for(i=0;i<64;i++) { | for(i=0;i<64;i++) { | ||||
v = get_bits(&s->gb, 8); | v = get_bits(&s->gb, 8); | ||||
s->chroma_intra_matrix[i] = v; | s->chroma_intra_matrix[i] = v; | ||||
} | } | ||||
} | } | ||||
if (get_bits(&s->gb, 1)) { | |||||
if (get_bits1(&s->gb)) { | |||||
for(i=0;i<64;i++) { | for(i=0;i<64;i++) { | ||||
v = get_bits(&s->gb, 8); | v = get_bits(&s->gb, 8); | ||||
s->chroma_non_intra_matrix[i] = v; | s->chroma_non_intra_matrix[i] = v; | ||||
@@ -1211,15 +1211,15 @@ static void mpeg_decode_picture_coding_extension(MpegEncContext *s) | |||||
s->mpeg_f_code[1][1] = get_bits(&s->gb, 4); | s->mpeg_f_code[1][1] = get_bits(&s->gb, 4); | ||||
s->intra_dc_precision = get_bits(&s->gb, 2); | s->intra_dc_precision = get_bits(&s->gb, 2); | ||||
s->picture_structure = get_bits(&s->gb, 2); | s->picture_structure = get_bits(&s->gb, 2); | ||||
s->top_field_first = get_bits(&s->gb, 1); | |||||
s->frame_pred_frame_dct = get_bits(&s->gb, 1); | |||||
s->concealment_motion_vectors = get_bits(&s->gb, 1); | |||||
s->q_scale_type = get_bits(&s->gb, 1); | |||||
s->intra_vlc_format = get_bits(&s->gb, 1); | |||||
s->alternate_scan = get_bits(&s->gb, 1); | |||||
s->repeat_first_field = get_bits(&s->gb, 1); | |||||
s->chroma_420_type = get_bits(&s->gb, 1); | |||||
s->progressive_frame = get_bits(&s->gb, 1); | |||||
s->top_field_first = get_bits1(&s->gb); | |||||
s->frame_pred_frame_dct = get_bits1(&s->gb); | |||||
s->concealment_motion_vectors = get_bits1(&s->gb); | |||||
s->q_scale_type = get_bits1(&s->gb); | |||||
s->intra_vlc_format = get_bits1(&s->gb); | |||||
s->alternate_scan = get_bits1(&s->gb); | |||||
s->repeat_first_field = get_bits1(&s->gb); | |||||
s->chroma_420_type = get_bits1(&s->gb); | |||||
s->progressive_frame = get_bits1(&s->gb); | |||||
/* composite display not parsed */ | /* composite display not parsed */ | ||||
dprintf("dc_preci=%d\n", s->intra_dc_precision); | dprintf("dc_preci=%d\n", s->intra_dc_precision); | ||||
dprintf("pict_structure=%d\n", s->picture_structure); | dprintf("pict_structure=%d\n", s->picture_structure); | ||||
@@ -1285,8 +1285,8 @@ static int mpeg_decode_slice(AVCodecContext *avctx, | |||||
s->qscale = get_bits(&s->gb, 5); | s->qscale = get_bits(&s->gb, 5); | ||||
/* extra slice info */ | /* extra slice info */ | ||||
while (get_bits(&s->gb, 1) != 0) { | |||||
get_bits(&s->gb, 8); | |||||
while (get_bits1(&s->gb) != 0) { | |||||
skip_bits(&s->gb, 8); | |||||
} | } | ||||
for(;;) { | for(;;) { | ||||
@@ -1351,12 +1351,12 @@ static int mpeg1_decode_sequence(AVCodecContext *avctx, | |||||
width = get_bits(&s->gb, 12); | width = get_bits(&s->gb, 12); | ||||
height = get_bits(&s->gb, 12); | height = get_bits(&s->gb, 12); | ||||
get_bits(&s->gb, 4); | |||||
skip_bits(&s->gb, 4); | |||||
s->frame_rate_index = get_bits(&s->gb, 4); | s->frame_rate_index = get_bits(&s->gb, 4); | ||||
if (s->frame_rate_index == 0) | if (s->frame_rate_index == 0) | ||||
return -1; | return -1; | ||||
s->bit_rate = get_bits(&s->gb, 18) * 400; | s->bit_rate = get_bits(&s->gb, 18) * 400; | ||||
if (get_bits(&s->gb, 1) == 0) /* marker */ | |||||
if (get_bits1(&s->gb) == 0) /* marker */ | |||||
return -1; | return -1; | ||||
if (width <= 0 || height <= 0 || | if (width <= 0 || height <= 0 || | ||||
(width % 2) != 0 || (height % 2) != 0) | (width % 2) != 0 || (height % 2) != 0) | ||||
@@ -1382,11 +1382,11 @@ static int mpeg1_decode_sequence(AVCodecContext *avctx, | |||||
s1->mpeg_enc_ctx_allocated = 1; | s1->mpeg_enc_ctx_allocated = 1; | ||||
} | } | ||||
get_bits(&s->gb, 10); /* vbv_buffer_size */ | |||||
get_bits(&s->gb, 1); | |||||
skip_bits(&s->gb, 10); /* vbv_buffer_size */ | |||||
skip_bits(&s->gb, 1); | |||||
/* get matrix */ | /* get matrix */ | ||||
if (get_bits(&s->gb, 1)) { | |||||
if (get_bits1(&s->gb)) { | |||||
for(i=0;i<64;i++) { | for(i=0;i<64;i++) { | ||||
v = get_bits(&s->gb, 8); | v = get_bits(&s->gb, 8); | ||||
s->intra_matrix[i] = v; | s->intra_matrix[i] = v; | ||||
@@ -1399,7 +1399,7 @@ static int mpeg1_decode_sequence(AVCodecContext *avctx, | |||||
s->chroma_intra_matrix[i] = v; | s->chroma_intra_matrix[i] = v; | ||||
} | } | ||||
} | } | ||||
if (get_bits(&s->gb, 1)) { | |||||
if (get_bits1(&s->gb)) { | |||||
for(i=0;i<64;i++) { | for(i=0;i<64;i++) { | ||||
v = get_bits(&s->gb, 8); | v = get_bits(&s->gb, 8); | ||||
s->non_intra_matrix[i] = v; | s->non_intra_matrix[i] = v; | ||||
@@ -601,11 +601,11 @@ int msmpeg4_decode_init_vlc(MpegEncContext *s) | |||||
static int decode012(GetBitContext *gb) | static int decode012(GetBitContext *gb) | ||||
{ | { | ||||
int n; | int n; | ||||
n = get_bits(gb, 1); | |||||
n = get_bits1(gb); | |||||
if (n == 0) | if (n == 0) | ||||
return 0; | return 0; | ||||
else | else | ||||
return get_bits(gb, 1) + 1; | |||||
return get_bits1(gb) + 1; | |||||
} | } | ||||
int msmpeg4_decode_picture_header(MpegEncContext * s) | int msmpeg4_decode_picture_header(MpegEncContext * s) | ||||
@@ -629,17 +629,17 @@ int msmpeg4_decode_picture_header(MpegEncContext * s) | |||||
s->rl_chroma_table_index = decode012(&s->gb); | s->rl_chroma_table_index = decode012(&s->gb); | ||||
s->rl_table_index = decode012(&s->gb); | s->rl_table_index = decode012(&s->gb); | ||||
s->dc_table_index = get_bits(&s->gb, 1); | |||||
s->dc_table_index = get_bits1(&s->gb); | |||||
s->no_rounding = 1; | s->no_rounding = 1; | ||||
} else { | } else { | ||||
s->use_skip_mb_code = get_bits(&s->gb, 1); | |||||
s->use_skip_mb_code = get_bits1(&s->gb); | |||||
s->rl_table_index = decode012(&s->gb); | s->rl_table_index = decode012(&s->gb); | ||||
s->rl_chroma_table_index = s->rl_table_index; | s->rl_chroma_table_index = s->rl_table_index; | ||||
s->dc_table_index = get_bits(&s->gb, 1); | |||||
s->dc_table_index = get_bits1(&s->gb); | |||||
s->mv_table_index = get_bits(&s->gb, 1); | |||||
s->mv_table_index = get_bits1(&s->gb); | |||||
s->no_rounding ^= 1; | s->no_rounding ^= 1; | ||||
} | } | ||||
#ifdef DEBUG | #ifdef DEBUG | ||||
@@ -685,7 +685,7 @@ int msmpeg4_decode_mb(MpegEncContext *s, | |||||
if (s->pict_type == P_TYPE) { | if (s->pict_type == P_TYPE) { | ||||
set_stat(ST_INTER_MB); | set_stat(ST_INTER_MB); | ||||
if (s->use_skip_mb_code) { | if (s->use_skip_mb_code) { | ||||
if (get_bits(&s->gb, 1)) { | |||||
if (get_bits1(&s->gb)) { | |||||
/* skip mb */ | /* skip mb */ | ||||
s->mb_intra = 0; | s->mb_intra = 0; | ||||
for(i=0;i<6;i++) | for(i=0;i<6;i++) | ||||
@@ -739,7 +739,7 @@ int msmpeg4_decode_mb(MpegEncContext *s, | |||||
s->mv[0][0][1] = my; | s->mv[0][0][1] = my; | ||||
} else { | } else { | ||||
set_stat(ST_INTRA_MB); | set_stat(ST_INTRA_MB); | ||||
s->ac_pred = get_bits(&s->gb, 1); | |||||
s->ac_pred = get_bits1(&s->gb); | |||||
} | } | ||||
for (i = 0; i < 6; i++) { | for (i = 0; i < 6; i++) { | ||||
@@ -801,10 +801,10 @@ static int msmpeg4_decode_block(MpegEncContext * s, DCTELEM * block, | |||||
return -1; | return -1; | ||||
if (code == rl->n) { | if (code == rl->n) { | ||||
/* escape */ | /* 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 */ | /* third escape */ | ||||
last = get_bits(&s->gb, 1); | |||||
last = get_bits1(&s->gb); | |||||
run = get_bits(&s->gb, 6); | run = get_bits(&s->gb, 6); | ||||
level = get_bits(&s->gb, 8); | level = get_bits(&s->gb, 8); | ||||
level = (level << 24) >> 24; /* sign extend */ | level = (level << 24) >> 24; /* sign extend */ | ||||
@@ -817,7 +817,7 @@ static int msmpeg4_decode_block(MpegEncContext * s, DCTELEM * block, | |||||
level = rl->table_level[code]; | level = rl->table_level[code]; | ||||
last = code >= rl->last; | last = code >= rl->last; | ||||
run += rl->max_run[last][level] + run_diff; | run += rl->max_run[last][level] + run_diff; | ||||
if (get_bits(&s->gb, 1)) | |||||
if (get_bits1(&s->gb)) | |||||
level = -level; | level = -level; | ||||
} | } | ||||
} else { | } else { | ||||
@@ -829,14 +829,14 @@ static int msmpeg4_decode_block(MpegEncContext * s, DCTELEM * block, | |||||
level = rl->table_level[code]; | level = rl->table_level[code]; | ||||
last = code >= rl->last; | last = code >= rl->last; | ||||
level += rl->max_level[last][run]; | level += rl->max_level[last][run]; | ||||
if (get_bits(&s->gb, 1)) | |||||
if (get_bits1(&s->gb)) | |||||
level = -level; | level = -level; | ||||
} | } | ||||
} else { | } else { | ||||
run = rl->table_run[code]; | run = rl->table_run[code]; | ||||
level = rl->table_level[code]; | level = rl->table_level[code]; | ||||
last = code >= rl->last; | last = code >= rl->last; | ||||
if (get_bits(&s->gb, 1)) | |||||
if (get_bits1(&s->gb)) | |||||
level = -level; | level = -level; | ||||
} | } | ||||
i += run; | i += run; | ||||
@@ -875,10 +875,10 @@ static int msmpeg4_decode_dc(MpegEncContext * s, int n, int *dir_ptr) | |||||
if (level == DC_MAX) { | if (level == DC_MAX) { | ||||
level = get_bits(&s->gb, 8); | level = get_bits(&s->gb, 8); | ||||
if (get_bits(&s->gb, 1)) | |||||
if (get_bits1(&s->gb)) | |||||
level = -level; | level = -level; | ||||
} else if (level != 0) { | } else if (level != 0) { | ||||
if (get_bits(&s->gb, 1)) | |||||
if (get_bits1(&s->gb)) | |||||
level = -level; | level = -level; | ||||
} | } | ||||