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 }