1. 05 Aug, 2013 1 commit
  2. 04 Aug, 2013 1 commit
    • Jim Bankoski's avatar
      reworked find_mv_ref · f703f987
      Jim Bankoski authored
      This is an attempt at rewriting vp9_find_mv_refs_idx.   I believe that it gains
      about 1-2% decode speed
      
      Change-Id: Ia5359c94ce9bb43b32652890e605e9a385485c1b
      f703f987
  3. 01 Aug, 2013 1 commit
  4. 31 Jul, 2013 1 commit
    • Dmitry Kovalev's avatar
      Removing get_mi_{row, col} functions. · 9239e965
      Dmitry Kovalev authored
      Passing mi_row and mi_col parameters to functions explicitly. Removing
      unused xd argument from scale_mv function.
      
      Change-Id: Icb4c495ec72d26fb066c14470d3ae0b741fbf18a
      9239e965
  5. 24 Jul, 2013 1 commit
  6. 23 Jul, 2013 1 commit
  7. 13 Jul, 2013 1 commit
  8. 10 Jun, 2013 1 commit
  9. 07 Jun, 2013 3 commits
    • Ronald S. Bultje's avatar
      Don't crash if motion vector ref points to out-of-bounds area. · 363dc6ce
      Ronald S. Bultje authored
      This can only happen if partition is partly out-of-frame, in which
      case the referenced mv is either out-of-frame also (and thus has the
      same value as an already-read one), or it is actually uninitialized,
      in which case we don't want to use it.
      
      Change-Id: Icf39fa4d987c7abcbebb9bbdcdd6311e8fb9d3c9
      363dc6ce
    • Yaowu Xu's avatar
      Specify mv neighborhood for block larger than 8x8 · 8b3ad752
      Yaowu Xu authored
      The new neighorbhood adapts to the shape and size of the block type
      cif +.16%
      stdhd +.13%
      
      Change-Id: I978db58278e9ae3fbd6726ef831bdfc5f5f37d02
      8b3ad752
    • Ronald S. Bultje's avatar
      Change ref frame coding. · 6ef805eb
      Ronald S. Bultje authored
      Code intra/inter, then comp/single, then the ref frame selection.
      Use contextualization for all steps. Don't code two past frames
      in comp pred mode.
      
      Change-Id: I4639a78cd5cccb283023265dbcc07898c3e7cf95
      6ef805eb
  10. 06 Jun, 2013 1 commit
  11. 31 May, 2013 2 commits
    • Paul Wilkins's avatar
      vp9_find_mv_refs_idx change for last frame. · cf61fae8
      Paul Wilkins authored
      Restrict get_matching_candidate() to considering
      mvs at 8x8 and larger sizes for last frame case.
      
      This is to reduce the HW load of using vectors down
      to the 4x4 level from the previous frame.
      
      Change-Id: I6505e610fd63a4e22d67f136aec7905a01b893ba
      cf61fae8
    • Ronald S. Bultje's avatar
      Remove splitmv. · e6485581
      Ronald S. Bultje authored
      We leave it in rdopt.c as a local define for now - this can be removed
      later. In all other places, we remove it, thereby slightly decreasing
      the size of some arrays in the bitstream.
      
      Change-Id: Ic2a9beb97a4eda0b086f62c039d994b192f99ca5
      e6485581
  12. 26 May, 2013 1 commit
    • Ronald S. Bultje's avatar
      Remove splitmv. · 5cac6607
      Ronald S. Bultje authored
      Also do per-partition motion vector referencing in <sb8x8 partitions,
      and adjust mvref finding for sub8x8 partitions.
      
      Change-Id: Id3ed1ed4d2a8910d11d327db6cc63b8eb79f941f
      5cac6607
  13. 16 May, 2013 1 commit
    • Paul Wilkins's avatar
      New inter mode context. · 6ff3eb16
      Paul Wilkins authored
      This patch creates a new inter mode contest that avoids
      a dependence on the reconstructed motion vectors from
      neighboring blocks. This was a change requested by
      a hardware vendor to improve decode performance.
      
      As part of this change I have also made some modifications
      to stats output code (under a flag) to allow accumulation of
      inter mode context flags over multiple clips
      
      Some further changes will be required to accommodate the
      deprecation of the split mv mode over the next few days.
      
      Performance as stands is around -0.25% on derf and
      std-hd but up on the YT and YT-HD sets. With further tuning
      or some adjustment to the context criteria it should be
      possible to make this change broadly neutral.
      
      Change-Id: Ia15cb4470969b9e87332a59c546ae0bd40676f6c
      6ff3eb16
  14. 07 May, 2013 1 commit
    • Jingning Han's avatar
      Merge SB8X8 into the codebase · 776c1482
      Jingning Han authored
      Pull sb8x8 out of experimental list. verified via borg run tests.
      Fixed unit test failures.
      
      Change-Id: I12a4bbd17395930580c048ab68becad1ffe46e76
      776c1482
  15. 01 May, 2013 1 commit
  16. 26 Apr, 2013 1 commit
  17. 19 Apr, 2013 2 commits
    • Paul Wilkins's avatar
      Mv ref candidates cut to 2. · de80da39
      Paul Wilkins authored
      Further simplification of mvref search to return
      only the top two candidates. Distance weights removed
      as the test order reflects distance anyway.
      
      Change-Id: I0518cab7280258fec2058670add4f853fab7b855
      de80da39
    • Paul Wilkins's avatar
      Simplification of MVref search. · 92e8a3f5
      Paul Wilkins authored
      As we are no longer able to sort the candidate
      mvrefs in both encoder and decode and given
      that the cost of explicit signalling has proved
      prohibitive, it no longer makes sense to find more
      than 2 candidates.
      
      This patch:
      
      Modifies and simplifies add_candidate_mv()
      
      Removes the forced addition of a 0 vector in the
      MAX_MV_REF_CANDIDATES-1 position (in preparation
      to reducing MAX_MV_REF_CANDIDATES to 2).
      
      Re-orders the addition of candidates slightly.
      
      This actually gives small gains (circa 0.2% on std-hd)
      
      A subsequent patch will remove NEW_MVREF experiment,
      reduce MAX_MV_REF_CANDIDATES to 2 and remove distance
      weights as these are implicit now in the order.
      
      Change-Id: I3dbe1a6f8a1a18b3c108257069c22a1141a207a4
      92e8a3f5
  18. 15 Apr, 2013 1 commit
  19. 11 Apr, 2013 1 commit
  20. 27 Mar, 2013 1 commit
  21. 25 Mar, 2013 1 commit
    • Dmitry Kovalev's avatar
      Code cleanup. · 3644a5b6
      Dmitry Kovalev authored
      Fixing function arguments alignment, reusing MIN/MAX and clamp functions.
      
      Change-Id: I87dd5a40ffb65b521b8abbf0fccf2f50552c5309
      3644a5b6
  22. 05 Mar, 2013 1 commit
    • Dmitry Kovalev's avatar
      Code cleanup. · 7f99c3c5
      Dmitry Kovalev authored
      Removing redundant 'extern' keywords, fixing formatting and #include order,
      code simplification.
      
      Change-Id: I0e5fdc8009010f3f885f13b5d76859b9da511758
      7f99c3c5
  23. 05 Feb, 2013 1 commit
    • 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
  24. 24 Jan, 2013 2 commits
    • Paul Wilkins's avatar
      Mvref speedup · fcb4a25c
      Paul Wilkins authored
      Quality / decode speed trade off changes.
      Simpler insert method without sort. Quality impact small.
      
      Change-Id: Id0c0941bc508d985405abd06a13ffe7489170b62
      fcb4a25c
    • 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
  25. 08 Jan, 2013 1 commit
  26. 06 Jan, 2013 1 commit
  27. 04 Jan, 2013 1 commit
    • Paul Wilkins's avatar
      Further change to mv reference search. · c6ba3a3d
      Paul Wilkins authored
      This experimental change reorders the search so
      that all possible references that match the target
      reference frame are tested first and these in order
      of distance from the current block. These will usually
      be the highest scoring candidates.
      
      If we do not find enough good candidates this way
      we try non matching cases. These will usually be lower
      scoring candidates.
      
      The change in order together with breakouts when
      we have found enough candidates should reduce
      the computational cost and especially reduce the number
      of sort operations.
      
      Quality Results:
      Std Hd +0.228%, Hd +0.074%, YT +0.046%, derf +0.137%
      
      This effect is probably due to the fact that more distant
      weak candidates are now less likely to get "promoted" over
      near candidates even if they are repeated.
      
      Change-Id: Iec37e77d88a48ad0ee1f315b14327a95d63f81f6
      c6ba3a3d
  28. 05 Dec, 2012 1 commit
    • Paul Wilkins's avatar
      Change to MV reference search. · 4cc657ec
      Paul Wilkins authored
      This patch reduces the cpu cost of the MV ref
      search by only allowing insert for candidates
      that would be in the current top 4.
      
      This could alter the outcome and slightly favors
      near candidates which are tested first but also
      limits the worst case loop count to 4 and means in
      many cases it will drop out and not happen.
      
      Change-Id: Idd795a825f9fd681f30f4fcd550c34c38939e113
      4cc657ec
  29. 29 Nov, 2012 1 commit
    • Deb Mukherjee's avatar
      Fixing 8x8/4x4 ADST for intra modes with tx select · 0742b1e4
      Deb Mukherjee authored
      This patch allows use of 8x8 and 4x4 ADST correctly for Intra
      16x16 modes and Intra 8x8 modes when the block size selected
      is smaller than the prediction mode. Also includes some cleanups
      and refactoring.
      
      Rebase.
      
      Change-Id: Ie3257bdf07bdb9c6e9476915e3a80183c8fa005a
      0742b1e4
  30. 28 Nov, 2012 1 commit
  31. 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
  32. 16 Nov, 2012 3 commits
    • Paul Wilkins's avatar
      Further experimentation with the mode context · a57dbd95
      Paul Wilkins authored
      Experiments with a larger set of contexts and some
      clean up to replace magic numbers regarding the
      number of contexts.
      
      The starting values and rate of backwards adaption
      are still suspect and based on a small set of tests.
      Added forwards adjustment of probabilities.
      
      The net result of adding the new context and forward
      update is small compared to the old context from the
      legacy find_near function.  (down a little on derf but
      up by a similar amount for HD)
      
      HOWEVER.... with the new context and forward update
      the impact of disabling the reverse update (which may be
      necessary in some use cases to facilitate parallel decoding)
      is hugely reduced.
      
      For the old context without forward update, the impact of
      turning off reverse update (Experiment was with SB off) was
      Derf - 0.9, Yt -1.89, ythd -2.75 and sthd -8.35. The impact was
      mainly at low data rates.
      
      With the new context and forward update enabled the impact
      for all the test sets was no more than 0.5-1% (again most at
      the low end).
      
      Change-Id: Ic751b414c8ce7f7f3ebc6f19a741d774d2b4b556
      a57dbd95
    • Yaowu Xu's avatar
      changed mv candidate search for superblocks · 415e6bff
      Yaowu Xu authored
      added additional motion vectors at close neighborhood of a superblock
      to the list of candiate motion vectors, and removed a couple that are
      further away.
      
      The change helped std-hd set about .8% (all metrics) and smaller gain
      for derf set.
      
      Change-Id: Iaa69b98614db43420ed3fd4738d0ca5587b90045
      415e6bff
    • Deb Mukherjee's avatar
      Compound inter-intra experiment · 0c917fc9
      Deb Mukherjee authored
      A patch on compound inter-intra prediction.
      
      In compound inter-intra prediction, a new predictor for
      16x16 inter coded MBs are obtained by combining a single
      inter predictor with a 16x16 intra predictor, in a manner
      that the weight varies with distance from the top/left
      boundary. The current search strategy is to combine the best
      inter mode with the best intra mode obtained independently.
      
      Results so far:
      
      derf +0.31%
      yt +0.32%
      std-hd +0.35%
      hd +0.42%
      
      It is conceivable that the results would improve somewhat
      with a more thorough search strategy where all intra modes
      are searched given the best mv, or even a joint search for
      the best mv and the best intra mode.
      
      Change-Id: I7951f1ed0d6eb31ca32ac24d120f1585bcd8d79b
      0c917fc9
  33. 12 Nov, 2012 1 commit
    • Paul Wilkins's avatar
      New inter mode context · 2669f42b
      Paul Wilkins authored
      This change is a fix / extension of the newbestrefmv
      experiment. As such it is presented without IFDEF.
      
      The change creates a new context for coding inter modes
      in vp9_find_mv_refs(). This replaces the context that
      was previously calculated in vp9_find_near_mvs().
      The new context is unoptimized and not necessarily
      any better at this stage (results pending), but eliminates
      the need for a legacy call to vp9_find_near_mvs().
      Based on numbers from Scott, this could help decode
      speed by several %.
      
      In a later patch I will add support for forward update of
      context (assuming this helps) and refine the context as
      necessary.
      
      Change-Id: I1cd991b82c8df86cc02237a34185e6d67510698a
      2669f42b