summaryrefslogtreecommitdiff
path: root/vp9/encoder/vp9_encodeframe.h
AgeCommit message (Collapse)Author
2019-03-18Compute count_ls in vp9_kmeansAngie Chiang
Change-Id: Id5a83554f2037b03a3a7d86f83e47cac311fbe1d
2019-03-14Let vp9_kmeans provide boundary for each groupAngie Chiang
boundary_ls[j] is the upper bound of data centered at ctr_ls[j] Add vp9_get_group_idx() for computing group_idx Change-Id: I3b1b488edf8acbfb63c469eeeba15f3e42b0a645
2019-03-13Add vp9_kmeans()Angie Chiang
Change-Id: I753920a65fb14a252617444f49feb40dc332d766
2018-09-15cosmetics: normalize include guardsJames Zern
use the recommended format [1] of: <PROJECT>_<PATH>_<FILE>_H_ [1] https://google.github.io/styleguide/cppguide.html#The__define_Guard "All header files should have #define guards to prevent multiple inclusion. The format of the symbol name should be <PROJECT>_<PATH>_<FILE>_H_." Change-Id: I2e8ab0b32fb23c30fa43cff5fec12d043c0d2037
2017-02-21vp9: Incorporate source sum_diff into non-rd partition thresholds.Marco
Increase the variance partition thresholds for superblocks that have low sum-diff (from source analysis prior to encoding frame). Use it for now only for speed >= 7 or for denoising on. Small change on metrics for rtc set: less than ~0.1 avgPNSR decrease on RTC set, for both speed 7 and 8. Change-Id: I38325046ebd5f371f51d6e91233d68ff73561af1
2017-02-15Row based multi-threading of encoding stageRanjit Kumar Tulabandu
(Yunqing Wang) This patch implements the row-based multi-threading within tiles in the encoding pass, and substantially speeds up the multi-threaded encoder in VP9. Speed tests at speed 1 on STDHD(using 4 tiles) set show that the average speedups of the encoding pass(second pass in the 2-pass encoding) is 7% while using 2 threads, 16% while using 4 threads, 85% while using 8 threads, and 116% while using 16 threads. Change-Id: I12e41dbc171951958af9e6d098efd6e2c82827de
2016-08-02vp9/encoder: apply clang-formatclang-format
Change-Id: I45d9fb4013f50766b24363a86365e8063e8954c2
2015-05-27Refactor set_vbp_thresholds.Marco
Break out the setting of the block variance split thresholds, since they are locally modified, e.g., based on local/segment qp. No change in performance. Change-Id: I0a3238e6dab05140657539fc4bd27ac5ff7a554e
2015-04-15Fix Tsan errorsYunqing Wang
This patch fixed 2 reported Tsan errors while running VP9 real-time encoder. Change-Id: Ib0278fe802852862c3ce87c4a500e544d7089f67
2015-04-02Set vbp thresholds for aq3 boosted blocksYunqing Wang
The vbp thresholds are set seperately for boosted/non-boosted superblocks according to their segment_id. This way we don't have to force the boosted blocks to split to 32x32. Speed 6 RTC set borg test result showed some quality gains. Overall PSNR: +0.199%; Avg PSNR: +0.245%; SSIM: +0.802%. No speed change was observed. Change-Id: I37c6643a3e2da59c4b7dc10ebe05abc8abf4026a
2015-02-10Move computation up to frame levelYaowu Xu
This is to avoid redo the same calculation repeatly, and also allow easier adjustments for further experiments. This commit shall have no effect on quality/compression. Change-Id: I4460acf5c808ff5518da18d21e002c5da58af857
2014-12-04vp9_ethread: the tile-based multi-threaded encoderYunqing Wang
Currently, VP9 supports column-tile encoding, which allows a frame to be encoded in multiple column tiles independently. The number of column tiles are set by encoder option "--tile-columns". This provides a way to encode a frame in parallel. Based on previous set of patches, this patch implemented the tile- based multi-threaded encoder. Each thread processes one or more tiles. Usage: For HD clips: --tile-columns=2 --threads=1/2/3/4 While using 4 threads, tests showed that the encoder achieved 2.3X - 2.5X speedup at good-quality speed 3, and 2X speedup at realtime speed 5. Change-Id: Ied987f8f2618b1283a8643ad255e88341733c9d4
2014-06-30Decide the partitioning threshold from the variance histogramYunqing Wang
Before encoding a frame, calculate and store each 16x16 block's variance of source difference between last and current frame. Find partitioning threshold T for the frame from its variance histogram, and then use T to make partition decisions. Comparing with fixed 16x16 partitioning, rtc set test showed an overall psnr gain of 3.242%, and ssim gain of 3.751%. The best psnr gain is 8.653%. The overall encoding speed didn't change much. It got faster for some clips(for example, 12% speedup for vidyo1), and a little slower for others. Also, a minor modification was made in datarate unit test. Change-Id: Ie290743aa3814e83607b93831b667a2a49d0932c
2014-05-19Hiding struct diff in *.c file.Dmitry Kovalev
Change-Id: Ia0dc05e530428af9ab5aa57e24f1115b0b4765d3
2014-04-08Use source frame difference to make partition decisionYunqing Wang
Calculate the difference variance between last source frame and current source frame. The variance is calculated at 16x16 block level. The variances are compared to several thresholds to decide final partition sizes. An adaptive strategy is implemented to decide using SOURCE_VAR_BASED_PARTITION or FIXED_PARTITION based on motions in the video. The switching test is done once every search_type_check_frequency frames. The selection of source_var_thresh needs to be investigated further later. RTC set Borg test showed 0.424% overall psnr gain, and 0.357% ssim gain. For clips with large enough static area, the encoding speedup is around 2% to 15%. Change-Id: Id7d268f1d8cbca7fb8026aa4a53b3c77459dc156
2014-03-12Moving declaration of vp9_encode_frame() to vp9_encodeframe.h.Dmitry Kovalev
Change-Id: I14adfd32622152abdc22c16429db38f6724628a4
2014-01-23vp9/encoder: add extern "C" to headersJames Zern
Change-Id: I4f51ce859a97bf1b8fd2b37ac585b7c643232b69
2013-10-01Moving get_token_alloc function from common to the encoder.Dmitry Kovalev
Also renaming mb_row -> mi_row, mb_col -> mi_col arguments and calculate mb_rows/mb_cols values from mi_rows/mi_cols. Change-Id: I6919a279f560648e23bc9a12f507d17c21ffd5d7
2013-06-26Remove empty function vp9_build_block_offsetsJingning Han
This function is empty, hence is removed. Change-Id: Ia9d01710806bffe0398a6dc9405f8a5a81b27d74
2013-04-25Remove BLOCK structureJohn Koleszar
All members can be referenced from their per-plane counterparts, and removes assumptions about 24 blocks per macroblock. Change-Id: I593fb0715e74cd84b48facd1c9b18c3ae1185d4b
2013-04-23Remove coeff from BLOCKJohn Koleszar
Lookup the data per-plane from the MACROBLOCK struct. Change-Id: I9253c4d3cf886aa9ab4aeab23a2156bfcf994ede
2013-02-21Code cleanup.Dmitry Kovalev
Removing redundant 'extern' keywords. Moving VP9DX_BOOL_DECODER from .h to .c file. Change-Id: I5a3056cb3d33db7ed3c3f4629675aa8e21014e66
2012-12-18Use standard integer types for pixel values and coefficients.Ronald S. Bultje
For coefficients, use int16_t (instead of short); for pixel values in 16-bit intermediates, use uint16_t (instead of unsigned short); for all others, use uint8_t (instead of unsigned char). Change-Id: I3619cd9abf106c3742eccc2e2f5e89a62774f7da
2012-11-30google style guide include guardsJim Bankoski
Change-Id: I2c252f3ddcc99e96c1f5d3dab8bcb25a2a3637ea
2012-11-27Add vp9_ prefix to all vp9 filesJohn Koleszar
Support for gyp which doesn't support multiple objects in the same static library having the same basename. Change-Id: Ib947eefbaf68f8b177a796d23f875ccdfa6bc9dc