summaryrefslogtreecommitdiff
path: root/vp9/encoder/vp9_encodeframe.c
AgeCommit message (Collapse)Author
2014-10-31Merge "Rework pred pixel buffer system in non-RD coding mode"Jingning Han
2014-10-30Rework pred pixel buffer system in non-RD coding modeJingning Han
This commit makes the inter prediction buffer system to support hybrid partition search. It reduces the runtime of speed -5 by about 3%. No compression performance change. vidyo1 720p 1000 kbps 11831 ms -> 11497 ms nik 720p 1000 kbps 10919 ms -> 10645 ms Change-Id: I5b2da747c6395c253cd074d3907f5402e1840c36
2014-10-27Use zero motion vector in choose_partitioningJingning Han
The zero motion vector was effectively used in the subsampled pixel based variance calculation. This commit makes it directly use zero mv to generate prediction. Change-Id: Ica83dc843e9f8da2f89c3ef451e50f16214c0def
2014-10-27Refactor encoder tile data structureJingning Han
Make the common tile info as one element in the encoder tile data struct. Change-Id: I8c474b4ba67ee3e2c86ab164f353ff71ea9992be
2014-10-27Refactor rtc coding mode to support tile encodingJingning Han
Use per tile threshold in the prediction mode search process. Change-Id: I6c74ee5a3b069bb4281002dfe51310911a0756c0
2014-10-24Tile based adaptive mode search in RD loopJingning Han
Make the spatially adaptive mode search in rate-distortion optimization loop inter tile independent. Experiments suggest that this does not significantly change the coding staticstics. Single tile, speed 3: pedestrian_area 1080p 1500 kbps 59192 b/f, 40.611 dB, 101689 ms blue_sky 1080p 1500 kbps 58505 b/f, 36.347 dB, 62458 ms mobile_cal 720p 1000 kbps 13335 b/f, 35.646 dB, 45655 ms as compared to 4 column tiles, speed 3: pedestrian_area 1080p 1500 kbps 59329 b/f, 40.597 dB, 101917 ms blue_sky 1080p 1500 kbps 58712 b/f, 36.320 dB, 62693 ms mobile_cal 720p 1000 kbps 13191 b/f, 35.485 dB, 45319 ms Change-Id: I35c6e1e0a859fece8f4145dec28623cbc6a12325
2014-10-21Refactor rate distortion cost structure in non-RD coding modeJingning Han
This commit refactors the rate distortion structure used in the non-RD coding mode and saves a few RDCOST calculations. Change-Id: I62c3416c300d2c5372f21b96d93a6b633a34ab3a
2014-10-21Remove unused copy_partitioningJingning Han
Change-Id: I75a2a3772ed17e73180eb4f263cc838cae4927b0
2014-10-21Merge "Remove deprecated constrain_copy_partitioning function"Jingning Han
2014-10-21Merge "Remove unused sb_has_motion function in vp9_encodeframe.c"Jingning Han
2014-10-21Merge "Remove deprecated use_lastframe_partitioning feature"Jingning Han
2014-10-21Merge "Hybrid partition search for rtc coding mode"Jingning Han
2014-10-21Merge "Resolve compiler warning."Paul Wilkins
2014-10-20Remove deprecated constrain_copy_partitioning functionJingning Han
Its functionality has been replaced with choose_partitioning and threshold based control on split mode check. Change-Id: Ic9bb321df06b524f5c38ea5874dc6f6a8f93c5e3
2014-10-20Remove unused sb_has_motion function in vp9_encodeframe.cJingning Han
Change-Id: I035fb6aa5c10741b065e27befb097d8087e3c62f
2014-10-20Remove deprecated use_lastframe_partitioning featureJingning Han
This speed feature has been deprecated in both yt and rtc coding modes. This commit removes the related operations. Change-Id: I079c79c6adafe45581af2ebf8b98faebcface1ce
2014-10-20Hybrid partition search for rtc coding modeJingning Han
This commit re-designs the recursive partition search scheme in rtc speed -5. It first checks if the current block is under cyclic refresh mode. If so, apply recursive partition search. Otherwise, perform sub-sampled pixel based partition selection. When the pre-selection finds the partition size should be 32x32 or above, use the partition size directly. Otherwise, apply partition search at nearby levels around the preset partition size. It is enabled in speed -5. The compression performance of rtc speed -5 is improved by 9.4%. Speed wise, the run-time goes slower from 1% to 10%. nik_720p, 1000 kbps 33220 b/f, 38.977 dB, 10109 ms -> 33200 b/f, 39.119 dB, 10210 ms vidyo1_720p, 1000 kbps 16536 b/f, 40.495 dB, 10119 ms -> 16536 b/f, 40.827 dB, 11287 ms Change-Id: I65adba352e3adc03bae50854ddaea1b421653c6c
2014-10-20Merge "Remove the dependency in token storing locations"Yunqing Wang
2014-10-20Resolve compiler warning.Paul Wilkins
conversion from 'const int64_t' to 'int', possible loss of data. Change-Id: I471a73bba5d448d9be0ef9cbf1590fa73aa74be1
2014-10-18Merge "Add highbitdepth function for vp9_avg_8x8"Debargha Mukherjee
2014-10-18Merge "Remove unused VAR_BASED_FIXED_PARTITION flag"Yaowu Xu
2014-10-18Merge "Use rate/distortion thresholds to control non-RD partition search"Yaowu Xu
2014-10-17Add highbitdepth function for vp9_avg_8x8Peter de Rivaz
Cherry-picked from https://gerrit.chromium.org/gerrit/#/c/71914/ (a92f987a6b7819ae5c62a429e126e1c26bdb1b71) on highbitdepth branch. Change-Id: I6903e4e4cb57d90590725c8a1c64c23da7ae65e8
2014-10-17Remove the dependency in token storing locationsYunqing Wang
Currently, the tokens for a tile are stored immediately after its preceding tile, which causes a dependency. This is unnecessary since we always allocate enough memory for tokens. Removing the dependency allows token writing done in parallel. This patch doesn't change encoding result. Change-Id: I7365a6e5e2c2833eb14377c37e1503c9d0f26543
2014-10-17Merge "Add init and reset functions for RD_COST struct"Jingning Han
2014-10-17Remove unused VAR_BASED_FIXED_PARTITION flagJingning Han
Change-Id: I4ce19b7cb1c45fed86e81ee785e787630020fb4f
2014-10-15Merge "Some updates for Speed 6/VAR_BASED_PARTITION."Marco
2014-10-15Add init and reset functions for RD_COST structJingning Han
Change-Id: I2902de7051a883fd22e27a655209233733969cfd
2014-10-15Use rate/distortion thresholds to control non-RD partition searchJingning Han
Compare the estimated rate and distortion to the thresholds scaled according to the operating block size and determine if further split partition search will be run. The compression performance of speed -5 is changed by -0.074%. The encoding speed is 10% - 15% faster. vidyo1 720p 16545 b/f, 40.492 dB, 11475 ms -> 16535 b/f, 40.486 dB, 10100 ms nik720p 16624 b/f, 36.310 dB, 10071 ms -> 16617 b/f, 36.313 dB, 8346 ms Change-Id: Ic9197ab5761279ae55d2fb7813b2af0e0db497b8
2014-10-15Some updates for Speed 6/VAR_BASED_PARTITION.Marco
Reduce the intra_cost_penalty for non-rd mode, and some updates to VAR_BASED_PARTITION. Visual tests show some improvement at Speed 6, for RTC clips. Change-Id: If9090daf7aed14906a32d931a538ab544bbca606
2014-10-15Replace copy_partitioning use case with choose_partitioningJingning Han
This commit replaces the use of copy_partitioning with choose_partitioning based on the sse of subsamped pixels, which provides significantly better coding performance and runs at similar speed, as compared to copy_partitioning. It improves rtc speed 5 coding performance by 3%. Change-Id: I52d3682a12dce0147f5e52383a594fc242ca3228
2014-10-13Refactor rate distortion cost structureJingning Han
This commit makes a struct that contains rate value, distortion value, and the rate-distortion cost. The goal is to provide a better interface for rate-distortion related operation. It is first used in rd_pick_partition and saves a few RDCOST calculations. Change-Id: I1a6ab7b35282d3c80195af59b6810e577544691f
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-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-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-09set_vt_partitioning: fix type conversion warningJames Zern
double -> int64 + make threshold_multiplier an int Change-Id: I6d3607fdf13d670f57c9d9b04a80acb2be1346a0
2014-10-08Merge "experimental : partition using 1/8 x 1/8 image"Jim Bankoski
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-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-06Merge "Properly initialize segmentID in nonrd coding path"Yaowu Xu
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
2014-10-03Fix indent in encode_rd_sb_rowJingning Han
Change-Id: Icbcfe7b56d88474f4398b4c5b52f6719d551ab4a
2014-10-03Rework partition search skip schemeJingning Han
This commit enables the encoder to skip split partition search if the bigger block size has all non-zero quantized coefficients in low frequency area and the total rate cost is below a certain threshold. It logarithmatically scales the rate threshold according to the current block size. For speed 3, the compression performance loss: derf -0.093% stdhd -0.066% Local experiments show 4% - 20% encoding speed-up for speed 3. blue_sky_1080p, 1500 kbps 51051 b/f, 35.891 dB, 67236 ms -> 50554 b/f, 35.857 dB, 59270 ms (12% speed-up) old_town_cross_720p, 1500 kbps 14431 b/f, 36.249 dB, 57687 ms -> 14108 b/f, 36.172 dB, 46586 ms (19% speed-up) pedestrian_area_1080p, 1500 kbps 50812 b/f, 40.124 dB, 100439 ms -> 50755 b/f, 40.118 dB, 96549 ms (4% speed-up) mobile_calendar_720p, 1000 kbps 10352 b/f, 35.055 dB, 51837 ms -> 10172 b/f, 35.003 dB, 44076 ms (15% speed-up) Change-Id: I412e34db49060775b3b89ba1738522317c3239c8
2014-09-30Merge "Skip the partition search for still frames"Yunqing Wang
2014-09-30Merge "Refactor encode_rd_sb_row function"Yunqing Wang
2014-09-26Skip the partition search for still framesYunqing Wang
This patch re-enabled the feature in Pengchong's patch (commit 12861260732a4fd5f6b667ce9d5105dc9b606eda). Originally, it was turned on while use_lastframe_partitioning > 0(not used anymore). Now it was added as a feature, and turned on while speed >= 2. As described in the original patch, this feature helps speed up the slideshows in YouTube. Change-Id: I1b0f18d65da1ee1c8d1e117dabba910c5207c471