- 15 Aug, 2013 - 2 commits
-
-
Dmitry Kovalev authored
VP9_COMMON is the right place to segmentatation struct because it has global segmentation parameters, not something specific to macroblock processing. Change-Id: Ib9ada0c06c253996eb3b5f6cccf6a323fbbba708
-
Deb Mukherjee authored
Adds a speed feature to disable split partition search based on a given threshold on the source variance. A tighter threshold derived from the threshold provided is used to also disable horizontal and vertical partitions. Results on derfraw300: threshold = 16, psnr = -0.057%, speedup ~1% (football) threshold = 32, psnr = -0.150%, speedup ~4-5% (football) threshold = 64, psnr = -0.570%, speedup ~10-12% (football) Results on stdhdraw250: threshold = 32, psnr = -0.18%, speedup is somewhat more than derf because of a larger number of smoother blocks at higher resolution. Based on these results, a threshold of 32 is chosen for speed 1, and a threshold of 64 is chosen for speeds 2 and above. Change-Id: If08912fb6c67fd4242d12a0d094783a99f52f6c6
-
- 14 Aug, 2013 - 1 commit
-
-
Paul Wilkins authored
The macro block mode info context originally contained an entry for each 16x16 macroblock. In VP9 each entry refers to an 8x8 region not a macro block, so the naming is misleading. This first stage clean up changes the names of 3 entries in the structure to remove the mb_ prefix. TODO clean up the nomenclature more widely in respect of mbmi and bmi. Change-Id: Ia7305c6d0cb805dfe8cdc98dad21338f502e49c6
-
- 13 Aug, 2013 - 1 commit
-
-
Guillaume Martres authored
Don't do vertical or horizontal splits if subsize < min_partition_size, except for edge blocks where it makes sense. Change-Id: I479aa66ba1838d227b5de8312d46be184a8d6401
-
- 12 Aug, 2013 - 1 commit
-
-
Dmitry Kovalev authored
Adding set_skip_context() function used from both encoder and decoder. Change-Id: Ia22cfad3211a00a63eb294f64f857b78f4aa9b85
-
- 10 Aug, 2013 - 2 commits
-
-
Dmitry Kovalev authored
There will be another change set to rename BLOCK_SIZE_TYPE enum to BLOCK_SIZE. Change-Id: I8d1dfc873d6186fa5e554262f5169e929978085e
-
Guillaume Martres authored
It represents the minimum partition size, so don't split if bsize == min_partition_size . Change-Id: Id77c32d6afef7d2ddec0368eaae18fb13227d30e
-
- 09 Aug, 2013 - 2 commits
-
-
Dmitry Kovalev authored
Loop filter configuration doesn't belong to macroblock, so moving it from MACROBLOCKD to VP9_COMMON. Also moving the declaration of loopfilter struct from vp9_blockd.h to vp9_loopfilter.h. Change-Id: I4b3e34be9623b47cda35f9b1f9951f8c5b1d5d28
-
Scott LaVarnway authored
The set_offsets call is necessary inorder to set the mode_info_context ptr correctly. Change-Id: I644910cc5bacc50ee9cd78458843274ad8ee636d
-
- 08 Aug, 2013 - 2 commits
-
-
Adrian Grange authored
Moving this block of code into a function makes the code easier to read and change. Change-Id: If4ede570cce1eab1982b188c4d3e4fd3d4db236e
-
Adrian Grange authored
Different partitionings were not being evaluated against best_rd and there were unnecessary calls to RDCOST. This could have resulted in a non-optimal partioning being selected. I simplified the variables used to track the rate, distortion and RD values throughout the function. Change-Id: Ifa7085ee80d824e86791432a5bc6d8fea5a3e313
-
- 07 Aug, 2013 - 1 commit
-
-
Jingning Han authored
The low precision 32x32 fdct has all the intermediate steps within 16-bit depth, hence allowing faster SSE2 implementation, at the expense of larger round-trip error. It was used in the rate-distortion optimization search loop only. Using the low precision version, in replace of the high precision one, affects the compression performance by about 0.7% (derf, stdhd) at speed 0. For speed 1, it makes derf set down by only 0.017%. Change-Id: I4e7d18fac5bea5317b91c8e7dabae143bc6b5c8b
-
- 06 Aug, 2013 - 1 commit
-
-
Dmitry Kovalev authored
There was no benefit having this function. For example, inside read_switchable_filter_type switchable filter context was calculated twice. Change-Id: I79cd5bf95cbc0f6d8bf91a2e32289e01b18dcff1
-
- 05 Aug, 2013 - 5 commits
-
-
Dmitry Kovalev authored
Change-Id: I3aae21e88b876d53ecc955260479980ffe04ad8d
-
Deb Mukherjee authored
Adds a speed feature to skip all intra modes other than DC_PRED if the source variance is small. This feature is made part of speed 1 and up. Results on derf300: psnr -0.07%, speedup about 1-2% Also uses the source variance to fine-tune the early termination criteria when FLAG_EARLY_TERMINATE is on. This feature is made part of speed 2 and up. Results on derf300: psnr -0.52%, speedup about 5-7% Change-Id: I59e38aa836557cfa5405ae706fc64815cbfe4232
-
Dmitry Kovalev authored
This changeset allows to remove vp9_switchable_interp and vp9_switchable_interp_map arrays and make code much clear. Actually we still have to use these mapping but only inside read_interp_filter_type and write_interp_filter_type functions. Change-Id: I4026c6f8c4acefba6c81421b7bacbaa52cc45f50
-
Jim Bankoski authored
Cons bw/bh parms that should have been const. Additional formatting. Change-Id: Icd36a5c9dc17dadd7284315ac0d6fef1a565ca16
-
Dmitry Kovalev authored
Change-Id: I428c4d42212b757112e3acfe5b81314cfbb5fd6b
-
- 03 Aug, 2013 - 1 commit
-
-
Dmitry Kovalev authored
Consistent names with TX_SIZE, TX_MODE, and TX_MODE. Change-Id: I79592218bf5a40ace89197a34a06ee7de581ed8d
-
- 02 Aug, 2013 - 2 commits
-
-
Dmitry Kovalev authored
Using it instead of long unclear verbose check "mbmi->ref_frame[0] != INTRA_FRAME". Change-Id: I9c7b4b3797942fa962bf3ba7460fff3084beabe9
-
Dmitry Kovalev authored
Change-Id: I0e9329490828684a4fd46f540d89114cc68e8407
-
- 01 Aug, 2013 - 7 commits
-
-
Dmitry Kovalev authored
Change-Id: I73b59d7699a8e7e7acd3bf8041cb6c98ce9ba4bf
-
Dmitry Kovalev authored
Change-Id: I27471768980fc631916069f24bc7c482a5c9ca17
-
Deb Mukherjee authored
Adds a function to compute source variance for various sb_types to be used for pruning mode and partition searches. [The existing activity measure function is currently specialized for only 16x16 MBs and needs to be updated]. Change-Id: I22a41e6f1430184201487326fdbebb9b47e6fc24
-
Yunqing Wang authored
If the partition is out of partition size range, we don't need to process small partition information. Change-Id: Ice9bfbbdebe1f2ef79271a3aee17de0ed4608376
-
Yunqing Wang authored
use_min_partition_size and use_max_partition_size are not used currently, and could be added back if needed later. Change-Id: Ib22a9c06b064567a7c1d6d5445567ed77e0d3acc
-
Adrian Grange authored
Change-Id: Ib4e4b41094b54874ee34343dd77c0c131ceed9d2
-
Jingning Han authored
This commit removes redundant arguments passing in the function of rd_pick_reference_frame. This resolves the clang warnings about potential use of uninitialized values. Change-Id: Ic68f949a9f8fcd0a583786b0c75321104ea44739
-
- 31 Jul, 2013 - 1 commit
-
-
Jingning Han authored
Refactor the frame buffer referencing in choose_partition and make it consistent with other places. This means to prevent potential issues when we extend reference frame buffer. Change-Id: I5ff33ed5f671e1f4cc7049622212769a9b4578d9
-
- 30 Jul, 2013 - 1 commit
-
-
Adrian Grange authored
Removed unnecessary code lines, replaced switch with an if, fixed spelling errors and formatting. Change-Id: Ie48aa4604aa0ed48362ca359d792fb21b2ec1dc6
-
- 29 Jul, 2013 - 2 commits
-
-
Dmitry Kovalev authored
Change-Id: I10bf06e3a3d5271221ae6a42a36074d01d493039
-
Dmitry Kovalev authored
Change-Id: I6aa4191935aa93461a07c41b59fdae1eb5f5f107
-
- 26 Jul, 2013 - 1 commit
-
-
Paul Wilkins authored
Speed feature experiment to set an upper and lower partition size limit based on what has been seen in spatial neighbors. This seems to gives quite reasonable speed gains in local (10-15%) and when used with speed 0 the losses are small (0.25% derf, 0.35% stdhd). However, for now I am only enabling it on speed 1 as there may be clashes with the existing temporal partition selection in speed 2. Using a tighter min / max around the range derived from the neighbors increases speed further but at the cost of a bigger quality loss. However, I think this spatial method could be combined with data from either the last frame or a variance method (or both) to refine the range of minimum and maximum partition size. I.e. consider the min and max from spatial and temporal neighbors and the variance recommendation. Change-Id: I1b96bf8b84368d6aad0c7aa600fe141b4f07435f
-
- 25 Jul, 2013 - 4 commits
-
-
Yunqing Wang authored
This option exists in VP8, and it was rewritten in VP9 to support skipping on different partition levels. After prediction is done, we can check if the residuals in the partition block will be all quantized to 0. If this is true, the skip flag is set, and only prediction data are needed in reconstruction. Based on DCT's energy conservation property, the skipping check can be estimated in spatial domain. The prediction error is calculated and compared to a threshold. The threshold is determined by the dequant values, and also adjusted by partition sizes. To be precise, the DC and AC parts for Y, U, and V planes are checked to decide skipping or not. Test showed that 1. derf set: when static-thresh = 1, psnr loss is 0.666%; when static-thresh = 500, psnr loss is 1.162%; 2. stdhd set: when static-thresh = 1, psnr loss is 1.249%; when static-thresh = 500, psnr loss is 1.668%; For different clips, encoding speedup range is between several percentage and 20+% when static-thresh <= 500. For example, clip bitrate static-thresh psnr time akiyo(cif) 500 0 48.923 5.635s(50f) akiyo 500 500 48.863 4.402s(50f) parkjoy(1080p) 4000 0 30.380 77.54s(30f) parkjoy 4000 500 30.384 69.59s(30f) sunflower(1080p) 4000 0 44.461 85.2s(30f) sunflower 4000 500 44.418 78.1s(30f) Higher static-thresh values give larger speedup with larger quality loss. Change-Id: I857031ceb466ff314ab580ac5ec5d18542203c53
-
Dmitry Kovalev authored
Removing unused constants, macros, and function declarations. Using ROUND_POWER_OF_TWO macro, vp9_zero, vp9_copy where possible. Moving #include from *.h to *.c. Merging for loops for motion vectors. Change-Id: Ic3bf841764a2bb177128bb3a6d7aa8f68229cd13
-
Adrian Grange authored
Simplified the code that extracts and uses the motion vectors for the 4 sub-partitions in rd_pick_partition. Change-Id: Iaf698ef7ee3aef9edd59015e1ae065dd359b17d9
-
Yaowu Xu authored
The feature that uses small partition results as a measure to skip mode evaluation at larger partition requires the flags to be reset. The reset was missing in the code path that calls rd_use_partition(). Change-Id: Ia0a3a0aee1a862b6e2333d596808db7c48033d50
-
- 24 Jul, 2013 - 2 commits
-
-
Adrian Grange authored
Change-Id: Id4138293efeac4503b2e01ce7a6c150a5abeef77
-
Dmitry Kovalev authored
Counts are separate from frame context. We have several frame contexts but need only one copy of all counts. Change-Id: I5279b0321cb450bbea7049adaa9275306a7cef7d
-
- 23 Jul, 2013 - 1 commit
-
-
Adrian Grange authored
Several consecutive for loops executed over the same index range, so I rolled them into one. Change-Id: I5cfcc8c38c738478965768409cca9d09adf224e1
-