summaryrefslogtreecommitdiff
path: root/vp9/encoder
diff options
context:
space:
mode:
authorMarco Paniconi <marpan@google.com>2020-11-11 23:11:16 -0800
committerMarco Paniconi <marpan@google.com>2020-11-12 11:31:42 -0800
commit7beafefd16b9d41eaf0bfc09e6bbb843ada9e952 (patch)
treeead90fb4fcd263bcbae8088b166dfc6fd5cd7ece /vp9/encoder
parent94384b5c685ad3baac8989f19ee587eb72093a7f (diff)
downloadlibvpx-7beafefd16b9d41eaf0bfc09e6bbb843ada9e952.tar
libvpx-7beafefd16b9d41eaf0bfc09e6bbb843ada9e952.tar.gz
libvpx-7beafefd16b9d41eaf0bfc09e6bbb843ada9e952.tar.bz2
libvpx-7beafefd16b9d41eaf0bfc09e6bbb843ada9e952.zip
vp9: Allow for disabling loopfilter per spatial layer
For SVC: add parameter to the control SET_SVC_PARAMS to allow for disabling the loopfilter per spatial layer. Note this svc setting will override the setting via VP9E_SET_DISABLE_LOOPFILTER (which should only be used for non-SVC). Add unittest to handle both SVC (spatial or temporal layers) and non-SVC (single layer) case. Change-Id: I4092f01668bae42aac724a6df5b6f6a604337448
Diffstat (limited to 'vp9/encoder')
-rw-r--r--vp9/encoder/vp9_svc_layercontext.c2
-rw-r--r--vp9/encoder/vp9_svc_layercontext.h1
2 files changed, 3 insertions, 0 deletions
diff --git a/vp9/encoder/vp9_svc_layercontext.c b/vp9/encoder/vp9_svc_layercontext.c
index d85b3632c..9c75d7726 100644
--- a/vp9/encoder/vp9_svc_layercontext.c
+++ b/vp9/encoder/vp9_svc_layercontext.c
@@ -357,6 +357,8 @@ void vp9_restore_layer_context(VP9_COMP *const cpi) {
if (is_one_pass_cbr_svc(cpi) && lc->speed > 0) {
cpi->oxcf.speed = lc->speed;
}
+ if (lc->loopfilter_ctrl >= 0 || lc->loopfilter_ctrl < 3)
+ cpi->loopfilter_ctrl = lc->loopfilter_ctrl;
// Reset the frames_since_key and frames_to_key counters to their values
// before the layer restore. Keep these defined for the stream (not layer).
if (cpi->svc.number_temporal_layers > 1 ||
diff --git a/vp9/encoder/vp9_svc_layercontext.h b/vp9/encoder/vp9_svc_layercontext.h
index e7d9712aa..b12e7e01a 100644
--- a/vp9/encoder/vp9_svc_layercontext.h
+++ b/vp9/encoder/vp9_svc_layercontext.h
@@ -71,6 +71,7 @@ typedef struct {
int actual_num_seg2_blocks;
int counter_encode_maxq_scene_change;
uint8_t speed;
+ int loopfilter_ctrl;
} LAYER_CONTEXT;
typedef struct SVC {