From dee5782f93cf9dcbe5e7fdad1873039fc0ab8cbf Mon Sep 17 00:00:00 2001 From: Yunqing Wang Date: Fri, 27 Jun 2014 17:44:32 -0700 Subject: [PATCH] Enable encode breakout in real time For real time speed 7, once encode breakout is on(i.e. encoding setting --static-thresh=1), a proper encode breakout threshold is set to speed up the encoder. Set --static-thresh=1, RTC set borg test showed a slight overall psnr loss of 0.162%, but ssim gain of 0.287%. The average speedup on RTC set is 6%, and for some clips, the speedup can be 10+%. Change-Id: Id522d9ce779ff7c699936d13d0c47083de4afb85 --- vp9/encoder/vp9_speed_features.c | 7 +++++++ vp9/encoder/vp9_speed_features.h | 4 ++++ 2 files changed, 11 insertions(+) diff --git a/vp9/encoder/vp9_speed_features.c b/vp9/encoder/vp9_speed_features.c index b8a2ce0ff..88a750276 100644 --- a/vp9/encoder/vp9_speed_features.c +++ b/vp9/encoder/vp9_speed_features.c @@ -280,6 +280,8 @@ static void set_rt_speed_feature(VP9_COMP *cpi, SPEED_FEATURES *sf, } if (speed >= 7) { sf->lpf_pick = LPF_PICK_MINIMAL_LPF; + sf->encode_breakout_thresh = (MIN(cm->width, cm->height) >= 720) ? + 800 : 300; } if (speed >= 8) { int i; @@ -349,6 +351,7 @@ void vp9_set_speed_features(VP9_COMP *cpi) { // to FIXED_PARTITION. sf->always_this_block_size = BLOCK_16X16; sf->search_type_check_frequency = 50; + sf->encode_breakout_thresh = 0; // Recode loop tolerence %. sf->recode_tolerance = 25; @@ -392,4 +395,8 @@ void vp9_set_speed_features(VP9_COMP *cpi) { if (!cpi->oxcf.frame_periodic_boost) { sf->max_delta_qindex = 0; } + + if (cpi->encode_breakout && oxcf->mode == REALTIME && + sf->encode_breakout_thresh > cpi->encode_breakout) + cpi->encode_breakout = sf->encode_breakout_thresh; } diff --git a/vp9/encoder/vp9_speed_features.h b/vp9/encoder/vp9_speed_features.h index 7a5cc34bc..e14eb404c 100644 --- a/vp9/encoder/vp9_speed_features.h +++ b/vp9/encoder/vp9_speed_features.h @@ -357,6 +357,10 @@ typedef struct SPEED_FEATURES { // can be reused in final block encoding process. It is enabled only for real- // time mode speed 6. int reuse_inter_pred_sby; + + // This variable sets the encode_breakout threshold. Currently, it is only + // enabled in real time mode. + int encode_breakout_thresh; } SPEED_FEATURES; struct VP9_COMP; -- 2.50.0