From 1ae97b4a4db010ee87bedca5943c64f55d43f6f7 Mon Sep 17 00:00:00 2001 From: Jerome Jiang Date: Tue, 20 Mar 2018 15:39:02 -0700 Subject: [PATCH] vp9 svc frame drop: enable adaptive rd for row mt. adaptive_rd_threshold_mt is set to 1 when speed >= 7 for SVC. QVGA in SVC uses speed 5 which set adaptive_rd_threshold_mt to 0. If VGA or HD is dropped for the last super frame, the flag is still 0 when the encoder is destroyed. Thus memory won't be released. Change the bitrate threshold in datarate test. Change-Id: I55352cc0b030568d38eb735d99c2fa29058d3690 --- test/datarate_test.cc | 2 +- vp9/encoder/vp9_multi_thread.c | 8 +++----- vp9/encoder/vp9_speed_features.c | 5 ----- 3 files changed, 4 insertions(+), 11 deletions(-) diff --git a/test/datarate_test.cc b/test/datarate_test.cc index 8dab2f17e..ff149671e 100644 --- a/test/datarate_test.cc +++ b/test/datarate_test.cc @@ -2230,7 +2230,7 @@ TEST_P(DatarateOnePassCbrSvc, OnePassCbrSvc3SL3TL4Threads) { layer_target_avg_bandwidth_, bits_in_buffer_model_); ASSERT_NO_FATAL_FAILURE(RunLoop(&video)); CheckLayerRateTargeting(&cfg_, number_spatial_layers_, - number_temporal_layers_, file_datarate_, 0.75, 1.2); + number_temporal_layers_, file_datarate_, 0.73, 1.2); #if CONFIG_VP9_DECODER // The non-reference frames are expected to be mismatched frames as the // encoder will avoid loopfilter on these frames. diff --git a/vp9/encoder/vp9_multi_thread.c b/vp9/encoder/vp9_multi_thread.c index da06fb151..381edca99 100644 --- a/vp9/encoder/vp9_multi_thread.c +++ b/vp9/encoder/vp9_multi_thread.c @@ -146,11 +146,9 @@ void vp9_row_mt_mem_dealloc(VP9_COMP *cpi) { TileDataEnc *this_tile = &cpi->tile_data[tile_row * multi_thread_ctxt->allocated_tile_cols + tile_col]; - if (cpi->sf.adaptive_rd_thresh_row_mt) { - if (this_tile->row_base_thresh_freq_fact != NULL) { - vpx_free(this_tile->row_base_thresh_freq_fact); - this_tile->row_base_thresh_freq_fact = NULL; - } + if (this_tile->row_base_thresh_freq_fact != NULL) { + vpx_free(this_tile->row_base_thresh_freq_fact); + this_tile->row_base_thresh_freq_fact = NULL; } } } diff --git a/vp9/encoder/vp9_speed_features.c b/vp9/encoder/vp9_speed_features.c index cfa6aa403..879cd2070 100644 --- a/vp9/encoder/vp9_speed_features.c +++ b/vp9/encoder/vp9_speed_features.c @@ -667,11 +667,6 @@ static void set_rt_speed_feature_framesize_independent( (uint8_t *)vpx_calloc((cm->mi_stride >> 3) * ((cm->mi_rows >> 3) + 1), sizeof(*cpi->count_lastgolden_frame_usage)); } - // Disable adaptive_rd_thresh for row_mt for SVC with frame dropping. - // This is causing some tests to fail. - // TODO(marpan/jianj): Look into this failure and re-enable later. - if (cpi->use_svc && cpi->oxcf.drop_frames_water_mark) - sf->adaptive_rd_thresh_row_mt = 0; } void vp9_set_speed_features_framesize_dependent(VP9_COMP *cpi) { -- 2.40.0