1. 13 Feb, 2013 1 commit
  2. 12 Feb, 2013 1 commit
  3. 08 Feb, 2013 2 commits
    • 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
  4. 05 Feb, 2013 3 commits
    • 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
  5. 04 Feb, 2013 1 commit
    • 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
  6. 26 Jan, 2013 1 commit
  7. 24 Jan, 2013 1 commit
    • 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
  8. 23 Jan, 2013 1 commit
    • 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
  9. 10 Jan, 2013 2 commits
  10. 26 Dec, 2012 1 commit
  11. 13 Dec, 2012 1 commit
  12. 08 Dec, 2012 1 commit
    • 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
  13. 07 Dec, 2012 1 commit
    • 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
  14. 06 Dec, 2012 1 commit
    • 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
  15. 04 Dec, 2012 1 commit
  16. 28 Nov, 2012 2 commits
  17. 27 Nov, 2012 1 commit
    • 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
  18. 26 Nov, 2012 1 commit
  19. 25 Nov, 2012 1 commit
  20. 15 Nov, 2012 2 commits
    • John Koleszar's avatar
      support building vp8 and vp9 into a single lib · a9c7597a
      John Koleszar authored
      Change-Id: Ib8f8a66c9fd31e508cdc9caa662192f38433aa3d
      a9c7597a
    • John Koleszar's avatar
      make: flatten object file directories · b72373de
      John Koleszar authored
      Rather than building an object file directory heirarchy matching the
      source tree's layout, rename the object files so that the object
      file name contains the path in the source file tree. The intent here
      is to allow two files in different parts of the source tree to have
      the same name and still not collide when put into an ar archive.
      
      Change-Id: Id627737dc95ffc65b738501215f34a995148c5a2
      b72373de
  21. 14 Nov, 2012 1 commit
    • Marco Paniconi's avatar
      Update to datarate_test. · cd7f6841
      Marco Paniconi authored
      Exlcude key frame from buffer underrun check, and increase
      lowest bitrate in BasicBufferModel.
      Both changes are needed because of a known issue (#495).
      
      Change-Id: If5e994f813d7d5ae870c1a72be404c8f7dbbdf27
      cd7f6841
  22. 07 Nov, 2012 1 commit
    • James Zern's avatar
      Fix variance (signed integer) overflow · 98473443
      James Zern authored
      In the variance calculations the difference is summed and later squared.
      When the sum exceeds sqrt(2^31) the value is treated as a negative when
      it is shifted which gives incorrect results.
      
      To fix this we force the multiplication to be unsigned.
      
      The alternative fix is to shift sum down by 4 before multiplying.
      However that will reduce precision.
      
      For 16x16 blocks the maximum sum is 65280 and sqrt(2^31) is 46340 (and
      change).
      
      This change is based on:
      16982342 Missed some variance casts
      fea3556e Fix variance overflow
      
      Change-Id: I2c61856cca9db54b9b81de83b4505ea81a050a0f
      98473443
  23. 06 Nov, 2012 1 commit
    • James Zern's avatar
      fix test builds · 2e3e6857
      James Zern authored
      s/([vV][pP])8/$19/
      additionally dct.h was removed; declare the _c functions that are used
      in the tests. the TODO for conversion to parameterized tests still
      remains.
      
      Change-Id: I73db9425a57075bbb78a92693ba6b320578981cd
      2e3e6857
  24. 01 Nov, 2012 1 commit
  25. 30 Oct, 2012 1 commit
  26. 27 Oct, 2012 1 commit
  27. 22 Oct, 2012 1 commit
  28. 11 Oct, 2012 1 commit
  29. 08 Oct, 2012 1 commit
    • Yunqing Wang's avatar
      post-proc: deblock filter optimization · 4c53bacc
      Yunqing Wang authored
      1. Algorithm modification:
      Instead of having same filter threshold for a whole frame, now we
      allow the thresholds to be adjusted for each macroblock. In current
      implementation, to avoid excessive blur on background as reported
      in issue480(http://code.google.com/p/webm/issues/detail?id=480), we
      reduce the thresholds for skipped macroblocks.
      
      2. SSE2 optimization:
      As started in issue479(http://code.google.com/p/webm/issues/detail?id=479),
      the filter calculation was adjusted for better performance. The c
      code was also modified accordingly. This made the deblock filter
      2x faster, and the decoder was 1.2x faster overall.
      
      Next, the demacroblock filter will be modified similarly.
      
      Change-Id: I05e54c3f580ccd427487d085096b3174f2ab7e86
      4c53bacc
  30. 04 Oct, 2012 1 commit
  31. 03 Oct, 2012 4 commits
    • Adrian Grange's avatar
      Unit Test for Error Resilience Mode · cc017ca8
      Adrian Grange authored
      This unit test compares the difference in quality with
      error resilience enabled and disabled. The test runs
      for all of the one-pass encoding modes.
      
      The test ensures that the effect of turning on error
      resilience makes less than a 10% difference in PSNR.
      
      Further cases should be added to do a more comprehensive
      test.
      
      Change-Id: I1fc747fc78c9459bc6c74494f4b38308dbed0c32
      cc017ca8
    • Adrian Grange's avatar
      Added handler for PSNR packets to EncoderTest class · e6109dbd
      Adrian Grange authored
      Added a virtual function to handle PSNR packets.
      
      Change-Id: Id2a6372c691a14f19bbeed217a93a9df03e81e75
      e6109dbd
    • Adrian Grange's avatar
      Add initialization and per frame flag members · 4206c6dd
      Adrian Grange authored
      Modified EncoderTest class to have separate member variables
      for initialization time and per-frame.
      
      Change-Id: I08a1901f8f3ec16e45f96297e08e7f6df0f4aa0b
      4206c6dd
    • Adrian Grange's avatar
      Added Reset method to TwopassStatsStore · 30f58b52
      Adrian Grange authored
      The stats buffer needs to be reset between runs of the
      encoder. I added a Reset() function to TwopassStatsStore
      and called it at the beginning of each encode.
      
      This enables us to run multiple encodes which was
      previously not possible since there was no way to reset
      the stats between runs.
      
      Change-Id: Iebb18dab83ba9331f009f764cc858609738a27f9
      30f58b52