diff options
Diffstat (limited to 'vp9')
-rw-r--r-- | vp9/encoder/vp9_encodeframe.c | 4 | ||||
-rw-r--r-- | vp9/encoder/vp9_onyx_if.c | 4 | ||||
-rw-r--r-- | vp9/encoder/vp9_ratectrl.c | 18 | ||||
-rw-r--r-- | vp9/encoder/vp9_speed_features.h | 2 | ||||
-rw-r--r-- | vp9/encoder/vp9_svc_layercontext.c | 2 |
5 files changed, 18 insertions, 12 deletions
diff --git a/vp9/encoder/vp9_encodeframe.c b/vp9/encoder/vp9_encodeframe.c index 0cc50f71f..34ea88ccb 100644 --- a/vp9/encoder/vp9_encodeframe.c +++ b/vp9/encoder/vp9_encodeframe.c @@ -1473,8 +1473,8 @@ static void set_source_var_based_partition(VP9_COMP *cpi, const int pre_offset = (mi_row * MI_SIZE) * pre_stride + (mi_col * MI_SIZE); const uint8_t *pre_src = cpi->Last_Source->y_buffer + pre_offset; - const int thr_32x32 = cpi->sf.source_var_thresh; - const int thr_64x64 = thr_32x32 << 1; + const unsigned int thr_32x32 = cpi->sf.source_var_thresh; + const unsigned int thr_64x64 = thr_32x32 << 1; int i, j; int index; diff d32[4]; diff --git a/vp9/encoder/vp9_onyx_if.c b/vp9/encoder/vp9_onyx_if.c index 0ac9d5f05..7df1806e9 100644 --- a/vp9/encoder/vp9_onyx_if.c +++ b/vp9/encoder/vp9_onyx_if.c @@ -906,7 +906,9 @@ void vp9_change_config(struct VP9_COMP *cpi, const VP9_CONFIG *oxcf) { cpi->ext_refresh_frame_context_pending = 0; } +#ifndef M_LOG2_E #define M_LOG2_E 0.693147180559945309417 +#endif #define log2f(x) (log (x) / (float) M_LOG2_E) static void cal_nmvjointsadcost(int *mvjointsadcost) { @@ -1386,8 +1388,6 @@ VP9_COMP *vp9_create_compressor(VP9_CONFIG *oxcf) { cm->error.setjmp = 0; - vp9_zero(cpi->common.counts.uv_mode); - #ifdef MODE_TEST_HIT_STATS vp9_zero(cpi->mode_test_hits); #endif diff --git a/vp9/encoder/vp9_ratectrl.c b/vp9/encoder/vp9_ratectrl.c index b4e883fb5..6a9ffd25d 100644 --- a/vp9/encoder/vp9_ratectrl.c +++ b/vp9/encoder/vp9_ratectrl.c @@ -1258,17 +1258,25 @@ static int calc_pframe_target_size_one_pass_cbr(const VP9_COMP *cpi) { static int calc_iframe_target_size_one_pass_cbr(const VP9_COMP *cpi) { const RATE_CONTROL *rc = &cpi->rc; + const VP9_CONFIG *oxcf = &cpi->oxcf; + const SVC *const svc = &cpi->svc; int target; - if (cpi->common.current_video_frame == 0) { target = ((cpi->oxcf.starting_buffer_level / 2) > INT_MAX) ? INT_MAX : (int)(cpi->oxcf.starting_buffer_level / 2); } else { - const int initial_boost = 32; - int kf_boost = MAX(initial_boost, (int)(2 * cpi->output_framerate - 16)); - if (rc->frames_since_key < cpi->output_framerate / 2) { + int kf_boost = 32; + double framerate = oxcf->framerate; + if (svc->number_temporal_layers > 1 && + oxcf->end_usage == USAGE_STREAM_FROM_SERVER) { + // Use the layer framerate for temporal layers CBR mode. + const LAYER_CONTEXT *lc = &svc->layer_context[svc->temporal_layer_id]; + framerate = lc->framerate; + } + kf_boost = MAX(kf_boost, (int)(2 * framerate - 16)); + if (rc->frames_since_key < framerate / 2) { kf_boost = (int)(kf_boost * rc->frames_since_key / - (cpi->output_framerate / 2)); + (framerate / 2)); } target = ((16 + kf_boost) * rc->av_per_frame_bandwidth) >> 4; } diff --git a/vp9/encoder/vp9_speed_features.h b/vp9/encoder/vp9_speed_features.h index 72f548a04..55422979a 100644 --- a/vp9/encoder/vp9_speed_features.h +++ b/vp9/encoder/vp9_speed_features.h @@ -344,7 +344,7 @@ typedef struct { int search_type_check_frequency; // The threshold used in SOURCE_VAR_BASED_PARTITION search type. - int source_var_thresh; + unsigned int source_var_thresh; } SPEED_FEATURES; struct VP9_COMP; diff --git a/vp9/encoder/vp9_svc_layercontext.c b/vp9/encoder/vp9_svc_layercontext.c index c2b6263f0..9b3fc6eab 100644 --- a/vp9/encoder/vp9_svc_layercontext.c +++ b/vp9/encoder/vp9_svc_layercontext.c @@ -178,7 +178,6 @@ void vp9_restore_layer_context(VP9_COMP *const cpi) { cpi->oxcf.starting_buffer_level = lc->starting_buffer_level; cpi->oxcf.optimal_buffer_level = lc->optimal_buffer_level; cpi->oxcf.maximum_buffer_size = lc->maximum_buffer_size; - cpi->output_framerate = lc->framerate; // Reset the frames_since_key and frames_to_key counters to their values // before the layer restore. Keep these defined for the stream (not layer). if (cpi->svc.number_temporal_layers > 1) { @@ -197,7 +196,6 @@ void vp9_save_layer_context(VP9_COMP *const cpi) { lc->starting_buffer_level = oxcf->starting_buffer_level; lc->optimal_buffer_level = oxcf->optimal_buffer_level; lc->maximum_buffer_size = oxcf->maximum_buffer_size; - lc->framerate = cpi->output_framerate; } void vp9_init_second_pass_spatial_svc(VP9_COMP *cpi) { |