From de7ee3a53d6ab25334fea073a7052d6da9f15df2 Mon Sep 17 00:00:00 2001 From: Jerome Jiang Date: Tue, 9 Feb 2021 10:16:07 -0800 Subject: [PATCH] Reland "AV1: change update freq and disable denoiser explicitly." This is a reland of abf5701c378329115838f3405ff48d43d2502559 Original change's description: > AV1: change update freq and disable denoiser explicitly. > > Change speed/thread settings for faster encoding. > > Change-Id: I74d93eac26ae8700a48c437fe235643810de1ca0 > Bug: None > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/206480 > Reviewed-by: Marco Paniconi > Reviewed-by: Marco Paniconi > Commit-Queue: Jerome Jiang > Cr-Commit-Position: refs/heads/master@{#33208} Bug: None Change-Id: Icc8e064b4af175214a7fdec16f3c8078c0220e50 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/206900 Reviewed-by: Jerome Jiang Reviewed-by: Marco Paniconi Commit-Queue: Mirko Bonadei Cr-Commit-Position: refs/heads/master@{#33226} --- .../codecs/av1/libaom_av1_encoder.cc | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/modules/video_coding/codecs/av1/libaom_av1_encoder.cc b/modules/video_coding/codecs/av1/libaom_av1_encoder.cc index bf73decbc1..06b46989c6 100644 --- a/modules/video_coding/codecs/av1/libaom_av1_encoder.cc +++ b/modules/video_coding/codecs/av1/libaom_av1_encoder.cc @@ -54,9 +54,11 @@ constexpr float kMinimumFrameRate = 1.0; int GetCpuSpeed(int width, int height, int number_of_cores) { // For smaller resolutions, use lower speed setting (get some coding gain at // the cost of increased encoding complexity). - if (number_of_cores > 2 && width * height <= 320 * 180) + if (number_of_cores > 4 && width * height < 320 * 180) return 6; else if (width * height >= 1280 * 720) + return 9; + else if (width * height >= 640 * 480) return 8; else return 7; @@ -283,13 +285,13 @@ int LibaomAv1Encoder::InitEncode(const VideoCodec* codec_settings, << " on control AV1E_SET_MAX_INTRA_BITRATE_PCT."; return WEBRTC_VIDEO_CODEC_ERROR; } - ret = aom_codec_control(&ctx_, AV1E_SET_COEFF_COST_UPD_FREQ, 2); + ret = aom_codec_control(&ctx_, AV1E_SET_COEFF_COST_UPD_FREQ, 3); if (ret != AOM_CODEC_OK) { RTC_LOG(LS_WARNING) << "LibaomAv1Encoder::EncodeInit returned " << ret << " on control AV1E_SET_COEFF_COST_UPD_FREQ."; return WEBRTC_VIDEO_CODEC_ERROR; } - ret = aom_codec_control(&ctx_, AV1E_SET_MODE_COST_UPD_FREQ, 2); + ret = aom_codec_control(&ctx_, AV1E_SET_MODE_COST_UPD_FREQ, 3); if (ret != AOM_CODEC_OK) { RTC_LOG(LS_WARNING) << "LibaomAv1Encoder::EncodeInit returned " << ret << " on control AV1E_SET_MODE_COST_UPD_FREQ."; @@ -323,6 +325,13 @@ int LibaomAv1Encoder::InitEncode(const VideoCodec* codec_settings, return WEBRTC_VIDEO_CODEC_ERROR; } + ret = aom_codec_control(&ctx_, AV1E_SET_NOISE_SENSITIVITY, 0); + if (ret != AOM_CODEC_OK) { + RTC_LOG(LS_WARNING) << "LibaomAv1Encoder::EncodeInit returned " << ret + << " on control AV1E_SET_NOISE_SENSITIVITY."; + return WEBRTC_VIDEO_CODEC_ERROR; + } + ret = aom_codec_control(&ctx_, AV1E_SET_ENABLE_WARPED_MOTION, 0); if (ret != AOM_CODEC_OK) { RTC_LOG(LS_WARNING) << "LibaomAv1Encoder::EncodeInit returned " << ret @@ -352,7 +361,7 @@ int LibaomAv1Encoder::NumberOfThreads(int width, int number_of_cores) { // Keep the number of encoder threads equal to the possible number of column // tiles, which is (1, 2, 4, 8). See comments below for AV1E_SET_TILE_COLUMNS. - if (width * height >= 1280 * 720 && number_of_cores > 4) { + if (width * height >= 960 * 540 && number_of_cores > 4) { return 4; } else if (width * height >= 640 * 360 && number_of_cores > 2) { return 2;