1. 10 May, 2013 1 commit
    • John Koleszar's avatar
      Subsampling aware allocs and bitstream · da58436f
      John Koleszar authored
      Make framebuffer allocations according to the chroma subsamping
      factors in use. A bit is placed in the raw part of the frame header for
      each of the two subsampling factors. This will be moved in a future
      commit to make them part of the TBD feature set bits, probably only set
      on keyframes, etc.
      
      Change-Id: I59ed38d3a3c0d4af3c7c277617de28d04a001853
      da58436f
  2. 08 May, 2013 2 commits
    • Dmitry Kovalev's avatar
      Removing LOOPFILTER_TYPE and corresponding bit in bitstream. · f66320ab
      Dmitry Kovalev authored
      We don't have two loopfilter types anymore.
      
      Change-Id: I53c0137361342c7d00887ad03be3490f0dfa3532
      f66320ab
    • Jingning Han's avatar
      Extend left/above partition context to per mi(8x8) · 4a88ad89
      Jingning Han authored
      Update and buffer left/above partition information context per 8x8
      block. This allows to further enable recursive partition down to
      4x4 block size, and hence deprecating I4X4_PRED and SPLITMV.
      
      This commit also fixes a context buffer swap/restore issue in 32x32
      partition type search. This gives 0.1% performance gain for derf/yt.
      Will refactor the superblock partition type search into recursion
      form.
      
      Change-Id: Ib61975aca5f12b78d8018481d7fa1393d085689b
      4a88ad89
  3. 07 May, 2013 3 commits
  4. 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
  5. 01 May, 2013 1 commit
  6. 30 Apr, 2013 2 commits
    • 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
    • Dmitry Kovalev's avatar
      Adding vp9_get_qindex function. · 3f6c6ffc
      Dmitry Kovalev authored
      Moving common code from encoder and decoder to vp9_get_qindex function.
      Also moving quant-related constants from vp9_onyxc_int.h to
      vp9_quant_common.h.
      
      Change-Id: I70c5bfbaa1c8bf00fde0bfc459d077f88b6d46c8
      3f6c6ffc
  7. 29 Apr, 2013 1 commit
  8. 26 Apr, 2013 2 commits
  9. 25 Apr, 2013 1 commit
  10. 24 Apr, 2013 2 commits
    • Yaowu Xu's avatar
      Merge two similar functions into one · bcf82cf5
      Yaowu Xu authored
      Function set_mb_row() and set_mb_col() do similar work and are always
      called together, this commit merged them into a single function for
      clarity and easy maintainence.  This was a TODO item.
      
      Change-Id: I956bd9ed6afb8b2b0469b20fd8bc893b26f8a0f3
      bcf82cf5
    • 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
  11. 23 Apr, 2013 1 commit
  12. 22 Apr, 2013 2 commits
    • Deb Mukherjee's avatar
      Removes the code_nonzerocount experiment · 0aa79be7
      Deb Mukherjee authored
      This patch does not seem to give any benefits.
      
      Change-Id: I9d2b4091d6af3dfc0875f24db86c01e2de57f8db
      0aa79be7
    • Deb Mukherjee's avatar
      End of orientation zero group experiment · 70d9f116
      Deb Mukherjee authored
      Adds an experiment that codes an end-of-orientation symbol
      for every eligible zero encountered in scan order.
      
      This cleans out various other sub-experiments that were part
      of the origiinal patch, which will be later included if found
      useful.
      
      Results are slightly positive on all sets (0.1 - 0.2% range).
      
      Change-Id: I57765c605fefc7fb9d1b57f1b356843602abefaf
      70d9f116
  13. 19 Apr, 2013 1 commit
    • 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
  14. 17 Apr, 2013 1 commit
    • 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
  15. 16 Apr, 2013 2 commits
  16. 15 Apr, 2013 1 commit
    • Adrian Grange's avatar
      Initial addition of multiple ARF frames · c2876cf0
      Adrian Grange authored
      This is work-in-progress, it implements multiple ARF
      encoding behind an experimental flag.
      
      It adds the ability to insert multiple ARF frames into a
      single ARF group. This patch implements the reordering
      of the coded frames, and implements a fixed-length coding
      pattern. It applies a fixed quantizer strategy based on
      where the frame is in the coding sequence.
      
      Further work to modify the rate control strategy is
      ongoing and will be submitted via a set of future patches.
      
      In this first step, each ARF group is recursively
      bisected and an ARF frame added at that position in the
      sequence. The recursion continues until ARF frames are
      within MIN_GF_INTERVAL frames.
      
      The code sits behind the "multiple-arf" experimental
      flag ("CONFIG_MULTIPLE_ARF"). The experimental flag
      "oneshotq" ("CONFIG_ONESHOTQ") also needs to be enabled
      for this patch to work correctly.
      
      Change-Id: Ie473b05ebb43ac473c0cfb659b2b8042823085e2
      c2876cf0
  17. 09 Apr, 2013 2 commits
    • Dmitry Kovalev's avatar
      Fixing upper case names. · c34f6fcb
      Dmitry Kovalev authored
      Renaming Y1dequant to y_dequant, UVdequant to uv_dequant, QIndex to qindex.
      
      Change-Id: I1c356e5f886deb3f8807dc212de9799b55b09d58
      c34f6fcb
    • Dmitry Kovalev's avatar
      Cleanup of set_offsets function. · df76a617
      Dmitry Kovalev authored
      Adding ALLOWED_REFS_PER_FRAME constant instead of hard coded number 3.
      
      Change-Id: I46146aa837896936f920c748c7d4aa4c27f026e4
      df76a617
  18. 05 Apr, 2013 2 commits
  19. 03 Apr, 2013 1 commit
  20. 26 Mar, 2013 2 commits
    • Ronald S. Bultje's avatar
      Use above/left (instead of previous in scan-order) as token context. · 790fb132
      Ronald S. Bultje authored
      Pearson correlation for above or left is significantly higher than for
      previous-in-scan-order (absolute values depend on position in scan, but
      in general, we gain about 0.1-0.2 by using either above or left; using
      both basically just makes this even better). For eob branch skipping,
      we continue to use the previous token in scan order.
      
      This helps about 0.9% on derf after re-training on a limited data set.
      Full re-training and results on larger-resolution clips are pending.
      
      Note that this commit breaks trellis, so we can probably get further
      gains out of it by fixing trellis at some later point.
      
      Change-Id: Iead68e296fc3a105cca746b5e3da9555d6010cfe
      790fb132
    • John Koleszar's avatar
      Add an in-loop deringing experiment · 441e2eab
      John Koleszar authored
      Adds a per-frame, strength adjustable, in loop deringing filter. Uses
      the existing vp9_post_proc_down_and_across 5 tap thresholded blur
      code, with a brute force search for the threshold.
      
      Results almost strictly positive on the YT HD set, either having no
      effect or helping PSNR in the range of 1-3% (overall average 0.8%).
      Results more mixed for the CIF set, (-0.5 min, 1.4 max, 0.1 avg).
      This has an almost strictly negative impact to SSIM, so examining a
      different filter or a more balanced search heuristic is in order.
      
      Other test set results pending.
      
      Change-Id: I5ca6ee8fe292dfa3f2eab7f65332423fa1710b58
      441e2eab
  21. 20 Mar, 2013 1 commit
  22. 18 Mar, 2013 1 commit
    • John Koleszar's avatar
      Replace scaling byte with explicit display size · 8a3f55f2
      John Koleszar authored
      If the intended display size is different than the size the frame is
      coded at, then send that size explicitly in the bitstream. Adds a new
      bit to the frame header to indicate whether the extra size fields
      are present.
      
      Change-Id: I525c66f22d207efaf1e5f903c6a2a91b80245854
      8a3f55f2
  23. 09 Mar, 2013 1 commit
    • Deb Mukherjee's avatar
      Continued experiment with nonzero count · a28139c8
      Deb Mukherjee authored
      Adds probability updates for extra bits for the nzcs, code for
      getting nzc stats, plus some minor cleanups and fixes.
      
      Change-Id: If2814e7f04fb52f5025ad9f400f3e6c50a00b543
      a28139c8
  24. 07 Mar, 2013 1 commit
    • Deb Mukherjee's avatar
      Coding con-zero count rather than EOB for coeffs · eb6ef241
      Deb Mukherjee authored
      This patch revamps the entropy coding of coefficients to code first
      a non-zero count per coded block and correspondingly remove the EOB
      token from the token set.
      
      STATUS:
      Main encode/decode code achieving encode/decode sync - done.
      Forward and backward probability updates to the nzcs - done.
      Rd costing updates for nzcs - done.
      Note: The dynamic progrmaming apporach used in trellis quantization
      is not exactly compatible with nzcs. A suboptimal approach has been
      used instead where branch costs are updated to account for changes
      in the nzcs.
      
      TODO:
      Training the default probs/counts for nzcs
      
      Change-Id: I951bc1e22f47885077a7453a09b0493daa77883d
      eb6ef241
  25. 05 Mar, 2013 1 commit
    • Ronald S. Bultje's avatar
      Make superblocks independent of macroblock code and data. · 111ca421
      Ronald S. Bultje authored
      Split macroblock and superblock tokenization and detokenization
      functions and coefficient-related data structs so that the bitstream
      layout and related code of superblock coefficients looks less like it's
      a hack to fit macroblocks in superblocks.
      
      In addition, unify chroma transform size selection from luma transform
      size (i.e. always use the same size, as long as it fits the predictor);
      in practice, this means 32x32 and 64x64 superblocks using the 16x16 luma
      transform will now use the 16x16 (instead of the 8x8) chroma transform,
      and 64x64 superblocks using the 32x32 luma transform will now use the
      32x32 (instead of the 16x16) chroma transform.
      
      Lastly, add a trellis optimize function for 32x32 transform blocks.
      
      HD gains about 0.3%, STDHD about 0.15% and derf about 0.1%. There's
      a few negative points here and there that I might want to analyze
      a little closer.
      
      Change-Id: Ibad7c3ddfe1acfc52771dfc27c03e9783e054430
      111ca421
  26. 27 Feb, 2013 2 commits
    • John Koleszar's avatar
      Combined motion compensation with scaled predictors · 77f88e97
      John Koleszar authored
      This patch extends the previous support for using references of a
      different resolution in ZEROMV mode to all inter prediction modes.
      Subpixel based best-mv scoring is disabled when the reference frame
      differs in resolution from the current frame.
      
      Change-Id: Id4dc3e5e6692de98d9857fd56bfad3ac57e944ac
      77f88e97
    • 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
  27. 23 Feb, 2013 1 commit
  28. 15 Feb, 2013 1 commit