---
libavcodec/msmpeg4data.h | 3 +-
libavcodec/msmpeg4dec.c | 195 +++++++++++++++++++++++++----------------------
2 files changed, 104 insertions(+), 94 deletions(-)
diff --git a/libavcodec/msmpeg4data.h b/libavcodec/msmpeg4data.h
index 9d57d41..028f776 100644
--- a/libavcodec/msmpeg4data.h
+++ b/libavcodec/msmpeg4data.h
@@ -31,8 +31,9 @@
#define AVCODEC_MSMPEG4DATA_H
#include "libavutil/common.h"
-#include "get_bits.h"
+#include "bitstream.h"
#include "rl.h"
+#include "vlc.h"
/* motion vector table */
typedef struct MVTable {
diff --git a/libavcodec/msmpeg4dec.c b/libavcodec/msmpeg4dec.c
index 1c55558..f2c8fdc 100644
--- a/libavcodec/msmpeg4dec.c
+++ b/libavcodec/msmpeg4dec.c
@@ -23,6 +23,7 @@
*/
#include "avcodec.h"
+#include "bitstream.h"
#include "internal.h"
#include "mpegutils.h"
#include "mpegvideo.h"
@@ -32,6 +33,7 @@
#include "mpeg4video.h"
#include "msmpeg4data.h"
#include "vc1data.h"
+#include "vlc.h"
#include "wmv2.h"
#define DC_VLC_BITS 9
@@ -74,19 +76,19 @@ static int msmpeg4v2_decode_motion(MpegEncContext * s, int
pred, int f_code)
{
int code, val, sign, shift;
- code = get_vlc2(&s->gb, v2_mv_vlc.table, V2_MV_VLC_BITS, 2);
+ code = bitstream_read_vlc(&s->bc, v2_mv_vlc.table, V2_MV_VLC_BITS, 2);
ff_dlog(s, "MV code %d at %d %d pred: %d\n", code, s->mb_x,s->mb_y, pred);
if (code < 0)
return 0xffff;
if (code == 0)
return pred;
- sign = get_bits1(&s->gb);
+ sign = bitstream_read_bit(&s->bc);
shift = f_code - 1;
val = code;
if (shift) {
val = (val - 1) << shift;
- val |= get_bits(&s->gb, shift);
+ val |= bitstream_read(&s->bc, shift);
val++;
}
if (sign)
@@ -107,7 +109,7 @@ static int msmpeg4v12_decode_mb(MpegEncContext *s, int16_t
block[6][64])
if (s->pict_type == AV_PICTURE_TYPE_P) {
if (s->use_skip_mb_code) {
- if (get_bits1(&s->gb)) {
+ if (bitstream_read_bit(&s->bc)) {
/* skip mb */
s->mb_intra = 0;
for(i=0;i<6;i++)
@@ -122,9 +124,11 @@ static int msmpeg4v12_decode_mb(MpegEncContext *s, int16_t
block[6][64])
}
if(s->msmpeg4_version==2)
- code = get_vlc2(&s->gb, v2_mb_type_vlc.table, V2_MB_TYPE_VLC_BITS,
1);
+ code = bitstream_read_vlc(&s->bc, v2_mb_type_vlc.table,
+ V2_MB_TYPE_VLC_BITS, 1);
else
- code = get_vlc2(&s->gb, ff_h263_inter_MCBPC_vlc.table,
INTER_MCBPC_VLC_BITS, 2);
+ code = bitstream_read_vlc(&s->bc, ff_h263_inter_MCBPC_vlc.table,
+ INTER_MCBPC_VLC_BITS, 2);
if(code<0 || code>7){
av_log(s->avctx, AV_LOG_ERROR, "cbpc %d invalid at %d %d\n", code,
s->mb_x, s->mb_y);
return -1;
@@ -136,9 +140,11 @@ static int msmpeg4v12_decode_mb(MpegEncContext *s, int16_t
block[6][64])
} else {
s->mb_intra = 1;
if(s->msmpeg4_version==2)
- cbp= get_vlc2(&s->gb, v2_intra_cbpc_vlc.table,
V2_INTRA_CBPC_VLC_BITS, 1);
+ cbp= bitstream_read_vlc(&s->bc, v2_intra_cbpc_vlc.table,
+ V2_INTRA_CBPC_VLC_BITS, 1);
else
- cbp= get_vlc2(&s->gb, ff_h263_intra_MCBPC_vlc.table,
INTRA_MCBPC_VLC_BITS, 1);
+ cbp= bitstream_read_vlc(&s->bc, ff_h263_intra_MCBPC_vlc.table,
+ INTRA_MCBPC_VLC_BITS, 1);
if(cbp<0 || cbp>3){
av_log(s->avctx, AV_LOG_ERROR, "cbpc %d invalid at %d %d\n", cbp,
s->mb_x, s->mb_y);
return -1;
@@ -148,7 +154,7 @@ static int msmpeg4v12_decode_mb(MpegEncContext *s, int16_t
block[6][64])
if (!s->mb_intra) {
int mx, my, cbpy;
- cbpy= get_vlc2(&s->gb, ff_h263_cbpy_vlc.table, CBPY_VLC_BITS, 1);
+ cbpy= bitstream_read_vlc(&s->bc, ff_h263_cbpy_vlc.table,
CBPY_VLC_BITS, 1);
if(cbpy<0){
av_log(s->avctx, AV_LOG_ERROR, "cbpy %d invalid at %d %d\n", cbp,
s->mb_x, s->mb_y);
return -1;
@@ -167,11 +173,13 @@ static int msmpeg4v12_decode_mb(MpegEncContext *s,
int16_t block[6][64])
s->mv[0][0][1] = my;
} else {
if(s->msmpeg4_version==2){
- s->ac_pred = get_bits1(&s->gb);
- cbp|= get_vlc2(&s->gb, ff_h263_cbpy_vlc.table, CBPY_VLC_BITS,
1)<<2; //FIXME check errors
+ s->ac_pred = bitstream_read_bit(&s->bc);
+ cbp|= bitstream_read_vlc(&s->bc, ff_h263_cbpy_vlc.table,
+ CBPY_VLC_BITS, 1) << 2; //FIXME check
errors
} else{
s->ac_pred = 0;
- cbp|= get_vlc2(&s->gb, ff_h263_cbpy_vlc.table, CBPY_VLC_BITS,
1)<<2; //FIXME check errors
+ cbp|= bitstream_read_vlc(&s->bc, ff_h263_cbpy_vlc.table,
+ CBPY_VLC_BITS, 1) << 2; //FIXME check
errors
if(s->pict_type==AV_PICTURE_TYPE_P) cbp^=0x3C;
}
}
@@ -195,7 +203,7 @@ static int msmpeg4v34_decode_mb(MpegEncContext *s, int16_t
block[6][64])
if (s->pict_type == AV_PICTURE_TYPE_P) {
if (s->use_skip_mb_code) {
- if (get_bits1(&s->gb)) {
+ if (bitstream_read_bit(&s->bc)) {
/* skip mb */
s->mb_intra = 0;
for(i=0;i<6;i++)
@@ -211,7 +219,8 @@ static int msmpeg4v34_decode_mb(MpegEncContext *s, int16_t
block[6][64])
}
}
- code = get_vlc2(&s->gb,
ff_mb_non_intra_vlc[DEFAULT_INTER_INDEX].table, MB_NON_INTRA_VLC_BITS, 3);
+ code = bitstream_read_vlc(&s->bc,
ff_mb_non_intra_vlc[DEFAULT_INTER_INDEX].table,
+ MB_NON_INTRA_VLC_BITS, 3);
if (code < 0)
return -1;
//s->mb_intra = (code & 0x40) ? 0 : 1;
@@ -220,7 +229,7 @@ static int msmpeg4v34_decode_mb(MpegEncContext *s, int16_t
block[6][64])
cbp = code & 0x3f;
} else {
s->mb_intra = 1;
- code = get_vlc2(&s->gb, ff_msmp4_mb_i_vlc.table, MB_INTRA_VLC_BITS, 2);
+ code = bitstream_read_vlc(&s->bc, ff_msmp4_mb_i_vlc.table,
MB_INTRA_VLC_BITS, 2);
if (code < 0)
return -1;
/* predict coded block pattern */
@@ -239,7 +248,7 @@ static int msmpeg4v34_decode_mb(MpegEncContext *s, int16_t
block[6][64])
if (!s->mb_intra) {
int mx, my;
if(s->per_mb_rl_table && cbp){
- s->rl_table_index = decode012(&s->gb);
+ s->rl_table_index = bitstream_decode012(&s->bc);
s->rl_chroma_table_index = s->rl_table_index;
}
ff_h263_pred_motion(s, 0, 0, &mx, &my);
@@ -253,16 +262,17 @@ static int msmpeg4v34_decode_mb(MpegEncContext *s,
int16_t block[6][64])
} else {
ff_dlog(s, "I at %d %d %d %06X\n", s->mb_x, s->mb_y,
((cbp & 3) ? 1 : 0) +((cbp & 0x3C)? 2 : 0),
- show_bits(&s->gb, 24));
- s->ac_pred = get_bits1(&s->gb);
+ bitstream_peek(&s->bc, 24));
+ s->ac_pred = bitstream_read_bit(&s->bc);
*mb_type_ptr = MB_TYPE_INTRA;
if(s->inter_intra_pred){
- s->h263_aic_dir= get_vlc2(&s->gb, ff_inter_intra_vlc.table,
INTER_INTRA_VLC_BITS, 1);
+ s->h263_aic_dir = bitstream_read_vlc(&s->bc,
ff_inter_intra_vlc.table,
+ INTER_INTRA_VLC_BITS, 1);
ff_dlog(s, "%d%d %d %d/",
s->ac_pred, s->h263_aic_dir, s->mb_x, s->mb_y);
}
if(s->per_mb_rl_table && cbp){
- s->rl_table_index = decode012(&s->gb);
+ s->rl_table_index = bitstream_decode012(&s->bc);
s->rl_chroma_table_index = s->rl_table_index;
}
}
@@ -393,16 +403,16 @@ int ff_msmpeg4_decode_picture_header(MpegEncContext * s)
int code;
if(s->msmpeg4_version==1){
- int start_code = get_bits_long(&s->gb, 32);
+ int start_code = bitstream_read(&s->bc, 32);
if(start_code!=0x00000100){
av_log(s->avctx, AV_LOG_ERROR, "invalid startcode\n");
return -1;
}
- skip_bits(&s->gb, 5); // frame number */
+ bitstream_skip(&s->bc, 5); // frame number */
}
- s->pict_type = get_bits(&s->gb, 2) + 1;
+ s->pict_type = bitstream_read(&s->bc, 2) + 1;
if (s->pict_type != AV_PICTURE_TYPE_I &&
s->pict_type != AV_PICTURE_TYPE_P){
av_log(s->avctx, AV_LOG_ERROR, "invalid picture type\n");
@@ -415,14 +425,14 @@ int ff_msmpeg4_decode_picture_header(MpegEncContext * s)
if(!had_i) return -1;
}
#endif
- s->chroma_qscale= s->qscale = get_bits(&s->gb, 5);
+ s->chroma_qscale= s->qscale = bitstream_read(&s->bc, 5);
if(s->qscale==0){
av_log(s->avctx, AV_LOG_ERROR, "invalid qscale\n");
return -1;
}
if (s->pict_type == AV_PICTURE_TYPE_I) {
- code = get_bits(&s->gb, 5);
+ code = bitstream_read(&s->bc, 5);
if(s->msmpeg4_version==1){
if(code==0 || code>s->mb_height){
av_log(s->avctx, AV_LOG_ERROR, "invalid slice height %d\n",
code);
@@ -449,23 +459,23 @@ int ff_msmpeg4_decode_picture_header(MpegEncContext * s)
s->dc_table_index = 0; //not used
break;
case 3:
- s->rl_chroma_table_index = decode012(&s->gb);
- s->rl_table_index = decode012(&s->gb);
+ s->rl_chroma_table_index = bitstream_decode012(&s->bc);
+ s->rl_table_index = bitstream_decode012(&s->bc);
- s->dc_table_index = get_bits1(&s->gb);
+ s->dc_table_index = bitstream_read_bit(&s->bc);
break;
case 4:
ff_msmpeg4_decode_ext_header(s, (2+5+5+17+7)/8);
- if(s->bit_rate > MBAC_BITRATE) s->per_mb_rl_table=
get_bits1(&s->gb);
+ if(s->bit_rate > MBAC_BITRATE) s->per_mb_rl_table =
bitstream_read_bit(&s->bc);
else s->per_mb_rl_table= 0;
if(!s->per_mb_rl_table){
- s->rl_chroma_table_index = decode012(&s->gb);
- s->rl_table_index = decode012(&s->gb);
+ s->rl_chroma_table_index = bitstream_decode012(&s->bc);
+ s->rl_table_index = bitstream_decode012(&s->bc);
}
- s->dc_table_index = get_bits1(&s->gb);
+ s->dc_table_index = bitstream_read_bit(&s->bc);
s->inter_intra_pred= 0;
break;
}
@@ -485,35 +495,36 @@ int ff_msmpeg4_decode_picture_header(MpegEncContext * s)
if(s->msmpeg4_version==1)
s->use_skip_mb_code = 1;
else
- s->use_skip_mb_code = get_bits1(&s->gb);
+ s->use_skip_mb_code = bitstream_read_bit(&s->bc);
s->rl_table_index = 2;
s->rl_chroma_table_index = s->rl_table_index;
s->dc_table_index = 0; //not used
s->mv_table_index = 0;
break;
case 3:
- s->use_skip_mb_code = get_bits1(&s->gb);
- s->rl_table_index = decode012(&s->gb);
+ s->use_skip_mb_code = bitstream_read_bit(&s->bc);
+ s->rl_table_index = bitstream_decode012(&s->bc);
s->rl_chroma_table_index = s->rl_table_index;
- s->dc_table_index = get_bits1(&s->gb);
+ s->dc_table_index = bitstream_read_bit(&s->bc);
- s->mv_table_index = get_bits1(&s->gb);
+ s->mv_table_index = bitstream_read_bit(&s->bc);
break;
case 4:
- s->use_skip_mb_code = get_bits1(&s->gb);
+ s->use_skip_mb_code = bitstream_read_bit(&s->bc);
- if(s->bit_rate > MBAC_BITRATE) s->per_mb_rl_table=
get_bits1(&s->gb);
+ if (s->bit_rate > MBAC_BITRATE)
+ s->per_mb_rl_table= bitstream_read_bit(&s->bc);
else s->per_mb_rl_table= 0;
if(!s->per_mb_rl_table){
- s->rl_table_index = decode012(&s->gb);
+ s->rl_table_index = bitstream_decode012(&s->bc);
s->rl_chroma_table_index = s->rl_table_index;
}
- s->dc_table_index = get_bits1(&s->gb);
+ s->dc_table_index = bitstream_read_bit(&s->bc);
- s->mv_table_index = get_bits1(&s->gb);
+ s->mv_table_index = bitstream_read_bit(&s->bc);
s->inter_intra_pred= (s->width*s->height < 320*240 &&
s->bit_rate<=II_BITRATE);
break;
}
@@ -545,15 +556,15 @@ int ff_msmpeg4_decode_picture_header(MpegEncContext * s)
int ff_msmpeg4_decode_ext_header(MpegEncContext * s, int buf_size)
{
- int left= buf_size*8 - get_bits_count(&s->gb);
+ int left = buf_size * 8 - bitstream_tell(&s->bc);
int length= s->msmpeg4_version>=3 ? 17 : 16;
/* the alt_bitstream reader could read over the end so we need to check it
*/
if(left>=length && left<length+8)
{
- skip_bits(&s->gb, 5); /* fps */
- s->bit_rate= get_bits(&s->gb, 11)*1024;
+ bitstream_skip(&s->bc, 5); /* fps */
+ s->bit_rate = bitstream_read(&s->bc, 11) * 1024;
if(s->msmpeg4_version>=3)
- s->flipflop_rounding= get_bits1(&s->gb);
+ s->flipflop_rounding = bitstream_read_bit(&s->bc);
else
s->flipflop_rounding= 0;
}
@@ -577,18 +588,20 @@ static int msmpeg4_decode_dc(MpegEncContext * s, int n,
int *dir_ptr)
if(s->msmpeg4_version<=2){
if (n < 4) {
- level = get_vlc2(&s->gb, v2_dc_lum_vlc.table, DC_VLC_BITS, 3);
+ level = bitstream_read_vlc(&s->bc, v2_dc_lum_vlc.table,
DC_VLC_BITS, 3);
} else {
- level = get_vlc2(&s->gb, v2_dc_chroma_vlc.table, DC_VLC_BITS, 3);
+ level = bitstream_read_vlc(&s->bc, v2_dc_chroma_vlc.table,
DC_VLC_BITS, 3);
}
if (level < 0)
return -1;
level-=256;
}else{ //FIXME optimize use unified tables & index
if (n < 4) {
- level = get_vlc2(&s->gb,
ff_msmp4_dc_luma_vlc[s->dc_table_index].table, DC_VLC_BITS, 3);
+ level = bitstream_read_vlc(&s->bc,
ff_msmp4_dc_luma_vlc[s->dc_table_index].table,
+ DC_VLC_BITS, 3);
} else {
- level = get_vlc2(&s->gb,
ff_msmp4_dc_chroma_vlc[s->dc_table_index].table, DC_VLC_BITS, 3);
+ level = bitstream_read_vlc(&s->bc,
ff_msmp4_dc_chroma_vlc[s->dc_table_index].table,
+ DC_VLC_BITS, 3);
}
if (level < 0){
av_log(s->avctx, AV_LOG_ERROR, "illegal dc vlc\n");
@@ -596,11 +609,11 @@ static int msmpeg4_decode_dc(MpegEncContext * s, int n,
int *dir_ptr)
}
if (level == DC_MAX) {
- level = get_bits(&s->gb, 8);
- if (get_bits1(&s->gb))
+ level = bitstream_read(&s->bc, 8);
+ if (bitstream_read_bit(&s->bc))
level = -level;
} else if (level != 0) {
- if (get_bits1(&s->gb))
+ if (bitstream_read_bit(&s->bc))
level = -level;
}
}
@@ -699,57 +712,51 @@ int ff_msmpeg4_decode_block(MpegEncContext * s, int16_t *
block,
rl_vlc= rl->rl_vlc[s->qscale];
}
{
- OPEN_READER(re, &s->gb);
for(;;) {
- UPDATE_CACHE(re, &s->gb);
- GET_RL_VLC(level, run, re, &s->gb, rl_vlc, TEX_VLC_BITS, 2, 0);
+ BITSTREAM_RL_VLC(level, run, &s->bc, rl_vlc, TEX_VLC_BITS, 2);
if (level==0) {
int cache;
- cache= GET_CACHE(re, &s->gb);
+ cache = bitstream_peek(&s->bc, 32);
/* escape */
if (s->msmpeg4_version==1 || (cache&0x80000000)==0) {
if (s->msmpeg4_version==1 || (cache&0x40000000)==0) {
/* third escape */
- if(s->msmpeg4_version!=1) LAST_SKIP_BITS(re, &s->gb, 2);
- UPDATE_CACHE(re, &s->gb);
+ if (s->msmpeg4_version != 1)
+ bitstream_skip(&s->bc, 2);
if(s->msmpeg4_version<=3){
- last= SHOW_UBITS(re, &s->gb, 1); SKIP_CACHE(re,
&s->gb, 1);
- run= SHOW_UBITS(re, &s->gb, 6); SKIP_CACHE(re,
&s->gb, 6);
- level= SHOW_SBITS(re, &s->gb, 8);
- SKIP_COUNTER(re, &s->gb, 1+6+8);
+ last = bitstream_read(&s->bc, 1);
+ run = bitstream_read(&s->bc, 6);
+ level = bitstream_read_signed(&s->bc, 8);
}else{
int sign;
- last= SHOW_UBITS(re, &s->gb, 1); SKIP_BITS(re,
&s->gb, 1);
+ last = bitstream_read(&s->bc, 1);
if(!s->esc3_level_length){
int ll;
ff_dlog(s->avctx, "ESC-3 %X at %d %d\n",
- show_bits(&s->gb, 24), s->mb_x, s->mb_y);
+ bitstream_peek(&s->bc, 24), s->mb_x,
s->mb_y);
if(s->qscale<8){
- ll= SHOW_UBITS(re, &s->gb, 3); SKIP_BITS(re,
&s->gb, 3);
+ ll = bitstream_read(&s->bc, 3);
if(ll==0){
- ll= 8+SHOW_UBITS(re, &s->gb, 1);
SKIP_BITS(re, &s->gb, 1);
+ ll = 8 + bitstream_read_bit(&s->bc);
}
}else{
ll=2;
- while(ll<8 && SHOW_UBITS(re, &s->gb, 1)==0){
+ while (ll < 8 && bitstream_peek(&s->bc, 1) ==
0) {
ll++;
- SKIP_BITS(re, &s->gb, 1);
+ bitstream_skip(&s->bc, 1);
}
- if(ll<8) SKIP_BITS(re, &s->gb, 1);
+ if (ll < 8)
+ bitstream_skip(&s->bc, 1);
}
s->esc3_level_length= ll;
- s->esc3_run_length= SHOW_UBITS(re, &s->gb, 2) + 3;
SKIP_BITS(re, &s->gb, 2);
- UPDATE_CACHE(re, &s->gb);
+ s->esc3_run_length = bitstream_read(&s->bc, 2) + 3;
}
- run= SHOW_UBITS(re, &s->gb, s->esc3_run_length);
- SKIP_BITS(re, &s->gb, s->esc3_run_length);
+ run = bitstream_read(&s->bc, s->esc3_run_length);
- sign= SHOW_UBITS(re, &s->gb, 1);
- SKIP_BITS(re, &s->gb, 1);
+ sign = bitstream_read_bit(&s->bc);
- level= SHOW_UBITS(re, &s->gb, s->esc3_level_length);
- SKIP_BITS(re, &s->gb, s->esc3_level_length);
+ level = bitstream_read(&s->bc, s->esc3_level_length);
if(sign) level= -level;
}
@@ -792,11 +799,12 @@ int ff_msmpeg4_decode_block(MpegEncContext * s, int16_t *
block,
#endif
} else {
/* second escape */
- SKIP_BITS(re, &s->gb, 2);
- GET_RL_VLC(level, run, re, &s->gb, rl_vlc, TEX_VLC_BITS,
2, 1);
+ bitstream_skip(&s->bc, 2);
+ BITSTREAM_RL_VLC(level, run, &s->bc, rl_vlc, TEX_VLC_BITS,
2);
i+= run + rl->max_run[run>>7][level/qmul] + run_diff;
//FIXME opt indexing
- level = (level ^ SHOW_SBITS(re, &s->gb, 1)) -
SHOW_SBITS(re, &s->gb, 1);
- LAST_SKIP_BITS(re, &s->gb, 1);
+ level = (level ^ bitstream_peek_signed(&s->bc, 1)) -
+ bitstream_peek_signed(&s->bc, 1);
+ bitstream_skip(&s->bc, 1);
#ifdef ERROR_DETAILS
if(run==66)
av_log(s->avctx, AV_LOG_ERROR, "illegal vlc code in ESC2
level=%d\n", level);
@@ -806,12 +814,13 @@ int ff_msmpeg4_decode_block(MpegEncContext * s, int16_t *
block,
}
} else {
/* first escape */
- SKIP_BITS(re, &s->gb, 1);
- GET_RL_VLC(level, run, re, &s->gb, rl_vlc, TEX_VLC_BITS, 2, 1);
+ bitstream_skip(&s->bc, 1);
+ BITSTREAM_RL_VLC(level, run, &s->bc, rl_vlc, TEX_VLC_BITS, 2);
i+= run;
level = level + rl->max_level[run>>7][(run-1)&63] *
qmul;//FIXME opt indexing
- level = (level ^ SHOW_SBITS(re, &s->gb, 1)) - SHOW_SBITS(re,
&s->gb, 1);
- LAST_SKIP_BITS(re, &s->gb, 1);
+ level = (level ^ bitstream_peek_signed(&s->bc, 1)) -
+ bitstream_peek_signed(&s->bc, 1);
+ bitstream_skip(&s->bc, 1);
#ifdef ERROR_DETAILS
if(run==66)
av_log(s->avctx, AV_LOG_ERROR, "illegal vlc code in ESC1
level=%d\n", level);
@@ -821,8 +830,9 @@ int ff_msmpeg4_decode_block(MpegEncContext * s, int16_t *
block,
}
} else {
i+= run;
- level = (level ^ SHOW_SBITS(re, &s->gb, 1)) - SHOW_SBITS(re,
&s->gb, 1);
- LAST_SKIP_BITS(re, &s->gb, 1);
+ level = (level ^ bitstream_peek_signed(&s->bc, 1)) -
+ bitstream_peek_signed(&s->bc, 1);
+ bitstream_skip(&s->bc, 1);
#ifdef ERROR_DETAILS
if(run==66)
av_log(s->avctx, AV_LOG_ERROR, "illegal vlc code
level=%d\n", level);
@@ -833,7 +843,7 @@ int ff_msmpeg4_decode_block(MpegEncContext * s, int16_t *
block,
if (i > 62){
i-= 192;
if(i&(~63)){
- const int left= get_bits_left(&s->gb);
+ const int left = bitstream_bits_left(&s->bc);
if (((i + 192 == 64 && level / qmul == -1) ||
!(s->avctx->err_recognition & AV_EF_BITSTREAM)) &&
left >= 0) {
@@ -851,7 +861,6 @@ int ff_msmpeg4_decode_block(MpegEncContext * s, int16_t *
block,
block[scan_table[i]] = level;
}
- CLOSE_READER(re, &s->gb);
}
not_coded:
if (s->mb_intra) {
@@ -874,14 +883,14 @@ int ff_msmpeg4_decode_motion(MpegEncContext * s,
mv = &ff_mv_tables[s->mv_table_index];
- code = get_vlc2(&s->gb, mv->vlc.table, MV_VLC_BITS, 2);
+ code = bitstream_read_vlc(&s->bc, mv->vlc.table, MV_VLC_BITS, 2);
if (code < 0){
av_log(s->avctx, AV_LOG_ERROR, "illegal MV code at %d %d\n", s->mb_x,
s->mb_y);
return -1;
}
if (code == mv->n) {
- mx = get_bits(&s->gb, 6);
- my = get_bits(&s->gb, 6);
+ mx = bitstream_read(&s->bc, 6);
+ my = bitstream_read(&s->bc, 6);
} else {
mx = mv->table_mvx[code];
my = mv->table_mvy[code];
--
2.1.4
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel