# HG changeset patch # User michaelni # Date 1030960312 0 # Node ID f449913e84196d78ae6c26830feca76734e092fd # Parent 0012f75c92bb4d16933f210c47da5472adacf159 new vbv calculation patch by (Henry Mason ) with slight modification by me diff -r 0012f75c92bb -r f449913e8419 mpeg12.c --- a/mpeg12.c Mon Sep 02 08:48:12 2002 +0000 +++ b/mpeg12.c Mon Sep 02 09:51:52 2002 +0000 @@ -142,9 +142,12 @@ v = 0x3ffff; put_bits(&s->pb, 18, v); put_bits(&s->pb, 1, 1); /* marker */ - /* vbv buffer size: slightly greater than an I frame. We add - some margin just in case */ - vbv_buffer_size = (3 * s->I_frame_bits) / (2 * 8); + + if(s->avctx->rc_buffer_size) + vbv_buffer_size = s->avctx->rc_buffer_size; + else + /* VBV calculation: Scaled so that a VCD has the proper VBV size of 40 kilobytes */ + vbv_buffer_size = (( 20 * s->bit_rate) / (1151929 / 2)) * 8 * 1024; put_bits(&s->pb, 10, (vbv_buffer_size + 16383) / 16384); put_bits(&s->pb, 1, 1); /* constrained parameter flag */ put_bits(&s->pb, 1, 0); /* no custom intra matrix */