1. 19 Oct, 2013 1 commit
    • Paul Wilkins's avatar
      Modified no memory rate control. · eec3def7
      Paul Wilkins authored
      This 2-pass rate control setting allocates bits based
      on first pass stats to each kf group, gf group and individual
      frame but does not correct the bits left and allocation after
      each frame.
      
      In other words it recommends a bit allocation for each frame
      but does not try and correct any over or under spend on a
      frame over the remainder of the clip. This reduces the accuracy
      of rate control in terms of hitting an average bitrate but prevents
      problems that may arise because early frames either use to many
      or too few bits. This mode is currently more inclined to undershoot
      than overshoot (particularly at higher data rates).
      
      Also minor changes to rate of adaption when recode loop is not
      enabled.
      
      This mode is currently enabled by default for VBR.
      It gives the following % performance gains.
      
      derf +0.467, +1.072
      yt 2.962, 2.645
      stdhd 1.682, 1.595,
      yt-hd 2.3, 2.174
      
      Change-Id: I3c84a9bf8884e5b345698ff0e19187f792c2f3a0
      eec3def7
  2. 07 Oct, 2013 2 commits
  3. 27 Sep, 2013 1 commit
  4. 15 Aug, 2013 1 commit
  5. 09 Aug, 2013 1 commit
    • Dmitry Kovalev's avatar
      Moving loopfilter struct to VP9_COMMON. · 816d6c98
      Dmitry Kovalev authored
      Loop filter configuration doesn't belong to macroblock, so moving it from
      MACROBLOCKD to VP9_COMMON. Also moving the declaration of loopfilter struct
      from vp9_blockd.h to vp9_loopfilter.h.
      
      Change-Id: I4b3e34be9623b47cda35f9b1f9951f8c5b1d5d28
      816d6c98
  6. 19 Jul, 2013 2 commits
  7. 16 Jul, 2013 1 commit
  8. 12 Jul, 2013 1 commit
  9. 11 Jul, 2013 1 commit
    • Dmitry Kovalev's avatar
      Moving segmentation related vars into separate struct. · c4ad3273
      Dmitry Kovalev authored
      Adding segmentation struct to vp9_seg_common.h. Struct members are from
      macroblockd and VP9Common structs. Moving segmentation related constants
      and enums to vp9_seg_common.h.
      
      Change-Id: I23fabc33f11a359249f5f80d161daf569d02ec03
      c4ad3273
  10. 01 Jul, 2013 1 commit
  11. 10 Jun, 2013 1 commit
    • Adrian Grange's avatar
      Implement intra-coded frames · eac344ef
      Adrian Grange authored
      Implements ability to signal and decode frames that are
      encoded using only intra coding modes. Only the decode
      side has been implemented here.
      
      Change-Id: I53ac6a8d90422cd08ba389e5236e15b45f9e93de
      eac344ef
  12. 07 Jun, 2013 4 commits
    • Deb Mukherjee's avatar
      Coding tx-size selection by use of spatial context · 21401942
      Deb Mukherjee authored
      Adds coding of transform size within a frame by use of context
      of transform sizes selected in left and above blocks.
      
      Also incorporates code for generating stats.
      
      TODO: generate and incorporate new default stats
      
      Change-Id: I6a7af099f6ad61d448521d9a51167aedaf638ed6
      21401942
    • Deb Mukherjee's avatar
      Cleans up mbskip encoding · 869a39ba
      Deb Mukherjee authored
      Refactors mbskip coding to be compatible with coding of the rest of
      the symbols. Adds forward/backward adaptation and removes a lot of
      the legacy code.
      
      Results:
      fast50: +1.6%
      derfraw300: +0.317%
      
      Change-Id: I395a2976d15af044d3b8ded5acfa45f6f065f980
      869a39ba
    • Deb Mukherjee's avatar
      Coding updates for tx-size selection · 3ee1a21a
      Deb Mukherjee authored
      Changes to the coding of transform sizes, along with forward
      and backward probability updates.
      
      Results:
      derf300: +0.241%
      
      Context based coding of transform sizes will be in a separate
      patch.
      
      Change-Id: I97241d60a926f014fee2de21fa4446ca56495756
      3ee1a21a
    • 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
  13. 05 Jun, 2013 1 commit
    • Deb Mukherjee's avatar
      Clean-ups on switchable interpolation and mv_ref · 83885235
      Deb Mukherjee authored
      Adds backward adaptation and differential forward updates of switchable
      interpolation filter probabilities. Also adds some cosmetic cleanups
      and minor fixes on mv_ref probabilities.
      
      derfraw300: +0.353% (with most coming from switchable interp changes)
      
      Change-Id: Ie2718be73528c945fd0d80cfd63ca2d9cb3032de
      83885235
  14. 31 May, 2013 1 commit
  15. 30 May, 2013 1 commit
  16. 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
  17. 17 May, 2013 1 commit
  18. 07 May, 2013 3 commits
  19. 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
  20. 26 Apr, 2013 3 commits
  21. 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
  22. 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
  23. 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
  24. 26 Mar, 2013 1 commit
    • Dmitry Kovalev's avatar
      Cleaning up rate control code. · 77c664ad
      Dmitry Kovalev authored
      Lower case variable names, declaration and initialization on the same line,
      removing redundant casts to double.
      
      Change-Id: I7ea3905bed827aa6faac11a78401b85e448b57f9
      77c664ad
  25. 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
  26. 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
  27. 06 Mar, 2013 1 commit
    • Paul Wilkins's avatar
      Added stricter Q control flag. · db6ad013
      Paul Wilkins authored
      Added a variant of the one shot maxQ flag
      for two pass that forces a fixed Q for the
      normal inter frames. Disabled by default.
      Also small adjustment to the Bits per MB
      estimation.
      Change-Id: I87efdfb2d094fe1340ca9ddae37470d7b278c8b8
      db6ad013
  28. 25 Feb, 2013 1 commit
    • Paul Wilkins's avatar
      Minor rate control refactoring and experiments. · 97da8b8c
      Paul Wilkins authored
      Some minor refactoring code relating to estimates of
      bits per MB at a given Q and estimating the allowed Q range.
      
      Most of the changes here were included in a previous commit.
      This commit seeks to separate out the refactoring from more
      the material changes.
      
      Two #define control flags have been added for experimentation.
      
      ONE_SHOT_Q_ESTIMATE force the two pass encoder to
      use its initial Q range estimate for the whole clip even if this results
      in a miss on the target data rate. In effect this tightens the Q range
      seen at the expense of rate control accuracy.
      
      DISABLE_RC_LONG_TERM_MEM is a related flag that disables the
      long term memory in the rate control. Local adjustments are still
      made to try and better hit the rate target on a per frame basis but
      the impact of rate control misses is not propagated to the remainder
      of the clip. This means that for example an overshoot early on will not
      cause frames later in the clip to be starved of bits. Again the result
      of this relaxation amy be less rate control accuracy especially on short
      clips.
      
      The flags are disabled by default for now.
      
      Change-Id: I7482f980146d8ea033b5d50cc689f772e4bd119e
      97da8b8c
  29. 23 Feb, 2013 1 commit
  30. 22 Feb, 2013 1 commit
    • Dmitry Kovalev's avatar
      Code cleanup. · 548b4dd5
      Dmitry Kovalev authored
      Removing redundant 'extern' keywords and parentheses, fixing indentation,
      making variable names lower case, using short expressions x *= c
      instead of x = x * c, minor code simplifications.
      
      Change-Id: If6a25fcf306d1db26e90d27e3c24a32735c607de
      548b4dd5