1. 14 Jan, 2013 1 commit
    • Ronald S. Bultje's avatar
      Reset x->skip for each iteration in the RD loop. · 290b83ab
      Ronald S. Bultje authored
      This prevents ill-defined behaviour, such as setting x->skip for a mode
      that is excluded because of frame-level flags (e.g. filter selection,
      compound prediction selection), then not breaking out of the RD loop
      because the mode is not allowed, but keeping the flag on. Whatever mode
      is iterated through next in the RD loop will then carry this flag, and
      all sort of bad stuff happens, such as x->skip being set on intra pred
      modes.
      
      Change-Id: I5bec46b36e38292174acb1c564b3caf00a9b4b9a
      290b83ab
  2. 11 Jan, 2013 1 commit
    • Paul Wilkins's avatar
      Remove INT64_MAX references. · d27ae620
      Paul Wilkins authored
      Replace INT64_MAX references with LLONG_MAX
      for windows build.
      
      Change-Id: Ib8b45c1e9c15c043b2f54c27ed83b8682b2be34f
      d27ae620
  3. 10 Jan, 2013 2 commits
  4. 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
  5. 08 Jan, 2013 2 commits
    • Deb Mukherjee's avatar
      Adds 64x64 hybrid dct/dwt transform · 4b7304ee
      Deb Mukherjee authored
      This is to add to the 64x64 transform experiment as an alternative to
      a 64x64 DCT.
      Two levels of wavelet decomposition is used on a 64x64 block, followed
      by 16x16 DCT on the four lowest subbands. The highest three subbands
      are left untransformed after the first level DWT.
      
      Change-Id: I3d48d5800468d655191933894df6b46e15adca56
      4b7304ee
    • Ronald S. Bultje's avatar
      Merge superblocks (32x32) experiment. · 4455036c
      Ronald S. Bultje authored
      Change-Id: I0df99742029834a85c4933652b0587cf5b6b2587
      4455036c
  6. 07 Jan, 2013 2 commits
  7. 06 Jan, 2013 1 commit
  8. 04 Jan, 2013 1 commit
    • Adrian Grange's avatar
      Fix mode selection infinite loop bug · 81d1171f
      Adrian Grange authored
      Mode selection for SBs could enter an infinite loop because
      the interpolation filter mode index was not being reset
      correctly.
      
      Change-Id: I4bbe726f29ef5b6836e94884067c46084713cc11
      81d1171f
  9. 03 Jan, 2013 3 commits
    • Yaowu Xu's avatar
      make cost_coeffs() and tokenize_b() consistent · 83664f45
      Yaowu Xu authored
      Change-Id: I7cdb5c32a1400f88ec36d08ea982e38b77731602
      83664f45
    • Adrian Grange's avatar
      New interpolation filter selection algorithm · 259b8008
      Adrian Grange authored
      Old Scheme:
      When SWITCHABLE filter selection is enabled the encoder
      evaluates the use of each interpolation filter type and
      selects the best one to use at the MB level. A frame-
      level flag can be set to force the use of a particular
      filter type for all MBs in a frame if it is more efficient
      to encode that way. The logic here involved a Q dependent
      threshold that assumed that the second 8-tap filter was
      a high-pass filter. However, this requires a trip around
      the recode loop. If the frame-level flag indicates use
      of a particular filter, the other filters are not
      evaluated in the pick_mode loop.
      
      New Scheme:
      Each filter type is evaluated at the MB level and a record
      of the best filter is kept, irrespective of what filter
      is signaled at the frame-level. Once all MBs have been
      encoded, a decision is made as to what frame-level mode
      to set for the *next* frame. If one filter is used by 80%
      or more of the MBs, then this filter is forced since it
      is assumed that this will be more efficient if the
      next frame has similar characteristics. i.e. there is a
      one-frame lag between measuring the filter selection and
      setting the frame-level mode to use.
      
      Change-Id: I6a7e7ced8f27e120fafb99db2dc9c6293f8d20f7
      259b8008
    • Yaowu Xu's avatar
      Merge cost_coeffs_2x2() into cost_coeffs() · bd28510e
      Yaowu Xu authored
      Remove special case function cost_coeffs_2x2() and change function
      cost_coeffs() to handle 2nd order haar block as it is handle all
      other block types already.
      
      Change-Id: I2aac6f81ee0ae9e03d6a8da4f8681d69b79ce41f
      bd28510e
  10. 02 Jan, 2013 2 commits
  11. 26 Dec, 2012 1 commit
  12. 20 Dec, 2012 1 commit
    • Deb Mukherjee's avatar
      New previous coef context experiment · 08f0c7cc
      Deb Mukherjee authored
      Adds an experiment to derive the previous context of a coefficient
      not just from the previous coefficient in the scan order but from a
      combination of several neighboring coefficients previously encountered
      in scan order.  A precomputed table of neighbors for each location
      for each scan type and block size is used. Currently 5 neighbors are
      used.
      
      Results are about 0.2% positive using a strategy where the max coef
      magnitude from the 5 neigbors is used to derive the context.
      
      Change-Id: Ie708b54d8e1898af742846ce2d1e2b0d89fd4ad5
      08f0c7cc
  13. 18 Dec, 2012 3 commits
  14. 17 Dec, 2012 1 commit
    • Paul Wilkins's avatar
      Problem of over smoothing with intra modes. · d8f5d1b2
      Paul Wilkins authored
      In some cases intra modes in inter frames give
      an over smoothed appearance. Especially with
      noisy but flat content.
      
      Also in some cases there were problems with key
      frame sizing again with very flat but noisy content.
      
      These are temporary changes to help alleviate the
      visual problems but will almost certainly hurt metric
      results especially at the very low data rate end.
      
      Change-Id: I11549179a19277ffc283d9788bc70168f2a8bdc9
      d8f5d1b2
  15. 13 Dec, 2012 1 commit
  16. 12 Dec, 2012 2 commits
    • Scott LaVarnway's avatar
      Improved vp9_ihtllm_c · b575394e
      Scott LaVarnway authored
      As suggested by Yaowu, we can use eob to reduce the complexity
      of the vp9_ihtllm_c function.  For the 1080p test clip used, the decoder
      performance improved by 17%.
      
      Change-Id: I32486f2f06f9b8f60467d2a574209aa3a3daa435
      b575394e
    • 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
  17. 11 Dec, 2012 1 commit
  18. 10 Dec, 2012 1 commit
    • Paul Wilkins's avatar
      Further changes to mv reference code. · d1244659
      Paul Wilkins authored
      Some further changes and refactoring of mv
      reference code and selection of center point for
      searches. Mainly relates to not passing so many
      different local copies of things around.
      
      Some place holder comments.
      
      Change-Id: I309f10ffe9a9cde7663e7eae19eb594371c8d055
      d1244659
  19. 08 Dec, 2012 1 commit
    • Ronald S. Bultje's avatar
      Introduce vp9_coeff_probs/counts/stats/accum types. · 885cf816
      Ronald S. Bultje authored
      Use these, instead of the 4/5-dimensional arrays, to hold statistics,
      counts, accumulations and probabilities for coefficient tokens. This
      commit also re-allows ENTROPY_STATS to compile.
      
      Change-Id: If441ffac936f52a3af91d8f2922ea8a0ceabdaa5
      885cf816
  20. 07 Dec, 2012 1 commit
    • Ronald S. Bultje's avatar
      32x32 transform for superblocks. · c456b35f
      Ronald S. Bultje authored
      This adds Debargha's DCT/DWT hybrid and a regular 32x32 DCT, and adds
      code all over the place to wrap that in the bitstream/encoder/decoder/RD.
      
      Some implementation notes (these probably need careful review):
      - token range is extended by 1 bit, since the value range out of this
        transform is [-16384,16383].
      - the coefficients coming out of the FDCT are manually scaled back by
        1 bit, or else they won't fit in int16_t (they are 17 bits). Because
        of this, the RD error scoring does not right-shift the MSE score by
        two (unlike for 4x4/8x8/16x16).
      - to compensate for this loss in precision, the quantizer is halved
        also. This is currently a little hacky.
      - FDCT and IDCT is double-only right now. Needs a fixed-point impl.
      - There are no default probabilities for the 32x32 transform yet; I'm
        simply using the 16x16 luma ones. A future commit will add newly
        generated probabilities for all transforms.
      - No ADST version. I don't think we'll add one for this level; if an
        ADST is desired, transform-size selection can scale back to 16x16
        or lower, and use an ADST at that level.
      
      Additional notes specific to Debargha's DWT/DCT hybrid:
      - coefficient scale is different for the top/left 16x16 (DCT-over-DWT)
        block than for the rest (DWT pixel differences) of the block. Therefore,
        RD error scoring isn't easily scalable between coefficient and pixel
        domain. Thus, unfortunately, we need to compute the RD distortion in
        the pixel domain until we figure out how to scale these appropriately.
      
      Change-Id: I00386f20f35d7fabb19aba94c8162f8aee64ef2b
      c456b35f
  21. 01 Dec, 2012 1 commit
  22. 30 Nov, 2012 2 commits
    • Deb Mukherjee's avatar
      Adds switchable filters with superblocks · 66323307
      Deb Mukherjee authored
      Allows switchbale filters to be used without mismatch when the
      superblock experiment is on.
      
      Also removes a spurious clamping code in decodemv.c which causes
      rare encode/decode mismatches.
      
      Change-Id: I809d9ee0b2859552b613500b539a615515b863ae
      66323307
    • Jim Bankoski's avatar
      warnings in various experiments · 9f937042
      Jim Bankoski authored
      Change-Id: Ib5106d4772450f8026f823dd743f162ab833b1d6
      9f937042
  23. 29 Nov, 2012 5 commits
    • Yaowu Xu's avatar
      minor fix to eob check for setting CONTEXT · 7ab1d3e4
      Yaowu Xu authored
      Previously, the "!=" check is logically incorrect when eob is at 0 and
      effective coefficient starting position is 1. This commit should have
      no effect on bitstream.
      
      Change-Id: I6ce3a847c7e72bfbe4f7c74f88e3310c6b9b6d30
      7ab1d3e4
    • Jim Bankoski's avatar
      unused variables & warnings · a802f5e7
      Jim Bankoski authored
      Change-Id: Ibea3bc80eb26a975faaa60268bbc93237f82bc57
      a802f5e7
    • Jim Bankoski's avatar
      ihtllm moves to rtcd · 030e268a
      Jim Bankoski authored
      clears up some warnings
      
      Change-Id: I9899637497c6ad7519f098e055ab98580ae6d688
      030e268a
    • Jim Bankoski's avatar
      more rtcd cleanup · 13dbf1fb
      Jim Bankoski authored
      Change-Id: Ieefd76e164ca4aa87597da0412977614ddfbacb7
      13dbf1fb
    • 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
  24. 28 Nov, 2012 1 commit
  25. 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
  26. 26 Nov, 2012 1 commit
    • Paul Wilkins's avatar
      Modified mv prediction. · d22f3d9f
      Paul Wilkins authored
      Modified the  mv_pred() fuunction that chooses a centre
      point from which to start step searches to use the top
      candidate vectors chosen previously.
      
      Some gains (mainly on HD and tested with SB off).
      Std_hd 0.874%, YT-hd 0.174%, YT 0.05%, Derf 0.036%
      
      Change-Id: Ie232284f561838b8ecee0e28dcbb07a9cd46cf56
      d22f3d9f