1. 12 Jan, 2013 1 commit
    • Scott LaVarnway's avatar
      WIP: Added sse2 version of vp9_mb_lpf_horizontal_edge_w · b20ce07d
      Scott LaVarnway authored
      and vp9_mb_lpf_vertical_edge_w_sse2.  This was quickly done so we can
      run some tests over the weekend.  Future commits will optimize/refactor these
      functions further.
      
      The decoder performance improved by ~17% for the clip used.
      
      Change-Id: I612687cd5a7670ee840a0cbc3c68dc2b84d4af76
      b20ce07d
  2. 11 Jan, 2013 4 commits
  3. 10 Jan, 2013 5 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 9 commits
  6. 07 Jan, 2013 3 commits
  7. 06 Jan, 2013 1 commit
  8. 04 Jan, 2013 3 commits
    • 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
    • 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
    • Marco Paniconi's avatar
      Use seg/ref/mode offsets in loop_filter_partial. · bdca030c
      Marco Paniconi authored
      Use the proper seg/mode/ref filter offsets when selecting the
      frame loop filter level for fast mode (pick_filter_level_fast).
      
      Change-Id: I2473e2131c800ad19755cb6211ad735fecfe2ac0
      bdca030c
  9. 03 Jan, 2013 5 commits
    • Yaowu Xu's avatar
    • Yaowu Xu's avatar
    • 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 4 commits
  11. 28 Dec, 2012 1 commit
    • Yunqing Wang's avatar
      Skip finding best ref_mvs when the mode is ZEROMV · 0f4de157
      Yunqing Wang authored
      Read mode before calling vp9_find_best_ref_mvs(). If the mode is
      ZEROMV, the best ref_mvs are not needed. Then, we can skip calling
      vp9_find_best_ref_mvs().
      
      Change-Id: I5baa3658dd3f1c7107211cbbbcf919b4584be2e2
      0f4de157
  12. 27 Dec, 2012 2 commits
    • Yunqing Wang's avatar
      Switch the order of calculating 2-D inverse transform · cc80247f
      Yunqing Wang authored
      The 2-D inverse transform X = M1*Z*Transposed_M2 was calculated
      in 2 steps from left to right:
      1. Vertical transform: Y = M1*Z
      2. Horizontal transform: X= Y*Transposed_M2
      In SIMD, a transpose is needed in vertical transform.
      
      Here, switched the calculation order to do it from right to left.
      In this way, we could eliminate that transpose by writing the
      intermediate results out to their transposed positions.
      
      Change-Id: I34dfe5eb01292f6e363712420d99475e2e81e12c
      cc80247f
    • John Koleszar's avatar
      Merge branch 'vp9-preview' of review:webm/libvpx · 16810c10
      John Koleszar authored
      Merge the vp9-preview branch into master.
      
      Change-Id: If700b9054676f24bed9deb59050af546c1ca5296
      16810c10
  13. 26 Dec, 2012 1 commit