- Mar 13, 2013
-
-
John Koleszar authored
The superframe index marker byte carries data in the lower 5 bits. Only the upper 3 should be used as part of the mask to detect it. By masking with 0xf0, the previous code was incorrect for frames over 65k bytes. Change-Id: I6248889f5af227457f359a56b2348ef6db87a3b4
-
- Mar 05, 2013
-
-
John Koleszar authored
Improved coding performance made this test fail. Adjust the threshold so that it passes again. A more stable metric is an open TODO. Change-Id: I56e18749ced48123ee2488888a3eed631759912b
-
John Koleszar authored
A 'superframe' is a group of frames that share the same PTS, but have a defined decoding order. This commit adds the ability to append an index to such a group of frames, allowing for random access to the constituent frames. This could be useful for frame-level parallelism or partial decoding in a multilayer scenario. Decoding the stream serially without such an index should work as a fallback, and VP9/TestSuperframeIndexIsOptional verifies that. Change-Id: Idff83b7560e1a7077d8fb067bfbc45b567e78b1c
-
- Mar 02, 2013
-
-
John Koleszar authored
Update the function prototypes to match between VP9 and VP8. Change-Id: If58965073989e87df3b62b67a030ec6ce23ca04f
-
John Koleszar authored
Change-Id: I06b5ba5c457944cfa4cd9f53c3bd8cda132439c2
-
- Mar 01, 2013
-
-
Ronald S. Bultje authored
Change-Id: I7977694223521404fc69f29ae2cff03e36e87299
-
- Feb 27, 2013
-
-
John Koleszar authored
Since the 8-tap lowpass filter is non-interpolating, the results are different between applying it at whole-pel values and not. This means that 1D-only versions are requried to be implemented, as opposed to being an optimization of the 2D case. Calling the 2D filter instead of the horizontal-only filter is not equivalent in this case. Update the test to pass invalid filters to the unused stage of the 1D-only calls, to verify they're unused. Change-Id: Idc1c490f059adadd4cc80dbe770c1ccefe628b0a
-
John Koleszar authored
Updates the convolve test to verify that all filters match the reference implementation. This verifies commit 30f866f4, which fixed some problems with the SSE3 version of the filters for the vp9_sub_pel_filters_8s and vp9_sub_pel_filters_8lp banks due to overflow and order of operations. Change-Id: I6b5fe1a41bc20062e2e64633b1355ae58c9c592c
-
John Koleszar authored
Fixes a bug in vp9_set_internal_size() that prevented returning to the unscaled state. Updated the ResizeInternalTest to scale both down and up. Added a check that all frames are within 2.5% of the quality of the initial keyframe. Change-Id: I3b7ef17cdac144ed05b9148dce6badfa75cff5c8
-
John Koleszar authored
This avoids duplicating all the filters twice. Includes fixups to the convolve routines and associated tests to make this work. Change-Id: I922f86021594e55072ddb63b42b2313605db6e00
-
John Koleszar authored
This patch allows coding frames using references of different resolution, in ZEROMV mode. For compound prediction, either reference may be scaled. To test, I use the resize_test and enable WRITE_RECON_BUFFER in vp9_onyxd_if.c. It's also useful to apply this patch to test/i420_video_source.h: --- a/test/i420_video_source.h +++ b/test/i420_video_source.h @@ -93,6 +93,7 @@ class I420VideoSource : public VideoSource { virtual void FillFrame() { // Read a frame from input_file. + if (frame_ != 3) if (fread(img_->img_data, raw_sz_, 1, input_file_) == 0) { limit_ = frame_; } This forces the frame that the resolution changes on to be coded with no motion, only scaling, and improves the quality of the result. Change-Id: I1ee75d19a437ff801192f767fd02a36bcbd1d496
-
- Feb 26, 2013
-
-
John Koleszar authored
Ensure that all inter prediction goes through a common code path that takes scaling into account. Removes a bunch of duplicate 1st/2nd predictor code. Also introduces a 16x8 mode for 8x8 MVs, similar to the 8x4 trick we were doing before. This has an unexpected effect with EIGHTTAP_SMOOTH, so it's disabled in that case for now. Change-Id: Ia053e823a8bc616a988a0af30452e1e75a739cba
-
Yaowu Xu authored
Also 1. Removed the test code for fDCT from the iDCT test. 2. changed the criteria of round trip error to be below 1/block, this is quite strict comparing to smaller transforms when size differences are accounted for. Change-Id: Idb46a6380b04c93fc8e2845c75f5a850366b0090
-
- Feb 25, 2013
-
-
Yaowu Xu authored
This commit added pre/post scaling for first half of fDCT16x16 to reduce error, by simulation of 100,000 blocks for random inputs, the average sse reduced from 2.1/block to 0.0498/block. also enabled tests for 16x16 fDCT and iDCT Change-Id: Id2a95f0464c6dd4118797d456237ae90274c0f02
-
- Feb 23, 2013
-
-
Yaowu Xu authored
The commit added a final rounding choice for 8x8 forward dct to get rid of a sign bias at DC position and improve the accuracry in term of round trip error for 8x8 fDCT/iDCT. This commit also enabled forward 8x8 dct test. Change-Id: Ib67f99b0a24d513e230c7812bc04569d472fdc50
-
James Zern authored
Change-Id: I4e94ee2c4e2360d6a11a454c323f2899c1bb6f72
-
- Feb 22, 2013
-
-
James Zern authored
src_/dst_/dst_c_ are heap allocated, use the allocation size rather than sizeof(var) Change-Id: I3335ad487dc9b154cdf212891d1d74c812eff060
-
Yaowu Xu authored
1. changed 4x4 test name to Vp9Fdct4x4Test to be consistent 2. remove forward 8x8 dct test code from idct8x8_test.cc 3. temporarily disable other forward dct tests to allow fdct work in progress Change-Id: I566aeed9c7c34da5a206190aa7d0e847a4008b36
-
- Feb 13, 2013
-
-
Paul Wilkins authored
Removal of experiment to simplify code base for other changes. Change-Id: If0a33952504558511926ad212bc311fc2bffb19a
-
- Feb 12, 2013
-
-
Ronald S. Bultje authored
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
-
- Feb 08, 2013
-
-
John Koleszar authored
Tests that the external interface to set the internal codec scaling works as expected. Also updates the test to pull the height from the decoded frame size rather than parsing the keyframe header, in anticipation of allowing resolution changes on non-keyframes. Change-Id: I3ed92117d8e5288fbbd1e7b618f2f233d0fe2c17
-
John Koleszar authored
This commit adds the 8 tap SSSE3 subpixel filters back into the code underneath the convolve API. The C code is still called for 4x4 blocks, as well as compound prediction modes. This restores the encode performance to be within about 8% of the baseline. Change-Id: Ife0d81477075ae33c05b53c65003951efdc8b09c
-
- Feb 05, 2013
-
-
Ronald S. Bultje authored
This patch adds column-based tiling. The idea is to make each tile independently decodable (after reading the common frame header) and also independendly encodable (minus within-frame cost adjustments in the RD loop) to speed-up hardware & software en/decoders if they used multi-threading. Column-based tiling has the added advantage (over other tiling methods) that it minimizes realtime use-case latency, since all threads can start encoding data as soon as the first SB-row worth of data is available to the encoder. There is some test code that does random tile ordering in the decoder, to confirm that each tile is indeed independently decodable from other tiles in the same frame. At tile edges, all contexts assume default values (i.e. 0, 0 motion vector, no coefficients, DC intra4x4 mode), and motion vector search and ordering do not cross tiles in the same frame. t log Tile independence is not maintained between frames ATM, i.e. tile 0 of frame 1 is free to use motion vectors that point into any tile of frame 0. We support 1 (i.e. no tiling), 2 or 4 column-tiles. The loopfilter crosses tile boundaries. I discussed this briefly with Aki and he says that's OK. An in-loop loopfilter would need to do some sync between tile threads, but that shouldn't be a big issue. Resuls: with tiling disabled, we go up slightly because of improved edge use in the intra4x4 prediction. With 2 tiles, we lose about ~1% on derf, ~0.35% on HD and ~0.55% on STD/HD. With 4 tiles, we lose another ~1.5% on derf ~0.77% on HD and ~0.85% on STD/HD. Most of this loss is concentrated in the low-bitrate end of clips, and most of it is because of the loss of edges at tile boundaries and the resulting loss of intra predictors. TODO: - more tiles (perhaps allow row-based tiling also, and max. 8 tiles)? - maybe optionally (for EC purposes), motion vectors themselves should not cross tile edges, or we should emulate such borders as if they were off-frame, to limit error propagation to within one tile only. This doesn't have to be the default behaviour but could be an optional bitstream flag. Change-Id: I5951c3a0742a767b20bc9fb5af685d9892c2c96f
-
John Koleszar authored
This commit introduces a new convolution function which will be used to replace the existing subpixel interpolation functions. It is much the same as the existing functions, but allows for changing the filter kernel on a per-pixel basis, and doesn't bake in knowledge of the filter to be applied or the size of the resulting block into the function name. Replacing the existing subpel filters will come in a later commit. Change-Id: Ic9a5615f2f456cb77f96741856fc650d6d78bb91
-
Yaowu Xu authored
for idct 16x16 unit test Change-Id: I51da9405c3a4d7bb3f4cdf062aaccaa90b33dca4
-
- Feb 04, 2013
-
-
Yaowu Xu authored
test for forward transform will be enabled later after re-do forward transform Change-Id: Ie7c7cf88baf7ecbebbe52fe027e1c3b33d3b9d49
-
- Jan 26, 2013
-
-
John Koleszar authored
The previous parameters did not pass with VP8. Change-Id: I1505171fbd713d21029541828ebdbe4c7dea79b8
-
- Jan 24, 2013
-
-
Deb Mukherjee authored
Adds an error-resilient mode where frames can be continued to be decoded even when there are errors (due to network losses) on a prior frame. Specifically, backward updates are turned off and probabilities of various symbols are reset to defaults at the beginning of each frame. Further, the last frame's mvs are not used for the mv reference list, and the sorting of the initial list based on search on previous frames is turned off as well. Also adds a test where an arbitrary set of frames are skipped from decoding to simulate errors. The test verifies (1) that if the error frames are droppable - i.e. frame buffer updates have been turned off - there are no mismatch errors for the remaining frames after the error frames; and (2) if the error-frames are non droppable, there are not only no decoding errors but the mismatch PSNR between the decoder's version of the post-error frames and the encoder's version is at least 20 dB. Change-Id: Ie6e2bcd436b1e8643270356d3a930e8989ff52a5
-
- Jan 23, 2013
-
-
John Koleszar authored
This commit starts to convert the tests to a system where the codec to be used is provided by a factory object. Currently no tests are instantiated for VP9 since they all fail for various reasons, but it was verified that they're called and the correct codec is instantiated. Change-Id: Ia7506df2ca3a7651218ba3ca560634f08c9fbdeb
-
- Jan 10, 2013
-
-
Ronald S. Bultje authored
Change-Id: Id9474a1686daebfa3d004e21823bf1888ec9e534
-
Ronald S. Bultje authored
Change-Id: I615651e4c7b09e576a341ad425cf80c393637833
-
- Dec 26, 2012
-
-
John Koleszar authored
Various fixups to resolve issues when building vp9-preview under the more stringent checks placed on the experimental branch. Change-Id: I21749de83552e1e75c799003f849e6a0f1a35b07
-
- Dec 13, 2012
-
-
Yaowu Xu authored
not defined in msvc Change-Id: I8fe8462a0c2f636d8b43c0243832ca67578f3665
-
- Dec 08, 2012
-
-
John Koleszar authored
In addition to allowing tests to use the RTCD-enabled functions (perhaps transitively) without having run a full encode/decode test yet, this fixes a linking issue with Apple's G++ whereby the Common symbols (the function pointers themselves) wouldn't be resolved. Fixing this linking issue is the primary impetus for this patch, as none of the tests exercise the RTCD functionality except through the main API. Change-Id: I12aed91ca37a707e5309aa6cb9c38a649c06bc6a
-
- Dec 07, 2012
-
-
Ronald S. Bultje authored
This adds Debargha's DCT/DWT hybrid and a regular 32x32 DCT, and adds code all over the place to wrap that in the bitstream/encoder/decoder/RD. Some implementation notes (these probably need careful review): - token range is extended by 1 bit, since the value range out of this transform is [-16384,16383]. - the coefficients coming out of the FDCT are manually scaled back by 1 bit, or else they won't fit in int16_t (they are 17 bits). Because of this, the RD error scoring does not right-shift the MSE score by two (unlike for 4x4/8x8/16x16). - to compensate for this loss in precision, the quantizer is halved also. This is currently a little hacky. - FDCT and IDCT is double-only right now. Needs a fixed-point impl. - There are no default probabilities for the 32x32 transform yet; I'm simply using the 16x16 luma ones. A future commit will add newly generated probabilities for all transforms. - No ADST version. I don't think we'll add one for this level; if an ADST is desired, transform-size selection can scale back to 16x16 or lower, and use an ADST at that level. Additional notes specific to Debargha's DWT/DCT hybrid: - coefficient scale is different for the top/left 16x16 (DCT-over-DWT) block than for the rest (DWT pixel differences) of the block. Therefore, RD error scoring isn't easily scalable between coefficient and pixel domain. Thus, unfortunately, we need to compute the RD distortion in the pixel domain until we figure out how to scale these appropriately. Change-Id: I00386f20f35d7fabb19aba94c8162f8aee64ef2b
-
- Dec 06, 2012
-
-
John Koleszar authored
In addition to allowing tests to use the RTCD-enabled functions (perhaps transitively) without having run a full encode/decode test yet, this fixes a linking issue with Apple's G++ whereby the Common symbols (the function pointers themselves) wouldn't be resolved. Fixing this linking issue is the primary impetus for this patch, as none of the tests exercise the RTCD functionality except through the main API. Change-Id: I12aed91ca37a707e5309aa6cb9c38a649c06bc6a
-
- Dec 04, 2012
-
-
Yaowu Xu authored
Change-Id: Ie80597221bee494679ae2ba50cca22dea2609cba
-
- Nov 28, 2012
-
-
James Zern authored
Change-Id: I69d00bfd1b10c03581838b15cd9a6dd66f4fa416
-
John Koleszar authored
This reverts commit b72373de. Change-Id: Ic1601160e11df1a018ef12da25967cfb5eebd5ba
-
- Nov 27, 2012
-
-
John Koleszar authored
Support for gyp which doesn't support multiple objects in the same static library having the same basename. Change-Id: Ib947eefbaf68f8b177a796d23f875ccdfa6bc9dc
-