vpx/vp9/encoder
paulwilkins a73cee2870 New content type to improve grain retention.
For new VP9 only content type adjust  the rate distortion and ARF
filter based on the relative spatial variance of the source and
reconstruction.

In regards to the RD loop the method favors modes where the
reconstruction variance is similar to the source variance. However it
is currently only applied to regions where the source variance is quite
low.

For very low variance blocks it applies a further bias against intra
coding and large prediction block sizes (the later in particular limit
the usefulness of the loop filter).

The final part of this change is to lower the strength of the ARF
filter for blocks where the source has very low spatial variance, to
encourage some low amplitude texture or noise to pass through
the filter.

This change improves the retention of film grain and fine noise /
texture in spatially flat regions, but as expected causes a significant
drop in PSNR on many clips. This is to be expected because similar
but misaligned noise or texture will give a lower PSNR than a flat
noise free reconstruction. However, it is worth noting that most clips
show a strong gain in FAST SSIM.

The features are enabled on the vpxenc command line by setting
--tune-content=film.

VPX_ENCODER_ABI_VERSION bumped for this change and cvbr.

Change-Id: I26a4e4edfa3dc5cacead82fa701fe7a9118ccd0a
2017-11-13 16:57:23 +00:00
..
arm/neon Rename some inline functions in NEON scaling 2017-10-09 11:23:00 -07:00
mips/msa vp9 temporal filter: sse4 implementation 2017-04-26 22:03:05 -07:00
x86 vpx: [x86] add vp9_block_error_fp_avx2() 2017-11-09 05:02:31 -08:00
vp9_alt_ref_aq.c vp9_alt_ref_aq: correct vp9_alt_ref_aq_create proto 2017-06-21 19:00:04 -07:00
vp9_alt_ref_aq.h vp9_alt_ref_aq: correct vp9_alt_ref_aq_create proto 2017-06-21 19:00:04 -07:00
vp9_aq_360.c Add cpi parameter for forcing segmentation update 2016-08-08 13:20:42 -07:00
vp9_aq_360.h vp9/encoder: apply clang-format 2016-08-02 16:47:11 -07:00
vp9_aq_complexity.c Add cpi parameter for forcing segmentation update 2016-08-08 13:20:42 -07:00
vp9_aq_complexity.h vp9/encoder: apply clang-format 2016-08-02 16:47:11 -07:00
vp9_aq_cyclicrefresh.c vp9: Adjustments for aq-mode and pickmode for speed >= 8. 2017-06-21 16:01:24 -07:00
vp9_aq_cyclicrefresh.h vp9: Adjustments to cyclic refresh for high motion. 2017-05-21 22:21:44 -07:00
vp9_aq_variance.c Casts to remove some warnings. 2016-09-01 16:10:12 +01:00
vp9_aq_variance.h vp9/encoder: apply clang-format 2016-08-02 16:47:11 -07:00
vp9_bitstream.c Merge "Row based multi-threading of encoding stage" 2017-02-15 00:54:10 +00:00
vp9_bitstream.h Changes to facilitate multi-threading of encoding stage 2017-02-02 14:47:13 +05:30
vp9_block.h vp9: Modification to adapt the ARF usage for 1 pass vbr 2017-09-28 09:10:30 -07:00
vp9_blockiness.c vp9/encoder: apply clang-format 2016-08-02 16:47:11 -07:00
vp9_context_tree.c vp9/encoder: apply clang-format 2016-08-02 16:47:11 -07:00
vp9_context_tree.h vp9: Fix denoising condition when pickmode partition is used. 2017-07-30 23:16:38 -07:00
vp9_cost.c vp9/encoder: apply clang-format 2016-08-02 16:47:11 -07:00
vp9_cost.h vp9/encoder: apply clang-format 2016-08-02 16:47:11 -07:00
vp9_dct.c Bug fix: fadst4() in vp9/encoder/vp9_dct.c 2017-09-20 12:27:29 -07:00
vp9_denoiser.c Remove get_filter_base() and get_filter_offset() in convolve 2017-09-05 15:22:36 -07:00
vp9_denoiser.h vp9 SVC: Fix the denoiser frame buffer management. 2017-08-10 16:56:46 -07:00
vp9_encodeframe.c New content type to improve grain retention. 2017-11-13 16:57:23 +00:00
vp9_encodeframe.h vp9: Incorporate source sum_diff into non-rd partition thresholds. 2017-02-21 17:22:11 -08:00
vp9_encodemb.c Remove skip_block from quantize 2017-08-21 09:49:04 -07:00
vp9_encodemb.h vp9/encoder: apply clang-format 2016-08-02 16:47:11 -07:00
vp9_encodemv.c vp9_bitstream: Parameterize max_mv_magnitude 2016-10-12 12:50:17 -07:00
vp9_encodemv.h vp9_bitstream: Parameterize max_mv_magnitude 2016-10-12 12:50:17 -07:00
vp9_encoder.c Merge "CVBR command line option." 2017-11-13 16:32:39 +00:00
vp9_encoder.h CVBR command line option. 2017-11-08 10:41:04 +00:00
vp9_ethread.c VP9 level targeting: add a new AUTO mode 2017-09-14 16:20:29 +00:00
vp9_ethread.h Row based multi-threading of encoding stage 2017-02-15 00:49:34 +00:00
vp9_extend.c vp9/encoder: apply clang-format 2016-08-02 16:47:11 -07:00
vp9_extend.h vp9/encoder: apply clang-format 2016-08-02 16:47:11 -07:00
vp9_firstpass.c Small parameter clean up. 2017-11-13 16:53:57 +00:00
vp9_firstpass.h Changes to modified error. 2017-05-18 12:56:02 +01:00
vp9_frame_scale.c Add 4 to 3 scaling SSSE3 optimization 2017-10-16 15:42:42 -07:00
vp9_job_queue.h Multi-threading of first pass stats collection 2017-01-24 15:48:02 -08:00
vp9_lookahead.c vp9: normalize vpx_enc_frame_flags_t usage 2016-08-04 23:37:49 -07:00
vp9_lookahead.h vp9: normalize vpx_enc_frame_flags_t usage 2016-08-04 23:37:49 -07:00
vp9_mbgraph.c Fix for out of range motion vector bug in sub-pel motion estimation 2017-04-03 16:16:49 +00:00
vp9_mbgraph.h vp9/encoder: apply clang-format 2016-08-02 16:47:11 -07:00
vp9_mcomp.c remove vp9_full_sad_search 2017-07-10 11:20:35 -07:00
vp9_mcomp.h VP9 motion vector unit test 2017-04-06 00:50:56 +00:00
vp9_multi_thread.c Make the row based multi-threaded encoder deterministic 2017-04-24 16:28:27 -07:00
vp9_multi_thread.h Multi-threading of first pass stats collection 2017-01-24 15:48:02 -08:00
vp9_noise_estimate.c vp9: Adjust noise estimation for 360p. 2017-07-31 17:12:58 -07:00
vp9_noise_estimate.h vp9/encoder: apply clang-format 2016-08-02 16:47:11 -07:00
vp9_picklpf.c vp9: 1pass CBR: modify condition for reducing loop filter. 2017-02-22 15:09:45 -08:00
vp9_picklpf.h vp9/encoder: apply clang-format 2016-08-02 16:47:11 -07:00
vp9_pickmode.c Nonrd_pickmode: avoid computing UV cost when early_term is set. 2017-11-06 10:22:14 -08:00
vp9_pickmode.h vp9/encoder: apply clang-format 2016-08-02 16:47:11 -07:00
vp9_quantize.c quantize: capture skip block early 2017-08-22 12:10:55 -07:00
vp9_quantize.h Migrate quantization functions from vp9/ to vpx_dsp/ 2015-07-17 16:38:14 -07:00
vp9_ratectrl.c CVBR command line option. 2017-11-08 10:41:04 +00:00
vp9_ratectrl.h CVBR command line option. 2017-11-08 10:41:04 +00:00
vp9_rd.c Fix bug in intra mode rd penalty. 2017-09-08 15:10:53 +01:00
vp9_rd.h New content type to improve grain retention. 2017-11-13 16:57:23 +00:00
vp9_rdopt.c New content type to improve grain retention. 2017-11-13 16:57:23 +00:00
vp9_rdopt.h vp9/encoder: apply clang-format 2016-08-02 16:47:11 -07:00
vp9_resize.c vp9/encoder: apply clang-format 2016-08-02 16:47:11 -07:00
vp9_resize.h vp9/encoder: apply clang-format 2016-08-02 16:47:11 -07:00
vp9_segmentation.c vp9/encoder: apply clang-format 2016-08-02 16:47:11 -07:00
vp9_segmentation.h vp9/encoder: apply clang-format 2016-08-02 16:47:11 -07:00
vp9_skin_detection.c vp9: Removed unused skin detection function. 2017-07-18 14:52:04 -07:00
vp9_skin_detection.h vp9: Removed unused skin detection function. 2017-07-18 14:52:04 -07:00
vp9_speed_features.c Merge "CVBR command line option." 2017-11-13 16:32:39 +00:00
vp9_speed_features.h vp9: SVC feature to use partition from lower resolution. 2017-11-09 14:16:50 -08:00
vp9_subexp.c vp9/encoder: apply clang-format 2016-08-02 16:47:11 -07:00
vp9_subexp.h vp9/encoder: apply clang-format 2016-08-02 16:47:11 -07:00
vp9_svc_layercontext.c vp9: SVC feature to use partition from lower resolution. 2017-11-09 14:16:50 -08:00
vp9_svc_layercontext.h vp9: SVC feature to use partition from lower resolution. 2017-11-09 14:16:50 -08:00
vp9_temporal_filter.c New content type to improve grain retention. 2017-11-13 16:57:23 +00:00
vp9_temporal_filter.h Row based multi-threading of ARNR filtering stage 2017-02-07 14:03:19 +05:30
vp9_tokenize.c Narrow cat6_high_cost tables to uint16_t 2017-03-03 23:09:12 +00:00
vp9_tokenize.h Drop vp9_get_token_extracost 2017-03-17 16:53:09 -07:00
vp9_treewriter.c vpx_dsp/prob.h: vp9_ -> vpx_ 2015-07-20 18:13:04 -07:00
vp9_treewriter.h vp9/encoder: apply clang-format 2016-08-02 16:47:11 -07:00