summaryrefslogtreecommitdiff
path: root/vp9/encoder
AgeCommit message (Collapse)Author
2014-10-10Revert "Add adaptation option for VBR."Alex Converse
This reverts commit 869d4ca51957614dcf5093ebb9e322cc8a8405ca. This breaks the build via conflict with e18edd5eb651f9b7563cbd829744807402bfe0d8. Change-Id: If544b99e367a449452834eb8cce600f58c34ec0d
2014-10-10Merge "Add adaptation option for VBR."Paul Wilkins
2014-10-10Merge "vp9/choose_partitioning: add missing clear_system_state"Yaowu Xu
2014-10-10vp9/choose_partitioning: add missing clear_system_stateJames Zern
set_vt_partitioning does double math Change-Id: I8e9d73d5c89b937a5326abf04164d24d9d88c5ef
2014-10-10Add adaptation option for VBR.Paul Wilkins
Allow min and maxQ to creep when the undershoot or overshoot exceeds thresholds controlled by the command line under_shoot_pct and over_shoot_pct values. Default is 100%,100% which ~disables adaptation. Derf results for example undershoot% / overshoot%:- Head:- Mean abs (%rate error) = 14.4% This check in:- 25%/25% - Mean abs (%rate error) = 6.7% PSNR hit -1% SSIM -0.1% 5% / 5% - Mean abs (%rate error) = 2.2% PSNR hit -3.3% SSIM - 1.1% Most of the remaining error and most of the quality hit is at extreme data rates. The adaptation code still has an exception for material that is in effect static so that we don't over adjust and over spend on YT slide show type content. Change-Id: If25a2449a415449c150acff23df713e9598d64c9
2014-10-10vp9_avg_intrin_sse2: correct intrinsics includeJames Zern
immintrin.h -> emmintrin.h fixes build where newer intrinsics are unavailable Change-Id: I79311b39bfa782fc2abeb45884ecb417050cb9f8
2014-10-09Merge "Rename highbitdepth functions to use highbd prefix"Deb Mukherjee
2014-10-09Rename highbitdepth functions to use highbd prefixDeb Mukherjee
Uses highbd_ prefix convention consistently. Change-Id: I58f7f799a7ff8e32701bcd71c955bcf1cdd4581e
2014-10-09Merge "Remove sub8x8 block index from rd_pick_partition argument"Jingning Han
2014-10-09Merge "Subpel search cleanups and enhancements"Deb Mukherjee
2014-10-09Merge "Move the high freq coeff check outside store_coding_context"Alex Converse
2014-10-09Remove sub8x8 block index from rd_pick_partition argumentJingning Han
This parameter is deprecated. Its function is replaced with other explicit condition check. Change-Id: I61337e350ba8ca9eb50382db8b4d4acbf45cb7eb
2014-10-09Merge "Fix src frame buffer copy and extend"Yaowu Xu
2014-10-09set_vt_partitioning: fix type conversion warningJames Zern
double -> int64 + make threshold_multiplier an int Change-Id: I6d3607fdf13d670f57c9d9b04a80acb2be1346a0
2014-10-08Subpel search cleanups and enhancementsDeb Mukherjee
- Some fixes to surface fit. - Returns variance function as cost rather than sad in the pattern search and diamond search functions. Only vp9_pattern_search_sad function used in bigdia search uses sad as integer 1-away costs. - Deploys SUBPEL_TREE_PRUNED_MORE for speed 4+. Results: derf [Speed 3]: About +0.036% in coding efficiency without any discernible speed loss. derf [Speed 4]: About 2-3% faster at -0.199% loss in coding efficiency. derf [Speed 5]: About 3-4% faster at -0.149% loss in coding efficiency. Change-Id: I8462f94f6adb46966ca964f2bd0400977357fd63
2014-10-08Merge "Allow mode search breakout at very low prediction errors"Yunqing Wang
2014-10-08Allow mode search breakout at very low prediction errorsYunqing Wang
In model_rd_for_sb function, the spatial domain SSE and variance are checked to see if transform coefficients are quantized to 0. Besides that, this patch adds another set of thresholds that are much more strict. These thresholds are used to conduct a partition block level check to measure if all its TX blocks are skippable for YUV planes. If it is true, x->skip is set for this partition block, and thus its mode search is terminated. This speeds up the encoding at very low prediction error case, such as screen sharing application. This patch covers what rd_encode_breakout_test() does, so that function is removed. Borg test at speed 3 shows: For stdhd set, psnr: +0.008%, ssim: +0.014%; For derf set, psnr: +0.018%, ssim: +0.025%. No noticeable speed change. Change-Id: I4e5f15cf10016a282a68e35175ff854b28195944
2014-10-08Move the high freq coeff check outside store_coding_contextJingning Han
This fixes valgrind message issue 870. Change-Id: Ibbc2481923a2995029ab05de30c9e8a6e9f0f9a8
2014-10-08Use local variable in vp9_rd_pick_inter_mode_sbJingning Han
Change-Id: Ie35a965a6b8de536ccaf61ff61498620d22db205
2014-10-08Fix src frame buffer copy and extendYaowu Xu
For input source with size that is not multiple of 8, the size is rounded to 8 and saved in width or height, the original source sizes are saved in crop_width and crop_height. This commit corrects the computation of bottom and right extension amounts to use the orignal sizes, hence crop_width and crop_height. In addition, this commit also adds the missed initialization for uv_crop_width and uv_crop_height. This addresses issue #834 Change-Id: I084543ca7645a4964b88f7cf8ff668f517d3a39b
2014-10-08Merge "experimental : partition using 1/8 x 1/8 image"Jim Bankoski
2014-10-08Merge "Force better lower quantizer keyframe in case of high quantizer."Jim Bankoski
2014-10-08Merge "Improve two pass VBR accuracy."Paul Wilkins
2014-10-08Merge "Two pass rc changes."Paul Wilkins
2014-10-07experimental : partition using 1/8 x 1/8 imageJim Bankoski
The concept: There's too much noise in source pixels for variance and at low bitrate the reconstructed looks nothing like the source so we have problems getting good partitionings with either. This skirts the issue by using a box blur scaled down version for variance calculations. To compare against source_var_ moved keyframe to be rd based like source_var. Change-Id: Ie3babdbfadae324b7b5a76bea192893af27f0624
2014-10-07Force better lower quantizer keyframe in case of high quantizer.Jim Bankoski
Change-Id: Ie69a164bc166b6a8819777038d65a7d9f9c3361f
2014-10-07Merge "Replace mi_width_log2() with mi_width_log2_lookup table"Jingning Han
2014-10-07Merge "Take out repeated block width/height lookup functions"Jingning Han
2014-10-07Merge "Fix skip_txfm issue in rdopt code"Yunqing Wang
2014-10-07Merge "Move inter filter defs to vp9_filter.h"Jingning Han
2014-10-07Merge "Reduce the scope of the header file used in vp9_context_tree.h"Jingning Han
2014-10-07Merge "Remove redundant header file from vp9_encoder.h"Jingning Han
2014-10-07Fix skip_txfm issue in rdopt codeYunqing Wang
Fixed an encoder crash. Set skip_txfm to 0 for cases that skip_txfm isn't calculated. Put memcpy of skip_txfm at right place. Change-Id: Ib3b6afc1b251a85b2a853c8138fb3393f48cfef6
2014-10-07Replace mi_width_log2() with mi_width_log2_lookup tableJingning Han
Change-Id: If0ea98aa139d14d40cd924114e18396aff36b5a5
2014-10-07Take out repeated block width/height lookup functionsJingning Han
The functions b_width_log2 and b_height_log2 only do direct table fetch. This commit unifies such use cases by using the table directly and removes these functions. Change-Id: I3103fc6ba959c1182886a2799d21b8b77c8a7b6b
2014-10-07Move inter filter defs to vp9_filter.hJingning Han
Add comments on the use case of these definitions. Further reduce the scope of header file in vp9_context_tree.h. Change-Id: Ic4a7638e838d0ac441b64abfc56e57354c059d75
2014-10-07Merge "Resolves some static analysis / undefined warnings"Deb Mukherjee
2014-10-07Resolves some static analysis / undefined warningsDeb Mukherjee
Also fixes a case of distortion becoming negative and messing up the RDCOST computation. Change-Id: Id345af9e8dfff31ade622be5756e51f2cdface53
2014-10-07Reduce the scope of the header file used in vp9_context_tree.hJingning Han
Change-Id: I264ee35044a5973c7725daba7af870968353a3c1
2014-10-07Merge "Add SSE2 code and unit test for VP9 denoiser."JackyChen
2014-10-07Remove redundant header file from vp9_encoder.hJingning Han
Change-Id: Ia212390cf8d36db5436bb0f0e1b696f70066341a
2014-10-06Fix eobs buffer pointer mis-useJingning Han
This commit fixes a buffer pointer mis-use in store_coding_context. The compression performance for stdhd set of speed 3 is improved by 0.097%. It fixes issue 869. Change-Id: Idc59e22035eaf39f7133ca04174894374d647ff7
2014-10-06Add SSE2 code and unit test for VP9 denoiser.JackyChen
This SSE2 is based on VP8 denoiser's SSE2 code. In VP8, there are only 16x16 blocks in denoiser, while in VP9, there are 13 different block sizes. By adding this SSE2 code, the improvement of encoder speed is around 20%(using C code vs using SSE2 code), vary for different clips. The unit test for VP9 denoiser is to confirm that the SSE2 code is bit-exact with the C code. The unit test covers all block size. Change-Id: Ic8d8ac26db4ea40a5f146b5678a065af07eaaa3d
2014-10-06Merge "Fix an IOC issue in vp9_rd_pick_inter_mode_sb"Jingning Han
2014-10-06Merge "Properly initialize segmentID in nonrd coding path"Yaowu Xu
2014-10-06Improve two pass VBR accuracy.Paul Wilkins
Adjustments to the GF interval choice and minimum boost. Adjustment to the calculation of 2 pass worst q. Compared to 09/29 head there is metrics hit on derf of (-0.123%,-0.191%) Compared to the September 29 head and a baseline on September 18 baseline the accuracy of the VBR rate control measured on the derf set is as follows:- Mean error % / Mean abs(error %) Sept 18 baseline (-7.0% / 14.76%) Sept 29 head (-15.7%, 19.8%) This check in (-1.5% / 14.4%) The mean undershoot is reduced slightly but the worst case overshoot on e.g. harbour/highway is increased. This will be addressed in a later patch. Change-Id: Iffd9b0ab7432a131c98fbaaa82d1e5b40be72b58
2014-10-05Fix an IOC issue in vp9_rd_pick_inter_mode_sbJingning Han
It is possible that the GOLDEN reference frame is not avaiable, in which setting the predicted mv will be associated with a residual value of INT_MAX. This commit checks this condition before left shift and comparison with that of ALTREF frame, to avoid overflow issue. Change-Id: Ib98c3149dbdd016f2fe5beaafb13f67d469dd07c
2014-10-03Merge "Fix indent in encode_rd_sb_row"Jingning Han
2014-10-03Merge "Rework partition search skip scheme"Jingning Han
2014-10-03Properly initialize segmentID in nonrd coding pathYaowu Xu
This commit adds proper initialization of segment id for variance AQ mode in non-rd coding path. It fixes the enc/dec mismatch issue of rt=7 with --aq-mode=1, as reported in issue #816 Change-Id: I02fa41b96345bf2e66077d5ea553f85ba800f7bb