summaryrefslogtreecommitdiff
path: root/vp9/encoder/vp9_encodeframe.c
AgeCommit message (Collapse)Author
2014-08-15Remove a unused speed featureYunqing Wang
Removed disable_split_var_thresh, which is not used anymore. Change-Id: I50119b150442e1571157433b5effc6aae0dbe0fd
2014-08-14Merge "Remove redundant vp9_init_plane_quantizers call"Jingning Han
2014-08-14Remove redundant vp9_init_plane_quantizers callJingning Han
When aq mode is on, the quantizer will be reset later in the same function (line 571). Change-Id: I20635db31261d136d04d5deeb881ad3957078bf1
2014-08-13Replace current_video_frame with better alternativesYaowu Xu
In the encoder, current_video_frame is used in a couple of places to decide encoding strategy, this commit replaces with more appropriate variables. Change-Id: I3d3d8d8e2ea02c489e4639b9d4c446a63e357d29
2014-08-13Simplify select_tx_mode()Yaowu Xu
The function is called only once, right after all stats counters are reset to 0. Therefore all the computations have zero effect on return values. This commmit to removed those effectless code. Change-Id: I50d27c0802547921fa36c60aa4bd92d76247f595
2014-08-11Merge "Integrate fast txfm and quant path into skip_recode system"Jingning Han
2014-08-11Merge "Extend skip_txfm flag into array to cover YUV planes"Jingning Han
2014-08-08Moving pass from VP9_COMP to VP9EncoderConfig.Dmitry Kovalev
We had a very complicated way to initialize cpi->pass from cfg->g_pass: switch (cfg->g_pass) { case VPX_RC_ONE_PASS: oxcf->mode = ONE_PASS_GOOD; break; case VPX_RC_FIRST_PASS: oxcf->mode = TWO_PASS_FIRST; break; case VPX_RC_LAST_PASS: oxcf->mode = TWO_PASS_SECOND_BEST; break; } cpi->pass = get_pass(oxcf->mode). Now pass is moved to VP9EncoderConfig and initialization is simple: switch (cfg->g_pass) { case VPX_RC_ONE_PASS: oxcf->pass = 0; break; case VPX_RC_FIRST_PASS: oxcf->pass = 1; break; case VPX_RC_LAST_PASS: oxcf->pass = 2; break; } Change-Id: I8f582203a4575f5e39b071598484a8ad2b72e0d9
2014-08-08Merge "Cleaning up vp9_encodeframe.c."Dmitry Kovalev
2014-08-07Fix active_map speed 6.Alex Converse
Fix the interaction between active map and reuse_inter_pred_sby. The reuse_inter_pred_sby feature expects inter predictors to already be built, but blocks with active map on skip this step. Change-Id: Ibb2bf0d228f678935d82a0ede9cb0919ab7c8878
2014-08-07Cleanup SEG_LVL_SKIP handling in encode_superblock.Alex Converse
Change-Id: Ib7497ba08696765cbc1b2cc4218d37f4298f278c
2014-08-07Cleaning up vp9_encodeframe.c.Dmitry Kovalev
Change-Id: Ia3001ae5c44faee3978fc3eb7a027cd9712a0373
2014-08-06Integrate fast txfm and quant path into skip_recode systemJingning Han
This commit integrates the fast transform and quantization process into skip_recode scheme in the rate-distortion optimization loop. Previously the fast transform and quantization process was only enabled for non-RD coding flow. Change-Id: Ib7db4d39b7033f1495c75897271f769799198ba8
2014-08-05Directly split the block in partition searchPengchong Jin
This patch allows the encoder to directly split the block in partition search, therefore skip searching NONE. It computes a score which measures whether 16x16 motion vectors from the first pass in the current block are consistent with each others. If they are inconsistent and we have enough Q to encode, split the block directly, and skip searching NONE. This feature is under flag CONFIG_FP_MB_STATS. In speed 2, it further gives a speedup of 3-8% on sample yt clips as compared to the previous version under the same flag. Overall, the features under the flag will give 7-15% on typical yt clips at up to 6000kbps data rate. The speedup at very high data rate is not significant. For hard stdhd clips: park_joy_1080p @ 15000kbps: 504541ms -> 506293ms (-0.35%) pedestrian_area_1080p @ 2000kbps: 326610ms -> 290090ms (+11.2%) The compression performance using the features under the flag: derf: -0.068% yt: -0.189% hd: -0.318% stdhd:-0.183% To use the feature, set CONFIG_FP_MB_STATS and turn on cpi->use_fp_mb_stats. Change-Id: Iad58a2966515c8861aa9eb211565b1864048d47f
2014-08-05Extend skip_txfm flag into array to cover YUV planesJingning Han
Change-Id: Ieae182d72d625d0d3fd4ed7c7d24cb521a0f21b0
2014-08-04Merge "Store first pass motion vector directions"Pengchong Jin
2014-08-04Store first pass motion vector directionsPengchong Jin
Re-organize the one-byte structure for 16x16 first pass block. Add bits to indicate motion vector directions. Change-Id: Id10754ba343dfc712c7fed5bcc85c67fa0bbcb89
2014-08-04break at the end of clauses with assert(0) to avoid gcc warningJim Bankoski
Change-Id: I1b3c5337f018dde27dc819ab18bd081d169a91e8
2014-07-31Skip calling vp9_block_energy when aq-mode is offJingning Han
The mb_energy value is used by aq-mode. Turn off computing its value when aq-mode is off. Change-Id: I26c239f124eca45a5ee58b90d19eae00d9a7cda5
2014-07-31Merge "Refactor rd_pick_parition interface"Jingning Han
2014-07-30Merge "Chessboard pattern partition search"Jingning Han
2014-07-30Merge "Early termination after partition NONE is done in RD."Pengchong Jin
2014-07-30Early termination after partition NONE is done in RD.Pengchong Jin
This patch allows the encoder to skip the search for partition SPLIT, HORZ, VERT after the search for partition NONE is done in RD optimization. It uses the first pass block-wise statistics to make the decision. If all 16x16 blocks in the current partition have zero motions and small residues from the frist pass statistics, and it has small difference variance, further partition search is skipped. For speed 2 setting, experiments on general youtube clips show that the speedup varies from 1% - 10%, 5% on average. On the performance side in PSNR, derf 0.004%, yt -0.059%, hd -0.106%, stdhd 0.032%. For hard stdhd clips: park_joy_1080p, 502952 ms -> 503307 ms (-0.07%) pedestrian_area_1080p, 227049 ms -> 220531 ms (+3%) This feature is under the compilation flag CONFIG_FP_MB_STATS and it is off in current setting. Change-Id: I554537e9242178263b65ebe14a04f9c221b58bae
2014-07-30Refactor rd_pick_parition interfaceJingning Han
Remove the variable that indicates the relative block index. This is explicitly covered by the use of pc_tree. Change-Id: Ib13142582fff926c85e375bde656aa050add8350
2014-07-30Chessboard pattern partition searchJingning Han
This commit enables a chessboard pattern constrained partition search for 720p and above resolutions. The scheme applies stricter partition search to alternative blocks based on its above/left neighboring blocks' partition range, as well as that of the collocated blocks in the previous frame. It is currently turned on at 16x16 block size level. The chessboard pattern is flipped per coding frame. The speed 3 runtime is reduced: park_joy_1080p, 652832 ms -> 607738 ms (7% speed-up) pedestrian_area_1080p, 215998 ms -> 200589 ms (8% speed-up) The compression performance is changed: hd -0.223% stdhd -0.295% Change-Id: I2d4d123ae89f7171562f618febb4d81789575b19
2014-07-29Clean up max/min allowed block size in rd_pick_partitionJingning Han
This commit replace the repetitive retrieve of max and min allowed partition from speed_feature with local variables max_size and min_size. Change-Id: Ib06f11f16615e4876e4dd5fb6a968c6bf5f7b216
2014-07-29Use frame index directly in get_chessboard_indexJingning Han
The get_chessboard_index() used to call the entire VP9_COMMON struct pointer to retrieve the chessboard pattern index. This cl makes it call the frame index directly. Change-Id: I3cad9d209ea2e77a358085a04fe1ff0ddec5ba03
2014-07-25Merge "Fix rd_pick_partition search loop for 4x4 blocks"Jingning Han
2014-07-25Fix rd_pick_partition search loop for 4x4 blocksJingning Han
The partition search for 4x4 blocks takes unnecessary steps to reconstruct pixels and an extra partition type update. This commit removes such operations. No visible compression/speed difference. Thanks to Yue (yuec@) for finding this issue. Change-Id: I3f83824aa3fd3717d63be0b280fa57258939a70a
2014-07-24s/CONFIG_DENOISING/CONFIG_VP9_TEMPORAL_DENOISINGTim Kopp
This should prevent confusion with the VP8 CONFIG_TEMPORAL_DENOISING and other flags. Change-Id: I1fe4e2977895b7966841d861ab74317ad875b6c8
2014-07-22Merge "Fix get_frame_type function"Adrian Grange
2014-07-22Fix get_frame_type functionAdrian Grange
Fixed the function get_frame_type to return the correct frame type for golden and last frames. Change-Id: I8edddd9aa26cbe7a1de8ff211389410b22b1bd14
2014-07-21Remove unfinished VP9 alpha channel.Alex Converse
Change-Id: Ic5d3a3a0dac10b49495771886a31e793bb78b5ca
2014-07-21Add -DNDEBUG when config option debug is disabledYunqing Wang
For gcc, when libvpx config option debug is disabled, added the flag -DNDEBUG to disable the assertions in libvpx for some speedup. Change-Id: Ifcb7b9e8ef5cbe5d07a24407b53b9a2923f596ee
2014-07-17Merge "Fixed a bug of setting wrong first pass mb stats pointer"Pengchong Jin
2014-07-17Fixed a bug of setting wrong first pass mb stats pointerPengchong Jin
The bug sets the wrong pointer to the first pass mb stats if the encoder does the re-coding in the second pass. Change-Id: I8a11f45dd7dceb38de814adec24cecccae370d00
2014-07-15VP9 Denoiser denoises after mode/bsize searchTim Kopp
In vp8, statistics are collected about the different modes as they are searched. This process is more complicated due to the variable block size. Fields were added to the PICM_MODE_CONTEXT struct to hold this information for each point in the search. The information is then taken from the appropriate part of the tree during denoising. Change-Id: I89261ab77ad637821287ae157dfdf694702b8e77
2014-07-11Code refactoring: use defined inline functionsYunqing Wang
Changed to use defined inline functions consistently through the code. Change-Id: I7644d24fa7a837378564a6e0790416d3725dd200
2014-07-07Remove an empty lineJingning Han
Change-Id: Id6eedc502c86433df1456dd994aee6bc9a1359a2
2014-07-02Split vp9_rdopt into vp9_rdopt and vp9_rd.Alex Converse
vp9_rdopt is for making rd optimal mode decisions. vp9_rd is for all other rd related routines. Anything used outside of making an rd optimal decision belongs in rd. Change-Id: I772a3073f7588bdf139f551fb9810b6864d8e64b
2014-07-01Merge "Re-design quantization process"Yaowu Xu
2014-07-01Re-design quantization processJingning Han
This commit re-designs the quantization process for transform coefficient blocks of size 4x4 to 16x16. It improves compression performance for speed 7 by 3.85%. The SSSE3 version for the new quantization process is included. The average runtime of the 8x8 block quantization is reduced from 285 cycles -> 255 cycles, i.e., over 10% faster. Change-Id: I61278aa02efc70599b962d3314671db5b0446a50
2014-07-01Fix visual studio build issueYunqing Wang
Fixed the signed/unsigned mismatch. Change-Id: Id83d603b8f1745b71f4cf695a0751e55518b1316
2014-06-30Merge "change to not force interp_type as SWITCHABLE"Yaowu Xu
2014-06-30change to not force interp_type as SWITCHABLEYaowu Xu
Encoder still uses SWITCHABLE as default via DEFAULT_INTERP_FILTER, but does not override the default if it is not SWITCHABLE. Change-Id: I3c0f6653bd228381a623a026c66599b0a87d01d5
2014-06-30Remove unused set_mode_info functionJingning Han
When the frame is intra coded only, the encoder takes the RD coding flow. Hence the function set_mode_info is not practically in use. This commit removes it and the associated conditional branches. Change-Id: I1e42659ceb55b771ba712d1cdecacb446aa6460d
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-06-29remove unused parms from rd_pick_inter_mode_sb_seg_skipJim Bankoski
Change-Id: I7f989d197444d166133ad91eb23ac1033109f58d
2014-06-26Adaptive txfm size selection depending on residual sse/varianceJingning Han
This commit enables an adaptive transform size selection method for speed -6. It uses largest transform size when the sse is more than 4 times of variance, i.e., most energy is compacted in the DC coefficient. Otherwise, use the default TX_8X8. It improves the compression efficiency for rtc set of speed -6 by 0.8%, no speed change observed. Change-Id: Ie6ed1e728ff7bf88ebe940a60811361cdd19969c
2014-06-26Merge "Skip the partition search for the frame with no motion"Pengchong Jin