1. 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
  2. 03 May, 2013 1 commit
    • Adrian Grange's avatar
      Extend number of reference buffers to 8. · d7eea782
      Adrian Grange authored
      The number of reference buffers is extended to 8 and
      a reference sign-bias added for the LAST_FRAME.
      
      Whilst the number of reference buffers used by an
      individual frame remains unchanged at 3, these may
      now be selected from 8 possible buffers.
      
      Change-Id: I2d247b9c1c2b3a339d6c9fac125e81ba373f75a7
      d7eea782
  3. 30 Apr, 2013 1 commit
    • Ronald S. Bultje's avatar
      sb8x8 integration in rd loop. · d068d869
      Ronald S. Bultje authored
      Work-in-progress, not yet ready for review. TODO items:
      - bitstream writing (encoder) and reading (decoder)
      - decoder reconstruction
      
      Change-Id: I5afb7284e7e0480847b47cd0097cb469433c9081
      d068d869
  4. 26 Apr, 2013 1 commit
  5. 25 Apr, 2013 1 commit
  6. 24 Apr, 2013 2 commits
    • Jingning Han's avatar
      Move sbsegment out of experimental list · b0e3b3df
      Jingning Han authored
      Move rectangular superblock coding out of experimental list.
      
      Change-Id: I96c37547d122330d666a67b4bf577ae54547857f
      b0e3b3df
    • Jingning Han's avatar
      Contextual entropy coding of partition syntax · ff2b8aa2
      Jingning Han authored
      This commit enables selecting probability models for recursive block
      partition information syntax, depending on its above/left partition
      information, as well as the current block size. These conditional
      probability models are reasonably stationary and consistent across
      frames, hence the backward adaptive approach is used to maintain and
      update the contextual models.
      
      It achieves coding performance gains (on top of enabling rectangular
      block sizes):
      derf:   0.242%
      yt:     0.391%
      hd:     0.376%
      stdhd:  0.645%
      
      Change-Id: Ie513d9673337f0d27abd65fb566b711d0844ec2e
      ff2b8aa2
  7. 23 Apr, 2013 2 commits
  8. 19 Apr, 2013 2 commits
    • Scott LaVarnway's avatar
      Eliminated prev_mip memsets/memcpys · 9662531d
      Scott LaVarnway authored
      For 1080 material, this buffer is currently 2,270,928 bytes.  This patch swaps
      ptrs instead of copying and uses the last show_frame flag instead of setting
      the entire buffer to zero.  For the test clip used, the decoder improved by up
      to 1%.
      
      
      Change-Id: I686825712ad56043e09ada9808dc489f875a6ce0
      9662531d
    • Paul Wilkins's avatar
      Removal of CONFIG_NEW_MVREF experiment. · aa76bf3d
      Paul Wilkins authored
      This experiment has failed to give much benefit but
      does add complexity so deprecated.
      
      Change-Id: Ic7b929ba706390b9907ef0b4f965bd401ca799a4
      aa76bf3d
  9. 17 Apr, 2013 3 commits
    • Dmitry Kovalev's avatar
      Adding DEFAULT_PRED_PROB_{0, 1, 2} constants. · ecff8d71
      Dmitry Kovalev authored
      Also using ALLOWED_REFS_PER_FRAME instead of 3.
      
      Change-Id: I810dd8521d8138edb9dbd78edede49b62f706554
      ecff8d71
    • Yaowu Xu's avatar
      make lf_deltas dependent on filter_lvl · 888d0c82
      Yaowu Xu authored
      Change-Id: Idb0d11e3ae9afabe667a9f327bf4d3aa84f63649
      888d0c82
    • Jingning Han's avatar
      Recursive partition syntax coding · 90a91cc6
      Jingning Han authored
      Enable recursive partition information coding from SB64X64 down to
      MB16X16. The bit-stream syntax is now supporting rectangular block
      sizes. It starts from SB64X64 and recursively describes the partition
      type of the current block. If the partition type is PARTITION_NONE,
      the block is coded as a single unit; if it is PARTITION_HORZ or
      PARTITION_VERT, the block is segmented into two independently coded
      rectangular units, with no further partition needed; otherwise, the
      block is segmented into 4 square blocks. i.e., PARTITION_SPLIT case,
      each can be potentially further partitioned.
      
      Forward adaptive probability modeling is used for the partition
      information coding, conditioned on the current block size.
      
      Change-Id: I499365fb547839d555498e3bcc0387d8a3587d87
      90a91cc6
  10. 12 Apr, 2013 2 commits
    • Yaowu Xu's avatar
      Reorder enum i4X4 predcition modes · c2ad69bc
      Yaowu Xu authored
      To match the order of  directional intra prediction modes for larger
      blocks, also renamed the i4x4 prediction modes to mirror the larger
      variants.
      
      Change-Id: I77cea4d0add6c7758460bf9c7a2fe59aca601f0b
      c2ad69bc
    • Yaowu Xu's avatar
      Rename B_PRED to I4X4_PRED · 7de5edd1
      Yaowu Xu authored
      So it is consistent with I8x8_PRED.
      
      Change-Id: Iefa65124b2419690d83e526c611129c0ede29d11
      7de5edd1
  11. 11 Apr, 2013 1 commit
  12. 26 Mar, 2013 1 commit
  13. 10 Mar, 2013 1 commit
    • John Koleszar's avatar
      Optimize vp9_tree_probs_from_distribution · bd84685f
      John Koleszar authored
      The previous implementation visited each node in the tree multiple times
      because it used each symbol's encoding to revisit the branches taken and
      increment its count. Instead, we can traverse the tree depth first and
      calculate the probabilities and branch counts as we walk back up. The
      complexity goes from somewhere between O(nlogn) and O(n^2) (depending on
      how balanced the tree is) to O(n).
      
      Only tested one clip (256kbps, CIF), saw 13% decoding perf improvement.
      
      Note that this optimization should port trivially to VP8 as well. In VP8,
      the decoder doesn't use this function, but it does routinely show up
      on the profile for realtime encoding.
      
      Change-Id: I4f2848e4f41dc9a7694f73f3e75034bce08d1b12
      bd84685f
  14. 21 Feb, 2013 1 commit
    • Deb Mukherjee's avatar
      Refactoring of switchable filter search for speed · 28b1db92
      Deb Mukherjee authored
      Refactors the switchable filter search in the rd loop to
      improve encode speed.
      
      Uses a piecewise approximation to a closed form expression to estimate
      rd cost for a Laplacian source with a given variance and quantization
      step-size.
      
      About 40% encode time reduction is achieved.
      
      Results (on a feb 12 baseline) show a slight drop:
      
      derf: -0.019%
      yt: +0.010%
      std-hd: -0.162%
      hd: -0.050%
      
      Change-Id: Ie861badf5bba1e3b1052e29a0ef1b7e256edbcd0
      28b1db92
  15. 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
  16. 09 Jan, 2013 1 commit
    • Adrian Grange's avatar
      New prediction filter · 7d6b5425
      Adrian Grange authored
      This patch removes the old pred-filter experiment and replaces it
      with one that is implemented using the switchable filter framework.
      
      If the pred-filter experiment is enabled, three interopolation
      filters are tested during mode selection; the standard 8-tap
      interpolation filter, a sharp 8-tap filter and a (new) 8-tap
      smoothing filter.
      
      The 6-tap filter code has been preserved for now and if the
      enable-6tap experiment is enabled (in addition to the pred-filter
      experiment) the original 6-tap filter replaces the new 8-tap smooth
      filter in the switchable mode.
      
      The new experiment applies the prediction filter in cases of a
      fractional-pel motion vector. Future patches will apply the filter
      where the mv is pel-aligned and also to intra predicted blocks.
      
      Change-Id: I08e8cba978f2bbf3019f8413f376b8e2cd85eba4
      7d6b5425
  17. 08 Jan, 2013 1 commit
  18. 12 Dec, 2012 1 commit
    • Ronald S. Bultje's avatar
      Consistently use get_prob(), clip_prob() and newly added clip_pixel(). · 4d0ec7aa
      Ronald S. Bultje authored
      Add a function clip_pixel() to clip a pixel value to the [0,255] range
      of allowed values, and use this where-ever appropriate (e.g. prediction,
      reconstruction). Likewise, consistently use the recently added function
      clip_prob(), which calculates a binary probability in the [1,255] range.
      If possible, try to use get_prob() or its sister get_binary_prob() to
      calculate binary probabilities, for consistency.
      
      Since in some places, this means that binary probability calculations
      are changed (we use {255,256}*count0/(total) in a range of places,
      and all of these are now changed to use 256*count0+(total>>1)/total),
      this changes the encoding result, so this patch warrants some extensive
      testing.
      
      Change-Id: Ibeeff8d886496839b8e0c0ace9ccc552351f7628
      4d0ec7aa
  19. 29 Nov, 2012 1 commit
  20. 28 Nov, 2012 3 commits
    • Yaowu Xu's avatar
      remove the vp9_default_mode_contexts_a · 1cc57396
      Yaowu Xu authored
      Given the way mode_context is updated, the benefit of an additional
      default is not signficant.
      
      Change-Id: I67489453e8781340b18e26a1cc2f04e9221004a2
      1cc57396
    • Jim Bankoski's avatar
      fixed includes to be fully specified · c6787398
      Jim Bankoski authored
      Change-Id: Ia1cce221f8511561b9cbd8edb7726fbc286ff243
      c6787398
    • Yaowu Xu's avatar
      removed redundant mode_context data structures · 12da793d
      Yaowu Xu authored
      This commit removed a couple of redundant data structures in frame
      coding contextsm, mode_context and mode_context_a, and changed to
      use vp9_mode_contexts only. The switch of the context for different
      frame type now relies on the switch of frame coding context between
      lfc and lfc_a. This commit also removed a number of memcpy among
      these redundant data structure.
      
      Change-Id: I42e8174bd60f466b0860afc44c1263896471b0f3
      12da793d
  21. 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
  22. 16 Nov, 2012 3 commits
    • Ronald S. Bultje's avatar
      Support 32x32 intra modes in non-keyframe superblocks. · 5b11052a
      Ronald S. Bultje authored
      Change-Id: Icf8ad313c543462e523bff89690e5daa8d49bcc0
      5b11052a
    • 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
    • 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
  23. 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
  24. 10 Nov, 2012 1 commit
    • Deb Mukherjee's avatar
      New b-intra mode where direction is contextual · d01357bb
      Deb Mukherjee authored
      Preliminary patch on a new 4x4 intra mode B_CONTEXT_PRED where the
      dominant direction from the context is used to encode. Various decoder
      changes are needed to support decoding of B_CONTEXT_PRED in conjunction
      with hybrid transforms since the scan order and tokenization depends on
      the actual direction of prediction obtained from the context. Currently
      the traditional directional modes are used in conjunction with the
      B_CONTEXT_PRED, which also seems to provide the best results.
      
      The gains are small - in the 0.1% range.
      
      Change-Id: I5a7ea80b5218f42a9c0dfb42d3f79a68c7f0cdc2
      d01357bb
  25. 01 Nov, 2012 3 commits
  26. 31 Oct, 2012 3 commits