Skip to content
Snippets Groups Projects
  1. Mar 13, 2013
    • John Koleszar's avatar
      fix superframe index marker masks · bd9cd9a1
      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
      bd9cd9a1
  2. Mar 05, 2013
    • John Koleszar's avatar
      Update ResizeInternalTest threshold · 93e10c8e
      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
      93e10c8e
    • John Koleszar's avatar
      Add 'superframe' index · 522d4bf8
      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
      522d4bf8
  3. Mar 02, 2013
  4. Mar 01, 2013
  5. Feb 27, 2013
    • John Koleszar's avatar
      convolve test: validate 1D filters are 1D · 04c24078
      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
      04c24078
    • John Koleszar's avatar
      Run all filters through convolve test · 557a1b20
      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
      557a1b20
    • John Koleszar's avatar
      Test upscaling as well as downscaling · b683eecf
      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
      b683eecf
    • John Koleszar's avatar
      Use 256-byte aligned filter tables · 6fd7dd1a
      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
      6fd7dd1a
    • John Koleszar's avatar
      Spatial resamping of ZEROMV predictors · eb939f45
      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
      eb939f45
  6. Feb 26, 2013
    • John Koleszar's avatar
      Refactor inter recon functions to support scaling · 6a4f708c
      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
      6a4f708c
    • Yaowu Xu's avatar
      Enable 32x32 dct tests · 3dbc78b1
      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
      3dbc78b1
  7. Feb 25, 2013
    • Yaowu Xu's avatar
      optimize forward 16x16 DCT for accuracy · 499fe05d
      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
      499fe05d
  8. Feb 23, 2013
    • Yaowu Xu's avatar
      optimize 8x8 fdct rounding for accuracy · 22012ee9
      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
      22012ee9
    • James Zern's avatar
      add vp8 variance test · 1711cf2d
      James Zern authored
      Change-Id: I4e94ee2c4e2360d6a11a454c323f2899c1bb6f72
      1711cf2d
  9. Feb 22, 2013
    • James Zern's avatar
      sixtap_predict_test: fix sizes passed to memset · 540997af
      James Zern authored
      src_/dst_/dst_c_ are heap allocated, use the allocation size rather than
      sizeof(var)
      
      Change-Id: I3335ad487dc9b154cdf212891d1d74c812eff060
      540997af
    • Yaowu Xu's avatar
      changes related fdct/idct tests · 4e2697f5
      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
      4e2697f5
  10. Feb 13, 2013
  11. Feb 12, 2013
  12. Feb 08, 2013
    • John Koleszar's avatar
      Adds a test for the VP8E_SET_SCALEMODE control · 88f99f4e
      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
      88f99f4e
    • John Koleszar's avatar
      Restore SSSE3 subpixel filters in new convolve framework · 29d47ac8
      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
      29d47ac8
  13. Feb 05, 2013
    • Ronald S. Bultje's avatar
      [WIP] Add column-based tiling. · 1407bdc2
      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
      1407bdc2
    • John Koleszar's avatar
      Add 8-tap generic convolver · 5ca6a366
      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
      5ca6a366
    • Yaowu Xu's avatar
      fix a build issue with MSVC on windows · 77f889b2
      Yaowu Xu authored
      for idct 16x16 unit test
      
      Change-Id: I51da9405c3a4d7bb3f4cdf062aaccaa90b33dca4
      77f889b2
  14. Feb 04, 2013
    • Yaowu Xu's avatar
      enable 16x16 iDCT unit test · ebd58089
      Yaowu Xu authored
      test for forward transform will be enabled later after re-do forward
      transform
      
      Change-Id: Ie7c7cf88baf7ecbebbe52fe027e1c3b33d3b9d49
      ebd58089
  15. Jan 26, 2013
  16. Jan 24, 2013
    • Deb Mukherjee's avatar
      Adds an error-resilient mode with test · 01cafaab
      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
      01cafaab
  17. Jan 23, 2013
    • John Koleszar's avatar
      Support multiple codecs in test infrastructure · 706cafe3
      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
      706cafe3
  18. Jan 10, 2013
  19. Dec 26, 2012
  20. Dec 13, 2012
  21. Dec 08, 2012
    • John Koleszar's avatar
      libvpx_test: ensure rtcd init functions are called · 6f014dc5
      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
      6f014dc5
  22. Dec 07, 2012
    • Ronald S. Bultje's avatar
      32x32 transform for superblocks. · c456b35f
      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
      c456b35f
  23. Dec 06, 2012
    • John Koleszar's avatar
      libvpx_test: ensure rtcd init functions are called · 434336b0
      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
      434336b0
  24. Dec 04, 2012
  25. Nov 28, 2012
  26. Nov 27, 2012
    • John Koleszar's avatar
      Add vp9_ prefix to all vp9 files · fcccbcbb
      John Koleszar authored
      Support for gyp which doesn't support multiple objects in the same
      static library having the same basename.
      
      Change-Id: Ib947eefbaf68f8b177a796d23f875ccdfa6bc9dc
      fcccbcbb
Loading