Mercurial > libavcodec.hg
comparison mpegvideo.c @ 1697:f3287b5d8d9f libavcodec
vbv_delay
author | michael |
---|---|
date | Wed, 17 Dec 2003 19:53:05 +0000 |
parents | 1a2db2073848 |
children | fbab59f03144 |
comparison
equal
deleted
inserted
replaced
1696:f5af91b8be17 | 1697:f3287b5d8d9f |
---|---|
1863 av_log(s->avctx, AV_LOG_ERROR, "vbv buffer overflow\n"); | 1863 av_log(s->avctx, AV_LOG_ERROR, "vbv buffer overflow\n"); |
1864 } | 1864 } |
1865 flush_put_bits(&s->pb); | 1865 flush_put_bits(&s->pb); |
1866 s->frame_bits = (pbBufPtr(&s->pb) - s->pb.buf) * 8; | 1866 s->frame_bits = (pbBufPtr(&s->pb) - s->pb.buf) * 8; |
1867 } | 1867 } |
1868 | 1868 |
1869 /* update mpeg1/2 vbv_delay for CBR */ | |
1870 if(s->avctx->rc_max_rate && s->avctx->rc_min_rate == s->avctx->rc_max_rate){ | |
1871 int vbv_delay; | |
1872 | |
1873 assert(s->repeat_first_field==0 && s->avctx->repeat_pic==0); | |
1874 | |
1875 vbv_delay= lrint(90000 * s->rc_context.buffer_index / s->avctx->rc_max_rate); | |
1876 assert(vbv_delay < 0xFFFF); | |
1877 | |
1878 s->vbv_delay_ptr[0] &= 0xF8; | |
1879 s->vbv_delay_ptr[0] |= vbv_delay>>13; | |
1880 s->vbv_delay_ptr[1] = vbv_delay>>5; | |
1881 s->vbv_delay_ptr[2] &= 0x07; | |
1882 s->vbv_delay_ptr[2] |= vbv_delay<<3; | |
1883 } | |
1884 | |
1869 s->total_bits += s->frame_bits; | 1885 s->total_bits += s->frame_bits; |
1870 avctx->frame_bits = s->frame_bits; | 1886 avctx->frame_bits = s->frame_bits; |
1871 | 1887 |
1872 return s->frame_bits/8; | 1888 return s->frame_bits/8; |
1873 } | 1889 } |