1. 18 Feb, 2017 4 commits
  2. 17 Feb, 2017 4 commits
    • Debargha Mukherjee's avatar
      Support trapezoidal models for global motion · 5dfa9300
      Debargha Mukherjee authored
      Adds functinoality for least-squares, RANSAC as well as encoding and
      decoding with new constrained homographies that warp blocks to horizontal
      and/or vertical trapezoids. This is for future experimentation. None
      of the models are actually enabled in the code.
      
      Change-Id: I1936018c6b11587d6fd83c3a2c63548cb641b33f
      5dfa9300
    • Nathan E. Egge's avatar
      Use tx_size_cdf with CONFIG_EC_MULTISYMBOL. · 2ea519e5
      Nathan E. Egge authored
      This commit produces a bit-exact bitstream because prior calls to code
       the tx_size using aom_write_tree() would automatically convert the
       aom_tree_index on the fly to a CDF.
      The tx_size_cdf[]'s are now computed once per frame.
      Based on recent tests, this patch reduces decode time by 4%.
      
      Change-Id: I920dbf036b8a9574ea6e65ae5f9c43eef1c3f864
      2ea519e5
    • Yushin Cho's avatar
      Remove PVQ_CHROMA_RD codes · 5c207296
      Yushin Cho authored
      Which was a workaround to balance the quality between
      luma and chroma when PVQ is enabled, by
      1) skipping PVQ DC RDO for chroma and
      2) using smaller lambda value (x0.5) for intra prediction of chroma,
      intended to spend more bits and thus improve quality for chroma.
      
      The change in metric for 5 frames of objective-1-fast is:
      PSNR  PSNR-HVS  SSIM  CIEDE-2000  PSNR Cb PSNR Cr  MS-SSIM
      -1.45 -1.54     -1.46 4.62        13.71   14.87     -1.47
      
      For still images (subset1)
      PSNR  PSNR-HVS  SSIM  CIEDE-2000  PSNR Cb PSNR Cr  MS-SSIM VMAF
      -1.52 -1.54     -1.60 2.56        11.92   12.17     -1.52  -1.66
      
      Change-Id: I31c4d7a7de2939f6004c112649f7303f0e944156
      5c207296
    • Rostislav Pehlivanov's avatar
      Implement a new rate control system · 002e7b7a
      Rostislav Pehlivanov authored
      This commit implements a new rate control system which was ported from
      Daala's rate control system (which was based off of Theora's rate
      control system) to the encoder. Its aim is to address the weaknesses of
      the current rate control system and eventually serve as its replacement.
      
      This is still work in progress. So far this commit only implements
      support for single pass encoding for constant quality and bitrate
      targeting.
      Additional commits which implement two-pass support and the rest to
      match the feature set of the current rate control system are coming
      soon.
      
      The rate control system hasn't been fully tuned (and will likely need
      additional tuning as the encoder's development progresses) and does
      contain some "hacks", to convert the quality to a quantizer value
      (empirical) and to tweak the quantizer in between golden frames (which
      uses some code from the current rate control system as well as code
      which attempts to model what that code does), the latter of which is
      only in the constant quality codepath.
      
      Bitrate targeting works much better than the current rate control
      system's targeting and will actually closely match the rate specified by
      the user without the current rate control system's bursty behaviour.
      
      Change-Id: I588fbfd2e80a3d21ce7176903115d6a96ef1700a
      002e7b7a
  3. 16 Feb, 2017 4 commits
  4. 15 Feb, 2017 1 commit
    • David Barker's avatar
      Speed up global motion determination · 15338d5f
      David Barker authored
      When global-motion is enabled, a considerable amount
      of encoder time is spent in the functions in corner_match.c.
      This patch optimizes those functions to be 3.5-4x as fast,
      leading to an end-to-end encoder speed improvement
      (on 20 frames of tempete_cif.y4m) of:
      
       200kbps: ~26% faster
       800kbps: ~19% faster
      2800kbps: ~12% faster
      
      Change-Id: I04d3f87484c36c41eb5a1e86e814f2accbe86297
      15338d5f
  5. 14 Feb, 2017 4 commits
  6. 13 Feb, 2017 3 commits
  7. 12 Feb, 2017 3 commits
    • Jingning Han's avatar
      Make adapt-scan support multi-thread encoding · 5d0b310b
      Jingning Han authored
      This commit makes the adaptive scan order system support multi-
      thread encoding. It fixes unit test failure issue associated with
      AV1/AVxEncoderThreadTest.EncoderResultTest/0.
      
      BUG=aomedia:353
      
      Change-Id: I61cbf9531c8deab97fb3bb17428d0b2a63cf309a
      5d0b310b
    • Jingning Han's avatar
      Separate intra tx_size logic between var-tx and rect-tx · cb512283
      Jingning Han authored
      Skip rectangular transform block size coding for intra coded block
      in var-tx mode, when the rect-tx is disabled.
      
      Change-Id: If3a091d25f19bf4a67485b5d235bb3d7d0c2cd03
      cb512283
    • David Barker's avatar
      Fix segfault with loop-restoration on x86. · befcc425
      David Barker authored
      The WienerInfo struct requires a 16-byte alignment on x86,
      since it contains filter coefficients which are loaded using
      SSE aligned load instructions. But on 32-bit x86, the default
      alignment of aom_malloc/aom_realloc is only 8 bytes, leading
      to occasional segfaults.
      
      To fix this, rather than using aom_realloc to resize WienerInfo
      structures, we always free and re-allocate them using aom_memalign
      
      BUG=aomedia:345
      
      Change-Id: Ib1b2a42d4a2fa215dcc81ea481c51271ab068a37
      befcc425
  8. 11 Feb, 2017 1 commit
    • Zoe Liu's avatar
      Add a new experiment of REF_ADAPT · b05e5d10
      Zoe Liu authored
      Noticed that some ALTREF_FRAMEs could have used compound modes for its
      prediction but have been labeled as SINGLE_REFERENCE mode in the frame
      header. This experiment is to remove the COMPOUND_REFERENCE mode from
      the frame-level reference mode choices and only leave SINGLE_REFERENCE
      and REFERENCE_MODE_SELECT the two choices in the frame header.
      
      When turning on both ext-refs and ref-adapt, compared against ext-refs
      itself, a small gain is achieved. In PSNR, the bitrate saving gains are
      as follows:
      
      lowres: Avg -0.120%; BDRate -0.128%
      midres: Avg -0.155%; BDRate -0.128%
      
      Change-Id: I2cfff8a6b7eaa65ef863dbdbc4dd086d3b586f8c
      b05e5d10
  9. 10 Feb, 2017 1 commit
    • Steinar Midtskogen's avatar
      Retune the CLPF kernel · 4f0b3ed8
      Steinar Midtskogen authored
      CLPF performance had degraded by about 0.5% over the past six months,
      which isn't totally surprising since the codec is a moving target.
      About half of that degradation comes from the improved 7 bit filter
      coefficients.  Therefore, CLPF needs to be retuned for the current
      codec.
      
      This patch makes two (normative) changes to the CLPF kernel:
      
      * The clipping function was changed from clamp(x, -s, s) to
            sign(x) * max(0, abs(x) - max(0, abs(x) - s +
                   (abs(x) >> (bitdepth - 3 - log2(s)))))
        This adds a rampdown to 0 at -32 and 32 (for 8 bit, -128 & 128
        for 10 bit, etc), so large differences are ignored.
      
      * 8 taps instead of 6 taps:
                     1
          4          3
        13 31  ->  13 31
          4          3
                     1
      
      AWCY results: low delay  high delay
      PSNR:           -0.40%     -0.47%
      PSNR HVS:        0.00%     -0.11%
      SSIM:           -0.31%     -0.39%
      CIEDE 2000:     -0.22%     -0.31%
      APSNR:          -0.40%     -0.48%
      MS SSIM:         0.01%     -0.12%
      
      About 3/4 of the gains come from the new clipping function.
      
      Change-Id: Idad9dc4004e71a9c7ec81ba62ebd12fb76fb044a
      4f0b3ed8
  10. 09 Feb, 2017 1 commit
  11. 08 Feb, 2017 1 commit
  12. 07 Feb, 2017 2 commits
    • Timothy B. Terriberry's avatar
      Scale PVQ input to OD_COEFF_SHIFT resolution. · e93acb2d
      Timothy B. Terriberry authored
      This ensures we operate at the same precision that Daala uses, which matters
      when activity masking is enabled, because of the gain companding.
      
      Metrics from Patchset 4 (which had slightly incorrect rounding):
      
      With activity masking (5 frames only):
      av1_pvq_AM_ref_5f@2017-02-07T03:37:53.702Z -> av1_pvq_AM_derf_fix2_coeff_scaling_5f@2017-02-07T00:12:24.427Z
      
          PSNR |  PSNR Cb |  PSNR Cr | PSNR HVS |   SSIM | MS SSIM | CIEDE 2000
        0.6653 | -12.3177 | -12.1858 |   0.3350 | 4.1013 |  2.0964 |    -4.0539
      
      In particular for Netflix_Crosswalk_1920x1080_60fps_8bit_420_60f.y4m
       -5.0589 | -22.3077 | -21.2188 |  -7.0389 | -3.3715 |-5.7794 |   -13.1891
      
      I.e., it fixes the large regression with AM on this sequence, and
       substantially improves chroma (at a lesser cost to other metrics).
      
      Without activity masking (5 frames only):
      av1_pvq_ref_5f@2017-02-07T03:52:51.279Z -> av1_pvq_derf_fix2_coeff_scaling_5f@2017-02-07T00:12:48.873Z
      
          PSNR | PSNR Cb | PSNR Cr | PSNR HVS |   SSIM | MS SSIM | CIEDE 2000
        0.0989 | -0.0322 | -0.0464 |   0.1883 | 0.0795 |  0.0579 |     0.0923
      
      Change-Id: I46b808b7c8e4733465f8bebc8336dfd5b75783ec
      e93acb2d
    • Thomas Daede's avatar
      Remove av1_cost_coeffs from rdopt.h if using PVQ. · 617744b6
      Thomas Daede authored
      Change-Id: I08a2437e4eb2ef31ec7a675fba6bcec538019241
      617744b6
  13. 06 Feb, 2017 1 commit
    • Alex Converse's avatar
      ec_multisymbol: Split off new new_tokenset experiment · a9598cd6
      Alex Converse authored
      The new_tokenset experiment replaces the unconstrained tokenset with a
      multisymbol alphabet in an inventive way.
      
      Tested configurations:
      new_tokenset + ec_adapt, new_tokenset, ec_multisymbol
      
      Change-Id: I846ab2e51c2a1dc3f2f9904ed8c47a8e98f853c5
      a9598cd6
  14. 04 Feb, 2017 2 commits
  15. 03 Feb, 2017 7 commits
    • Thomas Davies's avatar
      EC_MULTISYMBOL: Include EOB in multisymbol encoding. · fc1598ad
      Thomas Davies authored
      RD search and trellis encoding are still sub-optimal.
      
      Change-Id: I233979909118241a0c78761c1d5c2cd6857915e0
      fc1598ad
    • Yue Chen's avatar
      Remove interp filter for non-translation global mv · 19e7aa82
      Yue Chen authored
      BDRATE results:
      lowres: -0.880% (up from -0.844%)
      
      Change-Id: I017c0beddcc687148fed33c1e9963e05f1eaf6ea
      19e7aa82
    • hui su's avatar
      Fix compilation orders for ext-intra and ec-adapt · 9aa9749d
      hui su authored
      Change-Id: I378b677cf579441ba0a9014a8a77a1cf3f8b5689
      9aa9749d
    • Thomas Davies's avatar
      EC_MULTISYMBOL: always send the EOB_TOKEN after a non-zero value. · 490477ab
      Thomas Davies authored
      This will allow EOB_TOKEN to be merged with that value.
      
      Change-Id: I82ba5e8d38e235d07894e43b5fec53968f84ab6c
      490477ab
    • Thomas Davies's avatar
      EC_MULTISYMBOL: Add block zero (CBP) counts and probs. · ab78067c
      Thomas Davies authored
      Preparation for merging EOB_TOKEN. The block_zero value
      corresponds to the first EOB_TOKEN: other EOB_TOKEN values will
      be merged with non-zero values.
      
      Change-Id: I94036783ee240fa916a79c544ecd716a9c24fa59
      ab78067c
    • David Michael Barr's avatar
      Correlate od_compute_dist_8x8 with sum of squared error · d091b809
      David Michael Barr authored
      Piecewise linear fit without activity masking on subset3 intra
      and objective-1-fast inter, by simple linear regression.
      
      In combination with 79c0f32c "Remove DCT from od_compute_dist_8x8",
      this gives a even trade between perceptual and non-perceptual metrics.
      
      av1_daala_dist_30f@2017-01-23T21:32:27.902Z
       -> daala_dist_scale10_30f@2017-01-31T21:52:07.635Z
      
        PSNR | PSNR Cb | PSNR Cr | PSNR HVS |   SSIM | MS SSIM | CIEDE 2000
      2.1080 |  2.9645 |  3.4697 |  -2.2086 | 0.2541 | -2.5232 |     2.1645
      
      Piecewise linear-quadratic fit with activity masking, by same method.
      
      The total effect of activity masking and daala-dist changes, with PVQ:
      
      av1_pvq_5f@2017-01-31T01:05:24.219Z
       -> av1_float_pvq_dist_scale_AM_5f_Jan31_crfix@2017-02-02T15:14:40.477Z
      
         PSNR | PSNR Cb | PSNR Cr | PSNR HVS |    SSIM |  MS SSIM | CIEDE 2000
      22.5041 | 42.6349 | 40.8516 | -10.3510 | -6.8030 | -16.9057 |    21.2613
      
      Change-Id: I9b513509a03aa058dc5c1479c01d62c8fc363a34
      d091b809
    • Ryan Lei's avatar
      deblocking_across_tiles->loopfilter_across_tiles · 9b02b0e6
      Ryan Lei authored
      This commit renames deblocking_across_tiles to loopfilter_across_tiles, 
      to get ready for dering and clpf integration.
      
      Change-Id: Id25b051da9b1e5cb92f35a9619662597462d9537
      9b02b0e6
  16. 01 Feb, 2017 1 commit
    • Joe Young's avatar
      palette: fix bug in float_comparer() · e7a9133c
      Joe Young authored
      This function is used by av1_remove_duplicates() to remove
      duplicate palette colors.
      
      Change-Id: Ia9943bffa2032bcae92f4a6da86477a8135613f2
      e7a9133c