summaryrefslogtreecommitdiff
path: root/vp9/encoder
AgeCommit message (Collapse)Author
2015-03-11Apply fast motion search to golden reference frameJingning Han
This commit enables the rtc coding mode to run integral projection based motion search for golden reference frame. It improves the speed -6 compression performance by 1.1% on average, 3.46% for jimred_vga, 6.46% for tacomascmvvga, and 0.5% for vidyo clips. The speed -6 is about 6% slower. Change-Id: I0fe402ad2edf0149d0349ad304ab9b2abdf0c804
2015-03-11Refactor to remove GLOBAL_MOTIONJingning Han
Make the vp9_int_pro_motion_estimation() function return zero motion vector if high bit depth is turned on, instead of removing it from compiled codes. Change-Id: Ia48f010eb590b2d517d5678c394110b326a1a95e
2015-03-11Merge "Separate rd_thresh adaption by ref_frame"Yaowu Xu
2015-03-10Separate rd_thresh adaption by ref_frameYaowu Xu
Only update the rd_thresh factors for modes sharing same reference frame. This helps overall compression of 6 and 7 by .13% and .19% respectively without any noticeable speed difference. Change-Id: Idb3a3879512c5d7d0880034516079949290690c5
2015-03-10Merge "Modify update golden reference update under aq-mode=3 mode."Marco
2015-03-10Modify update golden reference update under aq-mode=3 mode.Marco
For non-SVC 1 pass CBR: make the GF update interval a multiple of the cyclic refresh period, and use encoding stats to prevent GF update at certain times. Change-Id: I4c44cacc2f70f1d27391a47644837e1eaa065017
2015-03-10Merge "Enable using Golden reference in choose_partition()"Yaowu Xu
2015-03-10Merge "Allow q adjustment for VPX_CQ and VPX_CBR."paulwilkins
2015-03-10Fix vp9_compute_qdelta_by_rate loop behaviorAdrian Grange
The return value from vp9_compute_qdelta_by_rate, which is a delta value for the quantizer, could never be 0 if (qindex == rc->worst_quality). This occurs because target_index was setup unconditionally in the loop and yet the loop counter stopped at (rc->worst_quality - 1). Change-Id: I6b59cd9b5811ff33357e71cd7d814c5e53d291f2
2015-03-10Enable using Golden reference in choose_partition()Yaowu Xu
Choose_partition uses only the last frame as reference frame in making partition decision, this commit adds the check on how well Golden frame with (0,0) predicts the current block, and uses GF(0,0) as basis for partition decision if it produces better prediction. The commit improves rtc speed 6 and 7 encoding by 0.14% and 0.19% respectively. Change-Id: I156acf925bd6e0b586d48155d1940d27270a3915
2015-03-09Merge "Don't waste time partitioning skip superblocks."Alex Converse
2015-03-09Merge "Skip golden ref frame check when it is same as last ref frame"Jingning Han
2015-03-09Skip golden ref frame check when it is same as last ref frameJingning Han
When golden reference frame is refreshed, the next frame has both its last and golden reference frames point to the same reference frame in real-time coding mode. Experiments suggest that using two separate reference frames for frames right after golden refresh frame does not provide further compression performance advantage. This commit hence retains the current encoder implementation and shuts off the mode search over golden reference frame in this case. It makes the encoder run slightly faster at no coding performance change. Change-Id: I1561f7799253a10e675d05c63c1749fe9e85b472
2015-03-09Don't waste time partitioning skip superblocks.Alex Converse
Force 64x64 partitioning when a whole superblock is SEGMENT_LVL_SKIP. This drops encode times of screens mostly at rest by 20%. Change-Id: Ieba554b0b8a0c1679aae784a8bd11f038ab942c3
2015-03-09Allow q adjustment for VPX_CQ and VPX_CBR.paulwilkins
Adjustment previously only enabled in VBR mode. This patch allows adjustment of min and max q for CBR and adjustment of max q only for CQ mode. Change-Id: Id5e583f3d50453cd544fc57249acacd946457482
2015-03-09Merge "vp9_ethread: fix me consts initialization to support aq_mode=3 encoding"Yunqing Wang
2015-03-09Merge "Move pred_mv assign outside integral projection motion search"Jingning Han
2015-03-09Merge "Modify the setting of transform skip flags in non-rd mode"Yunqing Wang
2015-03-06vp9_ethread: fix me consts initialization to support aq_mode=3 encodingYunqing Wang
While turning on "--aq_mode=3", the quantizers are updated by each thread. Fixed the me consts initialization function to make sure that the correct thread data are updated. Change-Id: Ied27bb7bae76fc3fa2cda4f8c35ac0b46271bef4
2015-03-06Modify the setting of transform skip flags in non-rd modeYunqing Wang
While searching for the best mode in non-rd case, SSE of a partition block is calculated and the transform size is set. This patch rewrites the skip checking conditions based on transform size instead of partition size to be more precise. Small gains were seen in rtc set borg test (speed 6). AVG PSNR: 0.087%, overall PSNR: 0.073%, SSIM: 0.146%. No noticeable speed change. Change-Id: I5603ca5339c784dfa02263f4005988ccd8c32f6e
2015-03-06Merge changes I1b972c94,I9c897d32Yaowu Xu
* changes: Prevent invalid memory access Use correct bsize for uv
2015-03-05Prevent invalid memory accessYaowu Xu
Change-Id: I1b972c945274254d896d772d859840b2f8211b4f
2015-03-05Merge changes I219c287b,I6adee670Alex Converse
* changes: Call encoder control before running ethread test. Don't copy thread data for the main thread.
2015-03-05Merge "Fix misleading indentation."Alex Converse
2015-03-05Merge "Don't inline cost_coeffs."Alex Converse
2015-03-05Merge "Fix valgrind memcpy memory overlaps warning"Adrian Grange
2015-03-05Don't inline cost_coeffs.Alex Converse
It was tiny when it was orginally marked INLINE. Forcing this function to be inlined prevents the compiler from inlining its much smaller callers. No measurable speed impact, 28320 byte smaller libvpx.a Change-Id: I6bf4c917157d15cbadb3cd3e20a9e82d35dc7d6f
2015-03-05Fix misleading indentation.Alex Converse
Change-Id: Ic82b039a3d42f9aa01b85a3a69facfaa84b43a53
2015-03-05Don't copy thread data for the main thread.Alex Converse
Change-Id: I6adee6704cacfeae0ed0b217a91095457d1be74a
2015-03-05Move pred_mv assign outside integral projection motion searchJingning Han
Change-Id: I040b066fdce08e2f05115a22ea808715aa147779
2015-03-05Merge "Move integral projection motion search to vp9_mcomp.c"Jingning Han
2015-03-05Use correct bsize for uvYaowu Xu
Change-Id: I9c897d32af6c3a956bb6f424a74c12737727038a
2015-03-04Merge "Small rationalization of code in vp9_first_pass"Adrian Grange
2015-03-04Merge "Make encoder buffer allocation dynamic"Adrian Grange
2015-03-04Small rationalization of code in vp9_first_passAdrian Grange
Change-Id: I87cc0e038171c60a957298827e312fead500f7fb
2015-03-04Merge "Use SAD value to set chroma cost flag"Jingning Han
2015-03-04Move integral projection motion search to vp9_mcomp.cJingning Han
Make it a general purpose fast motion estimation function, to be used in the mode search process. Change-Id: Ib354cb0e664dc61c30c0b2314297835ee75b157a
2015-03-04Use SAD value to set chroma cost flagJingning Han
This saves an extra 64x64 variance calculation and replaces two 32x32 variance functions with sad functions. The compression performance change is unnoticeable. Change-Id: I6d33868695664ec73b56c42945162ae61c484856
2015-03-04Merge "Properly handle the boundary blocks for integral projection search"Jingning Han
2015-03-04Make encoder buffer allocation dynamicAdrian Grange
Frame buffers are now allocated dynamically on-demand. Entries in the reference frame map, cm->ref_frame_map, may now be set to -1 (INVALID_IDX) to indicate that there is not a valid reference buffer in that "slot". All slots in the reference frame map are now initialized to the empty state (-1) and each buffer is initialized to have a reference count of 0. Change-Id: Id1afe98de98db4ae8b2dfefed7889c3b28c68582
2015-03-03Merge "dc quantizer fix for 32x32 transforms"Deb Mukherjee
2015-03-03Merge "Scale the normalization factor depending on the block size"Jingning Han
2015-03-03Properly handle the boundary blocks for integral projection searchJingning Han
Use rectangular block size for integral projection motion estimation if the the 64x64 block has over half block outside the frame. This avoids the issue that the motion information of these blocks is dominated by the extended pixels, instead of the pixels of interest. Change-Id: I22f4d2bb7f6a20db9b3f5e2e5463a7f4b9d1b737
2015-03-03dc quantizer fix for 32x32 transformsDeb Mukherjee
The rounding factor needs to be scaled down by a factor of 2. Also, the quantized and dequantized coefficients are memset to 0 when dc quantizer is used. Change-Id: Ifa68bab02addbf1b83d249c5b4cbd5cda796b1cf
2015-03-03Fix valgrind memcpy memory overlaps warningAdrian Grange
Change-Id: Id0bb162b48b891c5c849f0411ef2ac0aa4bbe261
2015-03-03Scale the normalization factor depending on the block sizeJingning Han
Change-Id: I0a26994bf65ea224e496b09af2ce71e1a4210433
2015-03-03Adapt color sensitiviy threshold to luma signal energyYaowu Xu
Instead using only a fixed threshold, this commit adapts the threshold for color sensitivity decision to luma signal energy: chroma channel's sse is at least 1/6 of that in luma for color sensitivity flag to be set to active. This recoups a large portion of the speed loss due to accounting for chroma component costs in RTC mode decision. Change-Id: Ie01f747f6037dba6a1d1ed3e10b71a0ef1abc42c
2015-03-01Use variance metric for integral projection vector matchJingning Han
This commit replaces the SAD with variance as metric for the integral projection vector match. It improves the search accuracy in the presence of slight light change. The average speed -6 compression performance for rtc set is improved by 1.7%. No speed changes are observed for the test clips. Change-Id: I71c1d27e42de2aa429fb3564e6549bba1c7d6d4d
2015-02-27Merge "Fix source frame border extension"Jingning Han
2015-02-27Fix source frame border extensionJingning Han
This commit fixes an issue in source frame border extension. It causes certain frame resolution such as 640x480 to have a portion of the right/bottom extension filled by zeros, which misleads motion search and degrades transform coding performance when large block size is used. This fix improves the speed 2 compression performance of a few yt sequence, typically ranging from 1% - 2%, up to 5% at median to low bit-rate. Change-Id: Id6b09a5695d9e7651c6dfbc2c6a72288b08af7fb