1. 05 Feb, 2013 10 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
    • Ronald S. Bultje's avatar
    • Yaowu Xu's avatar
    • Yaowu Xu's avatar
      c9ae73b2
    • Ronald S. Bultje's avatar
      Add SSE3 versions for sad{32x32,64x64}x4d functions. · 58c983d1
      Ronald S. Bultje authored
      Overall encoding about 15% faster.
      
      Change-Id: I176a775c704317509e32eee83739721804120ff2
      58c983d1
    • 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
    • Yaowu Xu's avatar
      rewrite 4x4 idct and fdct · fa36981e
      Yaowu Xu authored
      This commit changes the 4x4 iDCT to use same algorithm & constants as
      other iDCTs. The 4x4 fDCT is also changed to be based on the new iDCT.
      
      Change-Id: Ib1a902693228af903862e1f5a08078c36f2089b0
      fa36981e
    • Scott LaVarnway's avatar
    • Paul Wilkins's avatar
    • Scott LaVarnway's avatar
      Added vp9_short_idct1_32x32_c · 5780c4cb
      Scott LaVarnway authored
      and called this function in vp9_dequant_idct_add_32x32_c when
      eob == 1.  For the test clip used, the decoder performance improved
      by 21+%.  Based on Yaowu's 16 point idct work.
      
      Change-Id: Ib579a90fed531d45777980e04bf0c9b23c093c43
      5780c4cb
  2. 04 Feb, 2013 5 commits
    • Paul Wilkins's avatar
      Re-factor code for rd thresholds. · 3ab53876
      Paul Wilkins authored
      Separate out code to set the main encode speed
      related rd thresholds. Some values changed from
      the initial defaults for various new modes.
      
      Quality test results pending but even the addition
      of some further non-zero defaults helps encode speed
      somewhat in limited testing on derf clips.
      
      Adjustment of thresholds for quality / speed tradeoff
      to follow.
      
      Change-Id: I117ee473157e151a1b93193d5f393449328de20d
      3ab53876
    • Yaowu Xu's avatar
      Added INT16_MIN and INT16_MAX for MSVC builds · dea14332
      Yaowu Xu authored
      These macros were not defined in earlier version of MSVC
      
      Change-Id: I8270a3abb7c6e9ead1931a653d7e41f877a1017b
      dea14332
    • 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
    • Yaowu Xu's avatar
      re-write 8 point idct · 1eb79dc1
      Yaowu Xu authored
      to be consistent with idct16 and idct32.
      
      Change-Id: Ie89dbd32b65c33274b7fecb4b41160fcf1962204
      1eb79dc1
    • Yaowu Xu's avatar
      a couple of minor fixes · ccaaeb4b
      Yaowu Xu authored
      fixed a function prototypes to prevent compiler warnings;
      removed a function not in use;
      un-capitialize "Refstride" to ref_stride
      
      Change-Id: Ib4472b6084f357d96328c6a06e795b6813a9edba
      ccaaeb4b
  3. 01 Feb, 2013 3 commits
    • Yaowu Xu's avatar
      Merge "Changes 16 point idct" into experimental · af4c9d2f
      Yaowu Xu authored
      af4c9d2f
    • Yaowu Xu's avatar
    • Yaowu Xu's avatar
      Changes 16 point idct · 91e0e801
      Yaowu Xu authored
      This commit changes the inverse 16 point dct to use the same algorithm
      as the one for 32 point idct. In fact, now 16 point dct uses the exact
      version of the souce code for even portion of the 32 point idct.
      
      Tests showed current implementation has significant better accuracy
      than the previous version. With this implementation and the minor bug
      fix on forward 16 point dct, encoding tests showed about 0.2% better
      compression of CIF set, test results on std-hd setting pending.
      
      Change-Id: I68224b60c816ba03434e9f08bee147c7e344fb63
      91e0e801
  4. 31 Jan, 2013 3 commits
    • Yaowu Xu's avatar
      fix a small bug in 16 point forward dct · ab1cad9b
      Yaowu Xu authored
      The commit fixes a minor error in 16 point fdct where in a rotation can
      produce result of -1 instead of 0.
      
      Change-Id: I45aac4a52bcd06225c6d04e643547a13e1c1aade
      ab1cad9b
    • Yaowu Xu's avatar
    • Yaowu Xu's avatar
      A fix point implementation of 32x32 idct · 5149d7f7
      Yaowu Xu authored
      This commit changes the 32x32 idct to use integer only. The algorithm
      was taken directly from "A Fast Computational Algorithm for the
      Discrete Cosine Tranform" by W. Chen, et al., which was published in
      IEEE Transaction on Communication Vol. Com.-25 No. 9, 1977. The signal
      flow graph in the original paper is for a 32 point forward dct, the
      current implementation of inverse DCT was done by follow the graph in
      reversed direction.
      
      With this implementation, the 32 point inverse dct contains a 16 point
      inverse dct in its even portion, similarly the 16 point idct further
      contains 8 point and 4 point inverse dcts.
      
      As of patch 4, encoding tests showed there is no compression loss when
      compared against the floating point baseline. Numbers even showed very
      small postives. (cif: .01%, std-hd: .05%).
      
      Change-Id: I2d2d17a424b0b04b42422ef33ec53f5802b0f378
      5149d7f7
  5. 30 Jan, 2013 9 commits
  6. 29 Jan, 2013 8 commits
  7. 28 Jan, 2013 2 commits