summaryrefslogtreecommitdiff
path: root/vp9
AgeCommit message (Collapse)Author
2014-06-12Moving full_pixel_search() to vp9_mcomp.c.Dmitry Kovalev
Change-Id: I12389f801ebd3bd2ae3bf31e125433bfb429ee65
2014-06-12Merge "Fast computation path for forward transform and quantization"Jingning Han
2014-06-12Fast computation path for forward transform and quantizationJingning Han
This commit enables a fast path computational flow for forward transformation. It checks the sse and variance of prediction residuals and decides if the quantized coefficients are all zero, dc only, or more. It then selects the corresponding coding path in the forward transformation and quantization stage. It is currently enabled in rtc coding mode. Will do it for rd coding mode next. In speed -6, the runtime for pedestrian_area 1080p at 1000 kbps goes down from 14234 ms to 13704 ms, i.e., about 4% speed-up. Overall coding performance for rtc set is changed by -0.18%. Change-Id: I0452da1786d59bc8bcbe0a35fdae9f623d1d44e1
2014-06-12Merge "Fix SEG_LVL_SKIP in non-RD inter mode selection."Alex Converse
2014-06-12Merge "Fix SEG_LVL_SKIP in RD inter mode selection."Alex Converse
2014-06-12Merge "skip un-neccessary motion search in the first pass"Yunqing Wang
2014-06-12skip un-neccessary motion search in the first passPengchong Jin
This patch allows the encoder to skip the un-neccessary motion search in the first pass. It calculates the error of the zero motion vector using the last source frame as reference and skips the further motion search in the first pass if the error is small. The encoding speedup of the first pass for slideshow videos is over 30%. Borg test shows the overall PSNR performance remain approximately the same (derf -0.009, hd 0.387, yt 0.021, stdhd 0.065). Individual clips may have either PSNR gain or loss. The worst PSNR perfomance is from yt set, with a PSNR loss of -1.1. Change-Id: I08b2ab110b695e4689573b2567fa531b6457616e
2014-06-11Fix SEG_LVL_SKIP in non-RD inter mode selection.Alex Converse
Add a set_mode_info_seg_skip function that fills the requisite mode info. Change-Id: I460b1b6845d720d9b09ed5b64df0ea0aac443f62
2014-06-11Fix SEG_LVL_SKIP in RD inter mode selection.Alex Converse
* Only use ZEROMV, disalowing the intra modes that were previously tested. * Score rate and distortion as zero. Change-Id: Ifcf99e272095725f11da1dcd26bd0f850683e680
2014-06-10Merge "Cleaning up vp9_variance_mmx.c."Dmitry Kovalev
2014-06-10Merge "Removing two unused TX_SIZE_SEARCH_METHOD members."Dmitry Kovalev
2014-06-10Merge changes I6abc0657,I8224fba2,I04f64a45,I5d49d119,I76b4d171,I88c11ac3James Zern
* changes: vp9_sub_pixel_*variance*: disable avx2 variants vp9_sad*x4d: disable avx2 variants vp9_f(dct|ht): disable avx2 variants convolve: disable avx2 variants fdct8x8_test: add missing avx2 functions dct4x4_test: add missing avx2 functions
2014-06-10vp9_sub_pixel_*variance*: disable avx2 variantsJames Zern
tests failing under Win32/Win64 + variance_test: add missing avx2 functions (partially disabled) Change-Id: I6abc0657ea076379ab9ca65c12678b9ea199849d
2014-06-10vp9_sad*x4d: disable avx2 variantsJames Zern
tests failing under Win32/Win64 + sad_test: add missing avx2 functions (disabled) Change-Id: I8224fba2b270f6039ab1877d71e1e512f0081856
2014-06-10Merge "Add mode info arrays and mode info index."hkuang
2014-06-10Add mode info arrays and mode info index.hkuang
In non frame-parallel decoding, this works the same way as current decoding scheme. Every time after decoder finish decoding a frame, it will swap the current mode info pointer and previous mode info pointer if the decoded frame needs to be shown. Both mode info pointer and previous mode info pointer are from mode info arrays. In frame-parallel decoding, this will become more complicated as current frame's mode info pointer will be shared with next frame as previous mode info pointer. But when one decoder thread finishes decoding one frame and starts to work on next available frame, it needs to retain the decoded frame's mode info pointers until next frame finishes decoding. The mode info index will serve this purpose. The decoder will use different buffer in the mode info arrays and use the other buffer to save previous decoded frame’s mode info. Change-Id: If11d57d8eb0ee38c8876158e5482177fcb229428
2014-06-10Removing two unused TX_SIZE_SEARCH_METHOD members.Dmitry Kovalev
Change-Id: I33a38bb9f46e7ef509bbbf0cfd7bc3ea5072d022
2014-06-10Merge "Removing chessboard_index from SPEED_FEATURES."Dmitry Kovalev
2014-06-10Merge "Removing unused motion_vector_context enum from vp9_encodeframe.c"Dmitry Kovalev
2014-06-09vp9_f(dct|ht): disable avx2 variantsJames Zern
tests failing under Win32/Win64 + dct16x16_test: add missing avx2 functions (partially disabled) exercises the forward transforms no idct/iht implementations, so the c-code is used Change-Id: I04f64a457fa0828a00f32b5c9fe4f55294f21f61
2014-06-09convolve: disable avx2 variantsJames Zern
tests failing under Win32/Win64 Change-Id: I5d49d11911bcda3a832b14efe5500d22597bedcf
2014-06-09Merge "Use small transform size in non-rd real-time mode"Yunqing Wang
2014-06-09Merge "Removing unused tt_activity_measure()."Dmitry Kovalev
2014-06-09Use small transform size in non-rd real-time modeYunqing Wang
In non-rd real-time mode, choosing smaller transform size in encoding gives better video quality and good speed gain than choosing larger transform size. This patch set tx size search method to ALLOW_8X8, which is better than using 4x4 or other larger sizes. Borg tests on rtc set at speed 6 showed significant gain on quality. PSNR gain: 11.034% and SSIM gain: 15.466%. The speed gain is 5% - 12% for <720p clips, and 2% - 7% for 720p clips. Change-Id: If4dc74ed2df359346b059f47fb73b4a0193ec548
2014-06-09Merge "Fix internal stats printing"Adrian Grange
2014-06-06Merge "Revert "Removing this_frame_stats member from TWO_PASS struct.""Adrian Grange
2014-06-06Revert "Removing this_frame_stats member from TWO_PASS struct."Adrian Grange
Use of stack frame variable "fps" beyond the lifetime of the function. fps is sent as a paremeter to output_stats and stored in the packet holding this encoded frame. This has scope beyond the lifetime of the calling function. This reverts commit 3f95a230c7e54104201b3f6c577dfa9251b4642a Change-Id: Icd8e14b3d7dd733590ada12e619b9dce95b6b0f5
2014-06-06Merge "Adding encode_tiles() function."Dmitry Kovalev
2014-06-05Removing chessboard_index from SPEED_FEATURES.Dmitry Kovalev
This is not a speed feature, adding inline function instead. Change-Id: Ia48c41802eec9e92cf990339d724097279695c9a
2014-06-05Adding encode_tiles() function.Dmitry Kovalev
Change-Id: Ib8187c8f2556e1e9268b0683cd2b6ff3489f0205
2014-06-05Fixes qindex for first frame in 1-pass cq/q modesDeb Mukherjee
Produces sane qindex for the first frame in 1-pass constant and constrained qualirty modes. Change-Id: Ib2a5091df15a23489e9bb5534a2019cf2689755e
2014-06-05Fix internal stats printingAdrian Grange
Change-Id: I61bd0b127164a591b1c983bfcebd64ba7617f796
2014-06-04Removing unused tt_activity_measure().Dmitry Kovalev
Change-Id: Ifcb46e6904730d14b9ef76b648b4d0dc3cd5d0c5
2014-06-04Removing unused motion_vector_context enum from vp9_encodeframe.cDmitry Kovalev
The same enum defined and used in vp9_mvref_common.c. Change-Id: I3975103997797add0a258d36c96d20ac9561a73d
2014-06-04Removing unused alt_freq field from VP9EncoderConfig.Dmitry Kovalev
Change-Id: I9b683c8647a864e74073161f4aa6f2911b7825e3
2014-06-03Using 2 instead of 3 elements for avg_frame_qindex array.Dmitry Kovalev
The third array element was unused. 2 elements now: key- and interframe. Change-Id: I5b8b9f5d889cc96a204cedfc432059293256298e
2014-06-03Merge "Enable SSSE3 inverse 2D-DCT with 10 non-zero coeffs"Jingning Han
2014-06-03Merge "Removing lossless field from VP9EncoderConfig."Dmitry Kovalev
2014-06-03Merge "Fix potential overflow issue in SSSE3 forward 8x8 2D-DCT"Jingning Han
2014-06-03Fix potential overflow issue in SSSE3 forward 8x8 2D-DCTJingning Han
The SSSE3 implementation might find a potential overflow issue in its second 1-D transform, if all input residual pixels are close to 255. This commit fixes the issue and re-enables the unit test on the SSSE3 version. Change-Id: I0520478abdab7afd3ff2842516bec951111e9b3c
2014-06-03Adding buffer levels to RATE_CONTROL struct.Dmitry Kovalev
Change-Id: Ib35ff854378764dc3c6745844c67a33dee545663
2014-06-03Removing lossless field from VP9EncoderConfig.Dmitry Kovalev
Right now there is just one place to check: xd->lossless and for the first pass there is a function is_lossless_requested(). Change-Id: I949a6834e64ce51e422e2892f097f2b871b5429a
2014-06-03Merge "Cleaning up full_pixel_search()."Dmitry Kovalev
2014-06-03Merge "Moving first pass related functions to vp9_firstpasss.c."Dmitry Kovalev
2014-06-03Merge "Reusing existing vp9_get{8x8, 16x16}var() instead of new ones."Dmitry Kovalev
2014-06-03Fix AQ mode 2 bug where delta causes Q 0.Paul Wilkins
In Aq mode 2 for kf/arf/gf the segment q delta is calculated and then applied by re-quantization without going through the rd loop again. If the base Q != 0 but the segment Q == 0 (lossless) this can could give rise to a situation where we have an illegal combination of transform size and Q. (Q == 0 requires that all blocks are coded 4x4 WHT). Change-Id: I241a58c6494ed442e9e4630070b0cde0fb99ae45
2014-06-02Merge "Remove Wextra warnings from vp9_sad.c"Deb Mukherjee
2014-06-02Merge "Remove an attempt to handle SEG_LVL_SKIP sub8x8."Alex Converse
2014-06-02Remove Wextra warnings from vp9_sad.cDeb Mukherjee
As a side-effect, the sad unit tests for VP8 and VP9 had to be separated. Fixes a bug in original patch: (https://gerrit.chromium.org/gerrit/#/c/70163/8) that was reverted due to a nightly test failure. Change-Id: Ia2a4e9e278fd3c89d6c3c82fcc6381320ec2a8a6
2014-06-02Fixing failed ARM build.Dmitry Kovalev
Change-Id: I3f74418f07c2dfdd7725a5b4a8ef5c5f4aca6289