ref: fa25a31ed441e3e6475bffad4d340a88ae785cdf
parent: 9dc95b0a122b5f519117c0be6525d980c32f507e
author: Adrian Grange <agrange@google.com>
date: Mon Nov 7 11:54:40 EST 2011
Additional clipping of buffer level to maximum buffer size Added additional check of buffer level against maximum buffer size. Change-Id: Iaf1fbaf008601161e402b43ce82c3dbc129bf740
--- a/vp8/encoder/onyx_if.c
+++ b/vp8/encoder/onyx_if.c
@@ -3659,7 +3659,11 @@
else if (cpi->decimation_count > 0)
{
cpi->decimation_count --;
+
cpi->bits_off_target += cpi->av_per_frame_bandwidth;
+ if (cpi->bits_off_target > cpi->oxcf.maximum_buffer_size)
+ cpi->bits_off_target = cpi->oxcf.maximum_buffer_size;
+
cm->current_video_frame++;
cpi->frames_since_key++;
@@ -3676,9 +3680,11 @@
// Propagate bits saved by dropping the frame to higher layers
for (i=cpi->current_layer+1; i<cpi->oxcf.number_of_layers; i++)
{
- cpi->layer_context[i].bits_off_target
- += cpi->av_per_frame_bandwidth;
- cpi->layer_context[i].buffer_level = cpi->bits_off_target;
+ LAYER_CONTEXT *lc = &cpi->layer_context[i];
+ lc->bits_off_target += cpi->av_per_frame_bandwidth;
+ if (lc->bits_off_target > lc->maximum_buffer_size)
+ lc->bits_off_target = lc->maximum_buffer_size;
+ lc->buffer_level = lc->bits_off_target;
}
}
--
⑨