Mercurial > libavcodec.hg
comparison mpeg12.c @ 639:f449913e8419 libavcodec
new vbv calculation patch by (Henry Mason <talus25 at speakeasy dot net>) with slight modification by me
author | michaelni |
---|---|
date | Mon, 02 Sep 2002 09:51:52 +0000 |
parents | a5aa53b6e648 |
children | 22b22723805e |
comparison
equal
deleted
inserted
replaced
638:0012f75c92bb | 639:f449913e8419 |
---|---|
140 v = s->bit_rate / 400; | 140 v = s->bit_rate / 400; |
141 if (v > 0x3ffff) | 141 if (v > 0x3ffff) |
142 v = 0x3ffff; | 142 v = 0x3ffff; |
143 put_bits(&s->pb, 18, v); | 143 put_bits(&s->pb, 18, v); |
144 put_bits(&s->pb, 1, 1); /* marker */ | 144 put_bits(&s->pb, 1, 1); /* marker */ |
145 /* vbv buffer size: slightly greater than an I frame. We add | 145 |
146 some margin just in case */ | 146 if(s->avctx->rc_buffer_size) |
147 vbv_buffer_size = (3 * s->I_frame_bits) / (2 * 8); | 147 vbv_buffer_size = s->avctx->rc_buffer_size; |
148 else | |
149 /* VBV calculation: Scaled so that a VCD has the proper VBV size of 40 kilobytes */ | |
150 vbv_buffer_size = (( 20 * s->bit_rate) / (1151929 / 2)) * 8 * 1024; | |
148 put_bits(&s->pb, 10, (vbv_buffer_size + 16383) / 16384); | 151 put_bits(&s->pb, 10, (vbv_buffer_size + 16383) / 16384); |
149 put_bits(&s->pb, 1, 1); /* constrained parameter flag */ | 152 put_bits(&s->pb, 1, 1); /* constrained parameter flag */ |
150 put_bits(&s->pb, 1, 0); /* no custom intra matrix */ | 153 put_bits(&s->pb, 1, 0); /* no custom intra matrix */ |
151 put_bits(&s->pb, 1, 0); /* no custom non intra matrix */ | 154 put_bits(&s->pb, 1, 0); /* no custom non intra matrix */ |
152 | 155 |