summaryrefslogtreecommitdiff
path: root/vp9/encoder
AgeCommit message (Collapse)Author
2013-02-20Merge "Fixed the buffer overflow issue" into experimentalJingning Han
2013-02-20Fixed the buffer overflow issueJingning Han
The issue that potentially broke the encoding process was due to the fact that the length of token link is calculated from the total number of tokens coded, while it is possible, in high bit-rate setting, this length is greater than the buffer length initially assigned to the cpi->tok. This patch increases the initially allocated buffer length assigned to cpi->tok from (mb_rows * mb_cols * 24 * 16) to (mb_rows * mb_cols * (1 + 24 * 16)). It resolves the buffer overflow problem. Change-Id: I8661a8d39ea0a3c24303e3f71a170787a1d5b1df
2013-02-20Merge "Merge lossless experiment" into experimentalYaowu Xu
2013-02-20Merge lossless experimentYaowu Xu
Change-Id: I7b7b8d4fda3a23699e0c920d727f8c15d37d43aa
2013-02-20Entropy stats output code.Paul Wilkins
Fixes to make Entropy stats code work again Change-Id: I62e380481a4eb4c170076ac6ab36f0c2b203e914
2013-02-19Merge "Minor cosmetic cleanups." into experimentalRonald S. Bultje
2013-02-19Merge "Prevent filling transform size cache with uninitialized values." into ↵Ronald S. Bultje
experimental
2013-02-19Use lossless for Q0Yaowu Xu
The commit changes the coding mode to lossless whenever the lowest quantizer is choosen. As expected, test results showed no difference for cif and std-hd set where Q0 is rarely used. For yt and yt-hd set, Q0 is used for a number of clips, where this commit helped a lot in the high end. Average over all clips in the sets: yt: 2.391% 1.017% 1.066% hd: 1.937% .764% .787% Change-Id: I9fa9df8646fd70cb09ffe9e4202b86b67da16765
2013-02-15Minor cosmetic cleanups.Ronald S. Bultje
Change-Id: I13d8ae754827368755575dd699a087b3b11f5b16
2013-02-15Prevent filling transform size cache with uninitialized values.Ronald S. Bultje
The 32x32 value in case of splitmv was uninitialized. this leads to all kind of erratic behaviour down the line. Also fill in dummy values for superblocks in keyframes (the values are currently unused, but we run into integer overflows anyway, which makes detecting bad cases harder). Lastly, in case we did not find any RD value at all, don't set tx_diff to INT_MIN, but instead set it to zero (since if we couldn't find a mode, it's unlikely that any particular transform would have made that worse or better; rather, it's likely equally bad for all tx_sizes). Change-Id: If236fd3aa2037e5b398d03f3b1978fbbc5ce740e
2013-02-15Merge "Remove Y2 and Y-no-DC token types from the bitstream." into experimentalRonald S. Bultje
2013-02-15Fixed a subtle issue that breaks encoding processJingning Han
This issue breaks the encoding process of the codebase. The effect emerges only in particular test sequence at certain bit-rates and frame limits. Change-Id: I02e080f2a49624eef9a21c424053dc2a1d902452
2013-02-15Remove Y2 and Y-no-DC token types from the bitstream.Ronald S. Bultje
Change-Id: I7a5314daca993d46b8666ba1ec2ff3766c1e5042
2013-02-15Remove y2dc/ac Q delta values from the bitstream.Ronald S. Bultje
Since there is no Y2, these values are always zero. This changes the bitstream results slightly, hence a separate commit. Change-Id: I2f838f184341868f35113ec77ca89da53c4644e0
2013-02-15Remove some Y2-related code.Ronald S. Bultje
Change-Id: I4f46d142c2a8d1e8a880cfac63702dcbfb999b78
2013-02-14Merge "Moved vp9_get_coef_band to header file" into experimentalJohn Koleszar
2013-02-14Moved vp9_get_coef_band to header fileScott LaVarnway
allowing the compiler to inline. Change-Id: I66e5caf5e7fefa68a223ff0603aa3f9e11e35dbb
2013-02-14Merge "Rewrote fdct16x16" into experimentalYaowu Xu
2013-02-14Merge "Abstract selection of coef band." into experimentalPaul Wilkins
2013-02-13Rewrote fdct16x16Yunqing Wang
Used same algorithm as others. Change-Id: Ifdac560762aec9735cb4bb6f1dbf549e415c38a0
2013-02-13Add support for tile rows.Ronald S. Bultje
These allow sending partial bitstream packets over the network before encoding a complete frame is completed, thus lowering end-to-end latency. The tile-rows are not independent. Change-Id: I99986595cbcbff9153e2a14f49b4aa7dee4768e2
2013-02-13Abstract selection of coef band.Paul Wilkins
This patch abstracts the selection of the coefficient band context into a function as a precursor to further experiments with the coefficient context. It also removes the large per TX size coefficient band structures and uses a single matrix for all block sizes within the test function. This may have an impact on quality (results to follow) but is only an intermediate step in the process of redefining the context. Also the quality impact will be larger initially because the default tables will be out of step with the new banding. In particular the 4x4 will in this case only use 7 bands. If needed we can add back block size dependency localized within the function, but this can follow on after the other changes to the definition of the context. Change-Id: Id7009c2f4f9bb1d02b861af85fd8223d4285bde5
2013-02-13Fixed encoder decoder mismatch.Paul Wilkins
Reverted part of change I19981d1ef0b33e4e5732739574f367fe82771a84 That gives rise to an enc/dec mismatch. As things stand the memsets are still needed. Change-Id: I9fa076a703909aa0c4da0059ac6ae19aa530db30
2013-02-13Abstract the selection of coefficient context.Paul Wilkins
This is an initial step to facilitate experimentation with changes to the prior token context used to code coefficients to take better account of the energy of preceding tokens. This patch merely abstracts the selection of context into two functions and does not alter the output. Change-Id: I117fff0b49c61da83aed641e36620442f86def86
2013-02-13Merge "Remove NEWCOEFCONTEXT experiment." into experimentalPaul Wilkins
2013-02-13Merge "enable bitstream lossless support" into experimentalYaowu Xu
2013-02-13Merge "fix the lossless experiment" into experimentalYaowu Xu
2013-02-13enable bitstream lossless supportYaowu Xu
1. Added a bit in frame header to to indicate if a frame is encoded in lossless mode, so decoder does not make the decision based on Q0 2. Minor changes to make sure that lossy coding works same as when the lossless experiment is not enabled. 3. Renamed function pointers for transforms to be consistent, using prefix fwd_txm and inv_txm for forward and inverse respectively To encode in lossless mode, using "--lossless=1 --min-q=0 --max-q=0" with vpxenc. Change-Id: Ifae53b26d2ffbe378d707e29d96817b8a5e6c068
2013-02-13fix the lossless experimentYaowu Xu
Change-Id: I95acfc1417634b52d344586ab97f0abaa9a4b256
2013-02-13Remove NEWCOEFCONTEXT experiment.Paul Wilkins
Removal of the NEWCOEFCONTEXT experiment to reduce code clutter and make it easier to experiment with some other changes to the coefficient coding context. Change-Id: Icd17b421384c354df6117cc714747647c5eb7e98
2013-02-13Removal of Hybrid DWT/DCT experiment.Paul Wilkins
Removal of experiment to simplify code base for other changes. Change-Id: If0a33952504558511926ad212bc311fc2bffb19a
2013-02-12Merge "Faster vp9_regular_quantize_b_8x8." into experimentalChristian Duvivier
2013-02-12Faster vp9_regular_quantize_b_8x8.Christian Duvivier
A couple of scalar optimizations speeding up quantization by about 1.6x. Overall encoder speedup is around 3%. Change-Id: I19981d1ef0b33e4e5732739574f367fe82771a84
2013-02-12Merge "Rewrote fdct8x8" into experimentalYunqing Wang
2013-02-12Merge "Replace as_mv struct with array" into experimentalJohn Koleszar
2013-02-12Add tile column size limits (256 pixels min, 4096 pixels max).Ronald S. Bultje
This is after discussion with the hardware team. Update the unit test to take these sizes into account. Split out some duplicate code into a separate file so it can be shared. Change-Id: I8311d11b0191d8bb37e8eb4ac962beb217e1bff5
2013-02-11Rewrote fdct8x8Yunqing Wang
Use consistent algorithm. Change-Id: Ib8484821ebc454b9d3380a3d6571798decd037f3
2013-02-11Merge "butterfly inverse 4x4 ADST" into experimentalJingning Han
2013-02-11Merge "Integerization of dct32x32" into experimentalYunqing Wang
2013-02-11butterfly inverse 4x4 ADSTJingning Han
fixed format issues. Implement the inverse 4x4 ADST using 9 multiplications. For this particular dimension, the original ADST transform can be factorized into simpler operations, hence is retained. Change-Id: Ie5d9749942468df299ab74e90d92cd899569e960
2013-02-11Merge "Port sadNxNx4d functions to x86inc.asm." into experimentalRonald S. Bultje
2013-02-11Change rd thresholds and add speed trade off flags.Paul Wilkins
Experimental tweaks to various thresholds to measure quality / speed trade off. Add flag that allows static segmentation to be turned off and disables it unless in the second pass of a two pass encode. Change-Id: I219702ffe858412a83db801cbbbd869924b8c61b
2013-02-09Merge "Nearest / Zero Mv default entropy tweak." into experimentalPaul Wilkins
2013-02-08Replace as_mv struct with arrayJohn Koleszar
Replace as_mv.{first, second} with a two element array, so that they can easily be processed with an index variable. Change-Id: I1e429155544d2a94a5b72a5b467c53d8b8728190
2013-02-08Merge "Pass macroblock index to pick inter functions" into experimentalJohn Koleszar
2013-02-08Port sadNxNx4d functions to x86inc.asm.Ronald S. Bultje
Change-Id: Ic639f5742f7a007753d7a3fa5c66235172eb31d8
2013-02-08Add sad64x64 and sad32x32 SSE2 versions.Ronald S. Bultje
Also port the 4x4, 16x16, 8x16 and 16x8 versions to x86inc.asm; this makes them all slightly faster, particularly on x86-64. Remove SSE3 sad16x16 version, since the SSE2 version is now faster. About 1.5% overall encoding speedup. Change-Id: Id4011a78cce7839f554b301d0800d5ca021af797
2013-02-08Make cost_coeffs() more efficient.Ronald S. Bultje
Cache the constant offset in one variable to prevent re-loading that in each loop iteration, and mark the function as inline so we can use the fact that the transform size is always known in the caller. Almost 1% faster encoding overall. Change-Id: Id78325a60b025057d8f4ecd9003a74086ccbf85a
2013-02-08Pass macroblock index to pick inter functionsJohn Koleszar
Pass the current mb row and column around rather than the recon_yoffset and recon_uvoffset, since those offsets will change from predictor to predictor, based on the reference frame selection. Change-Id: If3f9df059e00f5048ca729d3d083ff428e1859c1
2013-02-08Merge changes Icd1a2a5a,I204d17a1,I3ed92117 into experimentalJohn Koleszar
* changes: Initial support for resolution changes on P-frames Avoid allocating memory when resizing frames Adds a test for the VP8E_SET_SCALEMODE control