lc-dec: Extend vertical 608p/720p sfs to vertical 1080p
In this patch, low complexity decode mode speed features of vertical
608p/720p resolutions are extended to vertical 1080p resolution.
Performance results of encoder and decoder for the streams generated
with low complexity decode mode enabled.
Decode Time BD-Rate Loss(%)
cpu Resolution Reduction(%) avg.psnr ssim vmaf vmaf_neg
1 1080p 23.029 1.4448 2.4117 1.2980 1.1123
2 1080p 21.487 1.3926 2.3676 1.3641 1.1507
3 1080p 21.855 1.6171 2.6629 1.7533 1.5080
STATS_CHANGED for vertical 1080p with low complexity decode mode enabled.
Change-Id: Icfd398504d6ffff9e4f64f1a5229451ed60a35d4
diff --git a/av1/av1_cx_iface.c b/av1/av1_cx_iface.c
index 4eff4e9..fc4c431 100644
--- a/av1/av1_cx_iface.c
+++ b/av1/av1_cx_iface.c
@@ -1343,7 +1343,7 @@
const int is_low_complexity_decode_mode_supported =
(cfg->g_usage == AOM_USAGE_GOOD_QUALITY) &&
(oxcf->speed >= 1 && oxcf->speed <= 3) && (cfg->g_w < cfg->g_h) &&
- (AOMMIN(cfg->g_w, cfg->g_h) >= 608 && AOMMIN(cfg->g_w, cfg->g_h) <= 720);
+ (AOMMIN(cfg->g_w, cfg->g_h) >= 608 && AOMMIN(cfg->g_w, cfg->g_h) <= 1080);
oxcf->enable_low_complexity_decode =
extra_cfg->enable_low_complexity_decode &&
is_low_complexity_decode_mode_supported;
diff --git a/av1/encoder/speed_features.c b/av1/encoder/speed_features.c
index 84503dd..4bad112 100644
--- a/av1/encoder/speed_features.c
+++ b/av1/encoder/speed_features.c
@@ -638,8 +638,8 @@
const AV1_COMMON *const cm = &cpi->common;
const bool is_720p_or_larger = AOMMIN(cm->width, cm->height) >= 720;
- const bool is_between_608p_and_720p = AOMMIN(cm->width, cm->height) >= 608 &&
- AOMMIN(cm->width, cm->height) <= 720;
+ const bool is_between_608p_and_1080p = AOMMIN(cm->width, cm->height) >= 608 &&
+ AOMMIN(cm->width, cm->height) <= 1080;
const bool is_vertical_video = cm->width < cm->height;
const FRAME_UPDATE_TYPE update_type =
@@ -648,7 +648,7 @@
const int is_key_frame = frame_is_intra_only(cm);
// Speed features for vertical videos
- if (is_vertical_video && is_between_608p_and_720p) {
+ if (is_vertical_video && is_between_608p_and_1080p) {
const int leaf_and_overlay_frames =
(update_type == LF_UPDATE || update_type == OVERLAY_UPDATE ||
update_type == INTNL_OVERLAY_UPDATE);
@@ -2745,8 +2745,8 @@
if (speed < 1 || speed > 3) return;
const AV1_COMMON *const cm = &cpi->common;
- const bool is_between_608p_and_720p = AOMMIN(cm->width, cm->height) >= 608 &&
- AOMMIN(cm->width, cm->height) <= 720;
+ const bool is_between_608p_and_1080p = AOMMIN(cm->width, cm->height) >= 608 &&
+ AOMMIN(cm->width, cm->height) <= 1080;
const bool is_720p_or_larger = AOMMIN(cm->width, cm->height) >= 720;
const bool is_vertical_video = cm->width < cm->height;
const FRAME_UPDATE_TYPE update_type =
@@ -2756,7 +2756,7 @@
update_type == INTNL_OVERLAY_UPDATE);
// Speed features for vertical videos
- if (is_vertical_video && is_between_608p_and_720p) {
+ if (is_vertical_video && is_between_608p_and_1080p) {
sf->lpf_sf.min_lr_unit_size = RESTORATION_UNITSIZE_MAX >> 1;
sf->lpf_sf.max_lr_unit_size = RESTORATION_UNITSIZE_MAX >> 1;
}