diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2002-12-05 11:33:43 +0000 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2002-12-05 11:33:43 +0000 |
commit | d9cb5429f27011b46f8809586c34ec97030d769c (patch) | |
tree | d9bb2803277d0e5ad7ba4c353bd043889b505d85 /libavcodec/mpeg12.c | |
parent | 34b10a5791b363072653b1376f0ae779cce426e2 (diff) | |
download | ffmpeg-d9cb5429f27011b46f8809586c34ec97030d769c.tar.gz |
drop b frames if there are no reference frames
skip b frames if hurry_up
Originally committed as revision 1312 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec/mpeg12.c')
-rw-r--r-- | libavcodec/mpeg12.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/libavcodec/mpeg12.c b/libavcodec/mpeg12.c index 328217a253..e625a72624 100644 --- a/libavcodec/mpeg12.c +++ b/libavcodec/mpeg12.c @@ -1421,6 +1421,7 @@ static int mpeg1_decode_picture(AVCodecContext *avctx, } s->current_picture.pict_type= s->pict_type; s->current_picture.key_frame= s->pict_type == I_TYPE; + s->y_dc_scale = 8; s->c_dc_scale = 8; s->first_slice = 1; @@ -1895,8 +1896,15 @@ static int mpeg_decode_frame(AVCodecContext *avctx, s->buffer, input_size); break; default: + /* skip b frames if we dont have reference frames */ + if(s2->last_picture.data[0]==NULL && s2->pict_type==B_TYPE) break; + /* skip b frames if we are in a hurry */ + if(avctx->hurry_up && s2->pict_type==B_TYPE) break; + /* skip everything if we are in a hurry>=5 */ + if(avctx->hurry_up>=5) break; + if (start_code >= SLICE_MIN_START_CODE && - start_code <= SLICE_MAX_START_CODE && avctx->hurry_up<5) { + start_code <= SLICE_MAX_START_CODE) { ret = mpeg_decode_slice(avctx, picture, start_code, s->buffer, input_size); if (ret == DECODE_SLICE_EOP) { |