Mercurial > libavcodec.hg
changeset 911:4b2c86f1fee9 libavcodec
drop b frames if there are no reference frames
skip b frames if hurry_up
author | michaelni |
---|---|
date | Thu, 05 Dec 2002 11:33:43 +0000 |
parents | eb448df811be |
children | 4a1e6bb1f41c |
files | mpeg12.c |
diffstat | 1 files changed, 9 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/mpeg12.c Wed Dec 04 22:16:24 2002 +0000 +++ b/mpeg12.c Thu Dec 05 11:33:43 2002 +0000 @@ -1421,6 +1421,7 @@ } 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 @@ 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) {