summaryrefslogtreecommitdiff
path: root/vp9
AgeCommit message (Collapse)Author
2014-08-28Merge "Early termination in encoding partition search"Yunqing Wang
2014-08-28Merge "Removing unused debug code under WRITE_RECON_BUFFER."Dmitry Kovalev
2014-08-28Merge "Converting configure_skippable_frame() to is_skippable_frame()."Dmitry Kovalev
2014-08-28Early termination in encoding partition searchYunqing Wang
In the partition search, the encoder checks all possible partitionings in the superblock's partition search tree. This patch proposed a set of criteria for partition search early termination, which effectively decided whether or not to terminate the search in current branch based on the "skippable" result of the quantized transform coefficients. The "skippable" information was gathered during the partition mode search, and no overhead calculations were introduced. This patch gives significant encoding speed gains without sacrificing the quality. Borg test results: 1. At speed 1, stdhd set: psnr: +0.074%, ssim: +0.093%; derf set: psnr: -0.024%, ssim: +0.011%; 2. At speed 2, stdhd set: psnr: +0.033%, ssim: +0.100%; derf set: psnr: -0.062%, ssim: +0.003%; 3. At speed 3, stdhd set: psnr: +0.060%, ssim: +0.190%; derf set: psnr: -0.064%, ssim: -0.002%; 4. At speed 4, stdhd set: psnr: +0.070%, ssim: +0.143%; derf set: psnr: -0.104%, ssim: +0.039%; The speedup ranges from several percent to 60+%. speed1 speed2 speed3 speed4 (1080p, 100f): old_town_cross: 48.2% 23.9% 20.8% 16.5% park_joy: 11.4% 17.8% 29.4% 18.2% pedestrian_area: 10.7% 4.0% 4.2% 2.4% (720p, 200f): mobcal: 68.1% 36.3% 34.4% 17.7% parkrun: 15.8% 24.2% 37.1% 16.8% shields: 45.1% 32.8% 30.1% 9.6% (cif, 300f) bus: 3.7% 10.4% 14.0% 7.9% deadline: 13.6% 14.8% 12.6% 10.9% mobile: 5.3% 11.5% 14.7% 10.7% Change-Id: I246c38fb952ad762ce5e365711235b605f470a66
2014-08-28Merge "Updates vp9_pattern search to return integer sads"Deb Mukherjee
2014-08-28Merge "Replacing int_mv with MV."Dmitry Kovalev
2014-08-28Updates vp9_pattern search to return integer sadsDeb Mukherjee
Updates the vp9_pattern_search function to return integer one-away neighbors' sad values, for subsequent use in speeding up the sub-pel search. Also, removes code for the do_refine option which is not being used currently. Updates the integer and subpel functions to pass in a 5-element sad list for output or input. A new pruned sub-pel search algorithm is implemented that uses the sad returned from the integer pel search. But it is not deployed yet. Change-Id: Ifa9f5ad024b5b660570366d2bd900343e1891520
2014-08-27Merge "Re-work RD modeling based on inter frame prediction residual"Jingning Han
2014-08-27Merge "Re-use switchable rate value in handle_inter_mode"Jingning Han
2014-08-27Merge "Add an early termination check in handle_inter_mode"Jingning Han
2014-08-27Merge "Use max txfm size unit in rate-distortion cost modeling"Jingning Han
2014-08-27Re-work RD modeling based on inter frame prediction residualJingning Han
This commit re-work the operation flow related to prediction residual generation and the rate-distortion modeling. It saves one call for model_rd_for_sb. Change-Id: Icaf96c0ff09c903637ed5283448afe01d798195f
2014-08-27Re-use switchable rate value in handle_inter_modeJingning Han
The value of switchable rate has been stored in a local variable. This change skips the second call to vp9_get_switchable_rate() by reusing the local variable. Change-Id: Ib7d3fef7621cc4bde94c6d6e6b3a71f1fd4559f2
2014-08-27Add an early termination check in handle_inter_modeJingning Han
Check the mode and motion vector cost. If it is already above the existing best rate-distortion cost, skip the rest check process on this mode. Change-Id: Ie065cebdfda2a3be3be18b8e8b43dc29aaa8c179
2014-08-27Use max txfm size unit in rate-distortion cost modelingJingning Han
This commit makes the rate distortion modeling run in the unit of maximum transform block size. No compression/speed change observed. It is for the use of later fast forward transform purpose. Change-Id: Ibaaedb69c765e8d0c5d5012f0ec07f36fd9f68fd
2014-08-26Merge "add a new interp filter search strategy."Yaowu Xu
2014-08-26Replacing int_mv with MV.Dmitry Kovalev
Change-Id: I483a2fefc5f9ea4533dfd64448f3b6b426dd9eed
2014-08-26add a new interp filter search strategy.Yaowu Xu
This commit addes a new strategy to reduce the search for optimal interpolation filter type. The encoder counts and store how many each filter type is selected and used for each of the reference frames. A filter type that is rarely used for all three reference frames is masked out to avoid computation. The impact on compression is neglectible: -0.02% on derf +0.02% on stdhd Encoding time is seen to reduce by 2~3%. Change-Id: Ibafa92291b51185de40da513716222db4b230383
2014-08-25Merge "Removing non-executable code from encoder_encode()."Dmitry Kovalev
2014-08-25Merge "Removing tx_stepdown_count from VP9_COMP."Dmitry Kovalev
2014-08-25Merge "Adding oxcf temp variable."Dmitry Kovalev
2014-08-25Merge "Adding is_keyframe temp var."Dmitry Kovalev
2014-08-25Removing non-executable code from encoder_encode().Dmitry Kovalev
We don't output invisible frames with VP9. Change-Id: I7b874d3ac454c1b2966d5d7d72e12a864b49afae
2014-08-25Removing tx_stepdown_count from VP9_COMP.Dmitry Kovalev
The variable is never read. Change-Id: I94141c1667fa5d10604cd6f83c5f64df107dee94
2014-08-25Merge "[spatial svc]Multiple frame context feature"Minghai Shang
2014-08-25Merge "Replacing int_mv with MV inside the first pass code."Dmitry Kovalev
2014-08-25Merge "Cleaning up is_background()."Dmitry Kovalev
2014-08-25Merge "Removing source field from VP9_COMP."Dmitry Kovalev
2014-08-25Merge "Removing is_best_mode() function."Dmitry Kovalev
2014-08-25Cleaning up is_background().Dmitry Kovalev
Change-Id: I2b9609dd22bacbf26e669f70bf155613b0316eb3
2014-08-25[spatial svc]Multiple frame context featureMinghai Shang
We can use one frame context for each layer so that we don't have to reset the probs every frame. But we can't use prev_mi since we may drop enhancement layers. So we have to generate a non vp9 compatible bitstream and modify it in the player. 1. We need to code all frames as invisible frame to let prev_mi not to be used. But in the bitstream we need to code the show_frame flag to 1 so that the publisher will know it's supposed to be a visible frame. 2. In the player we need to change the show_frame flag to 0 for all frames. Then add an one byte frame into the super frame to tell the decoder which layer we want to show. Change-Id: I75b7304cf31f0ab952f043e33c034495e88f01f3
2014-08-25Merge "vp9_calc_ssim: remove unused parm to resolve warning"Jim Bankoski
2014-08-25Merge "vp9_denoiser_update_frame_stats: unused parm fixed"Jim Bankoski
2014-08-25Merge "vp9_postproc.c: unused parameter warning resolved"Jim Bankoski
2014-08-22Removing source field from VP9_COMP.Dmitry Kovalev
Using local variables instead. Change-Id: I68737f7e392b81492ffd3ef2c2ff9afbf55fb097
2014-08-22Replacing int_mv with MV inside the first pass code.Dmitry Kovalev
Change-Id: Ia3be6b5a18e1ff6cc5c5f4d37e4a5d0972388308
2014-08-22Choosing GOOD mode by default.Dmitry Kovalev
This patch fixes slow first pass problem. Mode could only be determined from the deadline value during frame encode call. Unfortunately, we use mode value before any encode calls during the first pass encoding (see set_speed_features() logic). The mode for the first pass must be different from BEST to make first pass fast. Change-Id: I562a7d32004ff631695d91c09a44d8a9076fd6b5
2014-08-22Merge "Move mv cost table to VP9_COMP"Jingning Han
2014-08-22Merge "Removing last_source field from VP9_COMP."Dmitry Kovalev
2014-08-22Merge "Replacing 'struct vpx_fixed_buf' with 'vpx_fixed_buf_t’."Dmitry Kovalev
2014-08-22vp9_calc_ssim: remove unused parm to resolve warningJim Bankoski
Change-Id: I2b4f4e929495837817010eae12aa6225899afaff
2014-08-22vp9_denoiser_update_frame_stats: unused parm fixedJim Bankoski
Change-Id: Ic39cc0deafb3ed509434d3d9953b99713de7394a
2014-08-22vp9_postproc.c: unused parameter warning resolvedJim Bankoski
Change-Id: I6d77a7c775c0482fd1f9bb03ea6f336dd2973fa0
2014-08-22vp9_cx_iface.c: spatial_svc resolve missing initializer warningJim Bankoski
Change-Id: I3f56a4d64828a74c370a5b3247a5f00e554a922c
2014-08-22Replacing 'struct vpx_fixed_buf' with 'vpx_fixed_buf_t’.Dmitry Kovalev
Change-Id: Ibbbc5b39429d4b753f0a966b9d84d1d7bf823650
2014-08-22Move mv cost table to VP9_COMPJingning Han
The mv cost table set is maintained at frame level, hence moved to VP9_COMP. Change-Id: Icb3d0185d47443590bd11357de729aa4ba5c5e5e
2014-08-21Removing last_source field from VP9_COMP.Dmitry Kovalev
Change-Id: I5d7cb0151d8495e5ecd073a98b73da65cc6e7274
2014-08-21Adding is_keyframe temp var.Dmitry Kovalev
Change-Id: I5fec955c8b8f5a9b5027a0f92afb22d22770d84a
2014-08-21Converting configure_skippable_frame() to is_skippable_frame().Dmitry Kovalev
Change-Id: I9cc2b4c66a84386cc8a16cfe4545722876915126
2014-08-21Merge "Fix bug 837 (Part 2): Handle increase in frame width"Adrian Grange