summaryrefslogtreecommitdiff
path: root/vp9/encoder/vp9_encoder.c
diff options
context:
space:
mode:
authorMarco <marpan@google.com>2017-03-16 15:55:33 -0700
committerMarco <marpan@google.com>2017-03-20 12:42:26 -0700
commit06c8713e89514ccbed2d68e847adfd7830b53881 (patch)
tree1c82709b9a673f4374c2e3eb96da7b514cf761cd /vp9/encoder/vp9_encoder.c
parent36533e8c5a00b0ae430ba2b102bedfd587e67db1 (diff)
downloadlibvpx-06c8713e89514ccbed2d68e847adfd7830b53881.tar
libvpx-06c8713e89514ccbed2d68e847adfd7830b53881.tar.gz
libvpx-06c8713e89514ccbed2d68e847adfd7830b53881.tar.bz2
libvpx-06c8713e89514ccbed2d68e847adfd7830b53881.zip
vp9: Use sb content measure to bias against golden.
For each superblock, keep track of how far from current frame was the last significant content change, and use that (along with GF distance), to turnoff GF search in non-rd pickmode. Only enabled for speed >= 8. avgPNSR on RTC/RTC_derf down by ~0.9/1.2. Speedup on mac: ~3-5%. Speedup on arm: 3.6% for VGA and 4.4% for HD. Change-Id: Ic3f3d6a2af650aca6ba0064d2b1db8d48c035ac7
Diffstat (limited to 'vp9/encoder/vp9_encoder.c')
-rw-r--r--vp9/encoder/vp9_encoder.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/vp9/encoder/vp9_encoder.c b/vp9/encoder/vp9_encoder.c
index 64d6985b5..aba2c115a 100644
--- a/vp9/encoder/vp9_encoder.c
+++ b/vp9/encoder/vp9_encoder.c
@@ -466,6 +466,9 @@ static void dealloc_compressor_data(VP9_COMP *cpi) {
vpx_free(cpi->content_state_sb);
cpi->content_state_sb = NULL;
+ vpx_free(cpi->content_state_sb_fd);
+ cpi->content_state_sb_fd = NULL;
+
vp9_cyclic_refresh_free(cpi->cyclic_refresh);
cpi->cyclic_refresh = NULL;
@@ -3141,10 +3144,14 @@ static void encode_without_recode_loop(VP9_COMP *cpi, size_t *size,
cpi->svc.current_superframe < 1)) ||
cpi->resize_pending || cpi->resize_state || cpi->external_resize) {
compute_source_sad = 0;
- if (cpi->content_state_sb != NULL)
+ if (cpi->content_state_sb != NULL) {
memset(cpi->content_state_sb, 0, (cm->mi_stride >> 3) *
((cm->mi_rows >> 3) + 1) *
sizeof(*cpi->content_state_sb));
+ memset(cpi->content_state_sb_fd, 0,
+ (cm->mi_stride >> 3) * ((cm->mi_rows >> 3) + 1) *
+ sizeof(*cpi->content_state_sb_fd));
+ }
}
// Avoid scaling last_source unless its needed.