Browse Source

prevent assert failures and infinite loops with broken streams

Originally committed as revision 4538 to svn://svn.ffmpeg.org/ffmpeg/trunk
tags/v0.5
Michael Niedermayer 20 years ago
parent
commit
ba17363ff7
1 changed files with 5 additions and 3 deletions
  1. +5
    -3
      libavcodec/h264.c

+ 5
- 3
libavcodec/h264.c View File

@@ -5363,6 +5363,8 @@ static int decode_cabac_mb_dqp( H264Context *h) {
else else
ctx = 3; ctx = 3;
val++; val++;
if(val > 52) //prevent infinite loop
return INT_MIN;
} }


if( val&0x01 ) if( val&0x01 )
@@ -6548,7 +6550,7 @@ static void filter_mb( H264Context *h, int mb_x, int mb_y, uint8_t *img_y, uint8
bS[0] = bS[1] = bS[2] = bS[3] = 3; bS[0] = bS[1] = bS[2] = bS[3] = 3;
} else { } else {
// TODO // TODO
assert(0);
av_log(h->s.avctx, AV_LOG_ERROR, "both non intra (TODO)\n");
} }
/* Filter edge */ /* Filter edge */
// Do not use s->qscale as luma quantizer because it has not the same // Do not use s->qscale as luma quantizer because it has not the same
@@ -6569,7 +6571,7 @@ static void filter_mb( H264Context *h, int mb_x, int mb_y, uint8_t *img_y, uint8
bS[0] = bS[1] = bS[2] = bS[3] = 3; bS[0] = bS[1] = bS[2] = bS[3] = 3;
} else { } else {
// TODO // TODO
assert(0);
av_log(h->s.avctx, AV_LOG_ERROR, "both non intra (TODO)\n");
} }
/* Filter edge */ /* Filter edge */
// Do not use s->qscale as luma quantizer because it has not the same // Do not use s->qscale as luma quantizer because it has not the same
@@ -6701,7 +6703,7 @@ static int decode_slice(H264Context *h){


if(ret>=0) ret = decode_mb_cabac(h); if(ret>=0) ret = decode_mb_cabac(h);


hl_decode_mb(h);
if(ret>=0) hl_decode_mb(h);
s->mb_y--; s->mb_y--;
} }
eos = get_cabac_terminate( &h->cabac ); eos = get_cabac_terminate( &h->cabac );


Loading…
Cancel
Save