summaryrefslogtreecommitdiff
path: root/vp9
AgeCommit message (Collapse)Author
2015-02-26Merge "Account for rate error in GF group Q calculation."paulwilkins
2015-02-25Merge "Motion compensated reference refinement"Jingning Han
2015-02-25Merge "Re-distribute hierarchical vector match pattern"Jingning Han
2015-02-25Motion compensated reference refinementJingning Han
This commit applies one-step refinement search to the resulting motion vector of the integral projectiion based motion estimation, per 64x64 block. It improves the coding performance of speed -6. pedestrian 1080p 500 kbps 51735 b/f, 36.794 dB, 16044 ms -> 51382 b/f, 36.793 dB, 16282 ms cloud 1080p 500 kbps 24081 b/f, 37.988 dB, 14016 ms -> 23597 b/f, 38.076 dB, 12774 ms vidyo1 720p 1000 kbps 16552 b/f, 40.514 dB, 8279 ms -> 16553 b/f, 40.543 dB, 8510 ms The rtc set compression performance is improved by 0.5%. Change-Id: I3d09bea2caf58b2a4f3b38aa26fffafcbe9a2c17
2015-02-25Merge "Fix ssse3 quantize_fp functions while skip=1"Yunqing Wang
2015-02-25Merge "Fix fwd transform sse2 build issue on older gcc version"Jingning Han
2015-02-24Fix fwd transform sse2 build issue on older gcc versionJingning Han
Change-Id: I3e0e53d129552babf29e6c5d047483733983973c
2015-02-24Merge "vp9_loopfilter: quiet integer constant size warnings"James Zern
2015-02-24Re-distribute hierarchical vector match patternJingning Han
This commit modifies the hierarchical vector match patter. It avoids repeated SAD computation at same points. The function vp9_vector_sad_sse2 is called 12 times per 64x64 block, instead of 15 times as before. The effective coverage remains the same. Change-Id: I91ad9d27d40db8963c907d02af84e10702136994
2015-02-24vp9_loopfilter: quiet integer constant size warningsJames Zern
mark uint64_t constants with 'ULL' Change-Id: I7648e161b4004fba35e1fa7ab79e34cc19e39716
2015-02-24Fix ssse3 quantize_fp functions while skip=1Yunqing Wang
In ssse3 functions, DEFINE_ARGS macro hard codes qcoeff and dqcoeff to r3 and r4. If skip is 1, qcoeff and dqcoeff need to be loaded from the stack, which doesn't work because of the above definitions. Currently, skip=1 case is not used in the encoder. This patch fixed the issue, so it can be turned on later. Change-Id: I998d696b1a7a85dca2b3bcee790b21c21e039147
2015-02-23fix the propagation of color space info in decoderYaowu Xu
This addresses the issue #960 Change-Id: Iddf45b4bd4f53cb0ddfd879e800a071cd843b915
2015-02-23Account for rate error in GF group Q calculation.paulwilkins
When GF group adaptive maxQ is enabled this patch accounts somewhat for accumulated error in the rate control. This improves accuracy quite a bit on many clips especially when there is overshoot. Examples when the overshoot and undershoot command line parameters are set to 100: Hall @ 1200 overshoot is reduced from 67-24%. Akiyo @ 400 undershoot is reduced from 28%-15%. Setting a lower value for undershoot or overshoot still reduces the error further. Impact on metrics is mixed with some gains in average psnr but generally a little lower (e.g. 0.5%) on overall and ssim. The GF group adaptation is still off by default in this patch. Compared to with the head, enabling this mode now gives big average psnr gains on the YT sets (e.g. YT_HD >11.2%), a drop in overall PSNR (YT-HD 3.9%) and a smaller drop or neutral for SSIM. Change-Id: If4b32cd0740d3fb941317b374f9c2951954eee90
2015-02-20Merge "Remove a few unneccessary multiplications in denoiser."Marco
2015-02-20Remove a few unneccessary multiplications in denoiser.Marco
Change-Id: I3edbb7cc67203fbbf32c6fd4a08015ca9d9ed53e
2015-02-20Move dequant table from VP9_COMMON to VP9_COMP as decoderHangyu Kuang
does not need it any more. This reduces VP9_COMMON size from 25776 bytes to 17584 bytes(~31%). Change-Id: Ic5daea732ccefb6d512b048af7983f0efe08589b
2015-02-20Merge "Adjustments to cyclic refresh (aq-mode=3)."Marco
2015-02-20Merge "Add high bit depth support to rtc sub8x8 block coding"Jingning Han
2015-02-20Adjustments to cyclic refresh (aq-mode=3).Marco
Target higher delta-qp for big blocks with zero motion, and for segment#1: avoid 64x64 partition size and force 8x8 tx size. Metrics on RTC set mostly positive: SSIM up by ~4%, PSRN by ~1.5%. Doesn't seem to be any change in speed. Change-Id: I1f68fa3c4f62dab3b90cc58041f05ebb048ae5ac
2015-02-20Add high bit depth support to rtc sub8x8 block codingJingning Han
This commit adds proper buffer handle to support high bit depth in rtc sub8x8 block coding. Change-Id: Ibaf8a2160194121aec9ca68b8094817fed9ccaea
2015-02-20Merge "Optimize the dequantization process on decoder side."Hangyu Kuang
2015-02-19Merge "Fix control string in firstpass stats fprintf"Adrian Grange
2015-02-19Optimize the dequantization process on decoder side.Hangyu Kuang
Change-Id: I00621ff7165bbe86a18794b4a816976c9effaf78
2015-02-19Merge "Improve skip_txfm thresholds in the non-rd mode selection"Yunqing Wang
2015-02-19Fix control string in firstpass stats fprintfAdrian Grange
20 items in the control string but only 19 arguments. Change-Id: I51dab9aa1c58c653b52395005a9cb41f09feb484
2015-02-19Merge "Integral projection based motion estimation"Jingning Han
2015-02-19Improve skip_txfm thresholds in the non-rd mode selectionYunqing Wang
Modified the thresholds of deciding whether or not to skip the transforms in model_rd_for_sb_y(). Used zbin[] instead of dequant[] to be more precise. Also, modified the checking coditions. Rtc set borg test results (at speed 6) showed: average PSNR gain: 0.138%, overall PSNR gain: 0.158%, and SSIM gain: 0.177%. The data rate test was modified slightly as suggested by Marco. Change-Id: Ieaf633ab77f4838cb3c45cf69065b29d55f8ae6c
2015-02-19Integral projection based motion estimationJingning Han
This commit introduces a new block match motion estimation using integral projection measurement. The 2-D block and the nearby region is projected onto the horizontal and vertical 1-D vectors, respectively. It then runs vector match, instead of block match, over the two separate 1-D vectors to locate the motion compensated reference block. This process is run per 64x64 block to align the reference before choosing partitioning in speed 6. The overall CPU cycle cost due to this additional 64x64 block match (SSE2 version) takes around 2% at low bit-rate rtc speed 6. When strong motion activities exist in the video sequence, it substantially improves the partition selection accuracy, thereby achieving better compression performance and lower CPU cycles. The experiments were tested in RTC speed -6 setting: cloud 1080p 500 kbps 17006 b/f, 37.086 dB, 5386 ms -> 16669 b/f, 37.970 dB, 5085 ms (>0.9dB gain and 6% faster) pedestrian_area 1080p 500 kbps 53537 b/f, 36.771 dB, 18706 ms -> 51897 b/f, 36.792 dB, 18585 ms (4% bit-rate savings) blue_sky 1080p 500 kbps 70214 b/f, 33.600 dB, 13979 ms -> 53885 b/f, 33.645 dB, 10878 ms (30% bit-rate savings, 25% faster) jimred 400 kbps 13380 b/f, 36.014 dB, 5723 ms -> 13377 b/f, 36.087 dB, 5831 ms (2% bit-rate savings, 2% slower) Change-Id: Iffdb6ea5b16b77016bfa3dd3904d284168ae649c
2015-02-19Fix a check condition in nonrd_pick_partitionJingning Han
Change-Id: Ic92fb4b16948f745c218351b24fdafecf9abce3a
2015-02-18Merge "Fix the frame parallel invalid file test failure on ARM."hkuang
2015-02-17Fix the frame parallel invalid file test failure on ARM.hkuang
There is a corner case that when a frame is corrupted, the following inter frame decode worker will miss the previous failure. To solve this problem, a need_resync flag needs to be added to master thread to keep control of that. Change-Id: Iea9309b2562e7b59a83dd6b720607410286c90a6
2015-02-13loop_filter_rows_mt: remove dependency on 'last_height'James Zern
using this to control reallocation would miss a change if the function were not called for every frame. fixes potential memory corruption by the subsequent memset Change-Id: I4c6bb6ab68803104fc824c7e27cc2f9b2cf53e33
2015-02-13Merge "Fix an encoder/decode mismatch bug"Yaowu Xu
2015-02-13Fix an encoder/decode mismatch bugYaowu Xu
This commit prevent the encoder to update last_frame_type when a frame is dropped in the encoder. Prior to this fix, if there is a dropped frame immediatedly after a key frame, decoder would have the value of last_frame_type as key frame, different from encoder as the dropped frame in encoder would have updated the value to an inter frame. This leads to different probability update in encoder and decoder, thereby encoder/decoder mismatch. This fixes issue #941 Change-Id: I27115224b138bec43ae3916c016574f5740822b0
2015-02-13Merge "Replace some operations with shift in encoder_breakout."Marco
2015-02-13Merge "Improve readability: move return statements"Adrian Grange
2015-02-13Replace some operations with shift in encoder_breakout.Marco
Replaced a divide by 9 with 8, so some very small difference, but otherwise no change in behavior. Change-Id: I1079ae3c41e0789ff0bc6fa9940a238b6bca0f5b
2015-02-13Merge "Add VP9 decoder control to get frame size"Adrian Grange
2015-02-13Improve readability: move return statementsAdrian Grange
Change-Id: I18428d0a93084f78ec136d9019f10466326c67e5
2015-02-13Add VP9 decoder control to get frame sizeAdrian Grange
Adds a control function that allows the caller to get the size of the current frame. Change-Id: Iddfdedc0f3aa9aa46119f87d294681c82f275c9f
2015-02-12Merge "Fix ioc issue in block_rd_txfm"Jingning Han
2015-02-12Fix ioc issue in block_rd_txfmJingning Han
Force 64-bit precision in the intermediate steps. Change-Id: I666113d9adcef8975da201d5aa1a13b783d09594
2015-02-12Merge "Remove unnecessary border extension when frame size change."hkuang
2015-02-12Merge "Add skin detection."Marco
2015-02-12Merge "Update partition rate cost in rtc speed 5"Jingning Han
2015-02-12Merge "Add mode cost to sub8x8 block mode decision in rtc coding"Jingning Han
2015-02-12Merge "Add cast to convert double to int"Adrian Grange
2015-02-11Add skin detection.Marco
Simple skin detection, from vp8; works reasonable on most of the RTC clips, but could miss sometimes. Added debug flag to write out skin map over source input. Change-Id: I2caea7592f1c459047aac46627eeb24a94946464
2015-02-11Merge "Make vp9_print_modes_and_motion_vectors() work"Yunqing Wang
2015-02-11Merge "vp9_thread: prefer pthread.h if available"James Zern