Mercurial > libavcodec.hg
diff mpegvideo.c @ 1697:f3287b5d8d9f libavcodec
vbv_delay
author | michael |
---|---|
date | Wed, 17 Dec 2003 19:53:05 +0000 |
parents | 1a2db2073848 |
children | fbab59f03144 |
line wrap: on
line diff
--- a/mpegvideo.c Tue Dec 16 11:17:06 2003 +0000 +++ b/mpegvideo.c Wed Dec 17 19:53:05 2003 +0000 @@ -1865,7 +1865,23 @@ flush_put_bits(&s->pb); s->frame_bits = (pbBufPtr(&s->pb) - s->pb.buf) * 8; } - + + /* update mpeg1/2 vbv_delay for CBR */ + if(s->avctx->rc_max_rate && s->avctx->rc_min_rate == s->avctx->rc_max_rate){ + int vbv_delay; + + assert(s->repeat_first_field==0 && s->avctx->repeat_pic==0); + + vbv_delay= lrint(90000 * s->rc_context.buffer_index / s->avctx->rc_max_rate); + assert(vbv_delay < 0xFFFF); + + s->vbv_delay_ptr[0] &= 0xF8; + s->vbv_delay_ptr[0] |= vbv_delay>>13; + s->vbv_delay_ptr[1] = vbv_delay>>5; + s->vbv_delay_ptr[2] &= 0x07; + s->vbv_delay_ptr[2] |= vbv_delay<<3; + } + s->total_bits += s->frame_bits; avctx->frame_bits = s->frame_bits;