From bff6489c94818b4e0492d407edc16e376c70146a Mon Sep 17 00:00:00 2001 From: Fyodor Kyslov Date: Mon, 15 Mar 2021 13:55:50 -0700 Subject: [PATCH] AV1: Disable several intra coding tools. This will speed up key frame encoding (together with libaom changes) 3x-4x times with ~13% BDRate loss on key frames only Bug: None Change-Id: I24332f4f7285811cdc6619ba29844fe564cae95e Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/212040 Reviewed-by: Marco Paniconi Commit-Queue: Fyodor Kyslov Cr-Commit-Position: refs/heads/master@{#33468} --- .../codecs/av1/libaom_av1_encoder.cc | 28 +++++++++++++++++++ .../codecs/test/videocodec_test_libaom.cc | 2 +- 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/modules/video_coding/codecs/av1/libaom_av1_encoder.cc b/modules/video_coding/codecs/av1/libaom_av1_encoder.cc index dd9ff982c5..0edbd74c6c 100644 --- a/modules/video_coding/codecs/av1/libaom_av1_encoder.cc +++ b/modules/video_coding/codecs/av1/libaom_av1_encoder.cc @@ -382,6 +382,34 @@ int LibaomAv1Encoder::InitEncode(const VideoCodec* codec_settings, return WEBRTC_VIDEO_CODEC_ERROR; } + ret = aom_codec_control(&ctx_, AV1E_SET_ENABLE_CFL_INTRA, 0); + if (ret != AOM_CODEC_OK) { + RTC_LOG(LS_WARNING) << "LibaomAv1Encoder::EncodeInit returned " << ret + << " on control AV1E_SET_ENABLE_CFL_INTRA."; + return WEBRTC_VIDEO_CODEC_ERROR; + } + + ret = aom_codec_control(&ctx_, AV1E_SET_ENABLE_SMOOTH_INTRA, 0); + if (ret != AOM_CODEC_OK) { + RTC_LOG(LS_WARNING) << "LibaomAv1Encoder::EncodeInit returned " << ret + << " on control AV1E_SET_ENABLE_SMOOTH_INTRA."; + return WEBRTC_VIDEO_CODEC_ERROR; + } + + ret = aom_codec_control(&ctx_, AV1E_SET_ENABLE_ANGLE_DELTA, 0); + if (ret != AOM_CODEC_OK) { + RTC_LOG(LS_WARNING) << "LibaomAv1Encoder::EncodeInit returned " << ret + << " on control AV1E_SET_ENABLE_ANGLE_DELTA."; + return WEBRTC_VIDEO_CODEC_ERROR; + } + + ret = aom_codec_control(&ctx_, AV1E_SET_ENABLE_FILTER_INTRA, 0); + if (ret != AOM_CODEC_OK) { + RTC_LOG(LS_WARNING) << "LibaomAv1Encoder::EncodeInit returned " << ret + << " on control AV1E_SET_ENABLE_FILTER_INTRA."; + return WEBRTC_VIDEO_CODEC_ERROR; + } + return WEBRTC_VIDEO_CODEC_OK; } diff --git a/modules/video_coding/codecs/test/videocodec_test_libaom.cc b/modules/video_coding/codecs/test/videocodec_test_libaom.cc index a96e2c9101..9510b0f173 100644 --- a/modules/video_coding/codecs/test/videocodec_test_libaom.cc +++ b/modules/video_coding/codecs/test/videocodec_test_libaom.cc @@ -89,7 +89,7 @@ TEST(VideoCodecTestLibaom, HdAV1) { std::vector rc_thresholds = { {13, 3, 0, 1, 0.3, 0.1, 0, 1}}; - std::vector quality_thresholds = {{36, 32, 0.93, 0.87}}; + std::vector quality_thresholds = {{36, 31.9, 0.93, 0.87}}; fixture->RunTest(rate_profiles, &rc_thresholds, &quality_thresholds, nullptr); }