Replace computations of remaining bits with calls to get_bits_left().
This commit is contained in:
		
							parent
							
								
									b70feb4053
								
							
						
					
					
						commit
						3574a85ce5
					
				@ -49,7 +49,7 @@ typedef struct Escape124Context {
 | 
			
		||||
} Escape124Context;
 | 
			
		||||
 | 
			
		||||
static int can_safely_read(GetBitContext* gb, int bits) {
 | 
			
		||||
    return get_bits_count(gb) + bits <= gb->size_in_bits;
 | 
			
		||||
    return get_bits_left(gb) >= bits;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 | 
			
		||||
@ -265,7 +265,7 @@ static int h261_decode_mb(H261Context *h){
 | 
			
		||||
    while( h->mba_diff == MBA_STUFFING ); // stuffing
 | 
			
		||||
 | 
			
		||||
    if ( h->mba_diff < 0 ){
 | 
			
		||||
        if ( get_bits_count(&s->gb) + 7 >= s->gb.size_in_bits )
 | 
			
		||||
        if (get_bits_left(&s->gb) <= 7)
 | 
			
		||||
            return SLICE_END;
 | 
			
		||||
 | 
			
		||||
        av_log(s->avctx, AV_LOG_ERROR, "illegal mba at %d %d\n", s->mb_x, s->mb_y);
 | 
			
		||||
 | 
			
		||||
@ -650,7 +650,7 @@ retry:
 | 
			
		||||
    ret = decode_slice(s);
 | 
			
		||||
    while(s->mb_y<s->mb_height){
 | 
			
		||||
        if(s->msmpeg4_version){
 | 
			
		||||
            if(s->slice_height==0 || s->mb_x!=0 || (s->mb_y%s->slice_height)!=0 || get_bits_count(&s->gb) > s->gb.size_in_bits)
 | 
			
		||||
            if(s->slice_height==0 || s->mb_x!=0 || (s->mb_y%s->slice_height)!=0 || get_bits_left(&s->gb)<0)
 | 
			
		||||
                break;
 | 
			
		||||
        }else{
 | 
			
		||||
            int prev_x=s->mb_x, prev_y=s->mb_y;
 | 
			
		||||
 | 
			
		||||
@ -3667,7 +3667,7 @@ static int decode_slice(struct AVCodecContext *avctx, void *arg){
 | 
			
		||||
                if(s->mb_y >= s->mb_height){
 | 
			
		||||
                    tprintf(s->avctx, "slice end %d %d\n", get_bits_count(&s->gb), s->gb.size_in_bits);
 | 
			
		||||
 | 
			
		||||
                    if(get_bits_count(&s->gb) == s->gb.size_in_bits ) {
 | 
			
		||||
                    if (get_bits_left(&s->gb) == 0) {
 | 
			
		||||
                        ff_er_add_slice(s, s->resync_mb_x, s->resync_mb_y, s->mb_x-1, s->mb_y, ER_MB_END&part_mask);
 | 
			
		||||
 | 
			
		||||
                        return 0;
 | 
			
		||||
@ -3679,9 +3679,9 @@ static int decode_slice(struct AVCodecContext *avctx, void *arg){
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if(get_bits_count(&s->gb) >= s->gb.size_in_bits && s->mb_skip_run<=0){
 | 
			
		||||
            if (get_bits_left(&s->gb) <= 0 && s->mb_skip_run <= 0){
 | 
			
		||||
                tprintf(s->avctx, "slice end %d %d\n", get_bits_count(&s->gb), s->gb.size_in_bits);
 | 
			
		||||
                if(get_bits_count(&s->gb) == s->gb.size_in_bits ){
 | 
			
		||||
                if (get_bits_left(&s->gb) == 0) {
 | 
			
		||||
                    ff_er_add_slice(s, s->resync_mb_x, s->resync_mb_y, s->mb_x-1, s->mb_y, ER_MB_END&part_mask);
 | 
			
		||||
                    if (s->mb_x > lf_x_start) loop_filter(h, lf_x_start, s->mb_x);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -227,8 +227,8 @@ static inline int decode_vui_parameters(H264Context *h, SPS *sps){
 | 
			
		||||
        sps->num_reorder_frames= get_ue_golomb(&s->gb);
 | 
			
		||||
        get_ue_golomb(&s->gb); /*max_dec_frame_buffering*/
 | 
			
		||||
 | 
			
		||||
        if(s->gb.size_in_bits < get_bits_count(&s->gb)){
 | 
			
		||||
            av_log(h->s.avctx, AV_LOG_ERROR, "Overread VUI by %d bits\n", get_bits_count(&s->gb) - s->gb.size_in_bits);
 | 
			
		||||
        if (get_bits_left(&s->gb) < 0) {
 | 
			
		||||
            av_log(h->s.avctx, AV_LOG_ERROR, "Overread VUI by %d bits\n", -get_bits_left(&s->gb));
 | 
			
		||||
            sps->num_reorder_frames=0;
 | 
			
		||||
            sps->bitstream_restriction_flag= 0;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@ -164,7 +164,7 @@ static int decode_buffering_period(H264Context *h){
 | 
			
		||||
int ff_h264_decode_sei(H264Context *h){
 | 
			
		||||
    MpegEncContext * const s = &h->s;
 | 
			
		||||
 | 
			
		||||
    while(get_bits_count(&s->gb) + 16 < s->gb.size_in_bits){
 | 
			
		||||
    while (get_bits_left(&s->gb) > 16) {
 | 
			
		||||
        int size, type;
 | 
			
		||||
 | 
			
		||||
        type=0;
 | 
			
		||||
 | 
			
		||||
@ -718,7 +718,7 @@ static void decode_422_bitstream(HYuvContext *s, int count){
 | 
			
		||||
    count/=2;
 | 
			
		||||
 | 
			
		||||
    if(count >= (get_bits_left(&s->gb))/(31*4)){
 | 
			
		||||
        for(i=0; i<count && get_bits_count(&s->gb) < s->gb.size_in_bits; i++){
 | 
			
		||||
        for (i = 0; i < count && get_bits_left(&s->gb) > 0; i++) {
 | 
			
		||||
            READ_2PIX(s->temp[0][2*i  ], s->temp[1][i], 1);
 | 
			
		||||
            READ_2PIX(s->temp[0][2*i+1], s->temp[2][i], 2);
 | 
			
		||||
        }
 | 
			
		||||
@ -736,7 +736,7 @@ static void decode_gray_bitstream(HYuvContext *s, int count){
 | 
			
		||||
    count/=2;
 | 
			
		||||
 | 
			
		||||
    if(count >= (get_bits_left(&s->gb))/(31*2)){
 | 
			
		||||
        for(i=0; i<count && get_bits_count(&s->gb) < s->gb.size_in_bits; i++){
 | 
			
		||||
        for (i = 0; i < count && get_bits_left(&s->gb) > 0; i++) {
 | 
			
		||||
            READ_2PIX(s->temp[0][2*i  ], s->temp[0][2*i+1], 0);
 | 
			
		||||
        }
 | 
			
		||||
    }else{
 | 
			
		||||
 | 
			
		||||
@ -852,8 +852,8 @@ end:
 | 
			
		||||
    {
 | 
			
		||||
        int v= show_bits(&s->gb, 16);
 | 
			
		||||
 | 
			
		||||
        if(get_bits_count(&s->gb) + 16 > s->gb.size_in_bits){
 | 
			
		||||
            v>>= get_bits_count(&s->gb) + 16 - s->gb.size_in_bits;
 | 
			
		||||
        if (get_bits_left(&s->gb) < 16) {
 | 
			
		||||
            v >>= 16 - get_bits_left(&s->gb);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if(v==0)
 | 
			
		||||
 | 
			
		||||
@ -854,9 +854,9 @@ static int mjpeg_decode_scan(MJpegDecodeContext *s, int nb_components, int Ah,
 | 
			
		||||
            if (s->restart_interval && !s->restart_count)
 | 
			
		||||
                s->restart_count = s->restart_interval;
 | 
			
		||||
 | 
			
		||||
            if (get_bits_count(&s->gb)>s->gb.size_in_bits) {
 | 
			
		||||
            if (get_bits_left(&s->gb) < 0) {
 | 
			
		||||
                av_log(s->avctx, AV_LOG_ERROR, "overread %d\n",
 | 
			
		||||
                       get_bits_count(&s->gb) - s->gb.size_in_bits);
 | 
			
		||||
                       -get_bits_left(&s->gb));
 | 
			
		||||
                return -1;
 | 
			
		||||
            }
 | 
			
		||||
            for (i = 0; i < nb_components; i++) {
 | 
			
		||||
@ -1147,7 +1147,7 @@ static int mjpeg_decode_app(MJpegDecodeContext *s)
 | 
			
		||||
    len = get_bits(&s->gb, 16);
 | 
			
		||||
    if (len < 5)
 | 
			
		||||
        return -1;
 | 
			
		||||
    if (8 * len + get_bits_count(&s->gb) > s->gb.size_in_bits)
 | 
			
		||||
    if (8 * len > get_bits_left(&s->gb))
 | 
			
		||||
        return -1;
 | 
			
		||||
 | 
			
		||||
    id   = get_bits_long(&s->gb, 32);
 | 
			
		||||
@ -1288,8 +1288,7 @@ out:
 | 
			
		||||
static int mjpeg_decode_com(MJpegDecodeContext *s)
 | 
			
		||||
{
 | 
			
		||||
    int len = get_bits(&s->gb, 16);
 | 
			
		||||
    if (len >= 2 &&
 | 
			
		||||
        8 * len - 16 + get_bits_count(&s->gb) <= s->gb.size_in_bits) {
 | 
			
		||||
    if (len >= 2 && 8 * len - 16 <= get_bits_left(&s->gb)) {
 | 
			
		||||
        char *cbuf = av_malloc(len - 1);
 | 
			
		||||
        if (cbuf) {
 | 
			
		||||
            int i;
 | 
			
		||||
 | 
			
		||||
@ -387,7 +387,7 @@ static void vp6_parse_coeff_huffman(VP56Context *s)
 | 
			
		||||
                if (coeff_idx)
 | 
			
		||||
                    break;
 | 
			
		||||
            } else {
 | 
			
		||||
                if (get_bits_count(&s->gb) >= s->gb.size_in_bits)
 | 
			
		||||
                if (get_bits_left(&s->gb) <= 0)
 | 
			
		||||
                    return;
 | 
			
		||||
                coeff = get_vlc2(&s->gb, vlc_coeff->table, 9, 3);
 | 
			
		||||
                if (coeff == 0) {
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user