1. 12 Feb, 2017 4 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
    • Angie Chiang's avatar
      Implement shorter-tap first in convolve_round · 118bf67c
      Angie Chiang authored
      The performance change is 0.004% on lowres
      
      Change-Id: If3702ba6377ac42997e7d49b8959ff16fb182daa
      118bf67c
    • 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
  2. 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
  3. 10 Feb, 2017 3 commits
    • Steinar Midtskogen's avatar
      Speed up CLPF when there's nothing to clip · f844e6ef
      Steinar Midtskogen authored
      Gives 7% speed-up in the CLPF processing (measured on SSE4.2).
      
      Change-Id: I934ad85ef2066086a44387030b42e14301b3d428
      f844e6ef
    • 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
    • Angie Chiang's avatar
      Exclusively uses 12-tap filter in convolve_round · 822eea32
      Angie Chiang authored
      Performance drop by 0.084% on lowres
      
      Change-Id: I2bcaae96b68033a0af7a1da988505623bc14ed94
      822eea32
  4. 09 Feb, 2017 1 commit
  5. 08 Feb, 2017 2 commits
  6. 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
  7. 06 Feb, 2017 2 commits
    • Angie Chiang's avatar
      Add av1_convolve_2d_facade · 7927a97d
      Angie Chiang authored
      When convolve_round is on, av1_convolve_2d_facade will be used for
      interpolation rather than av1_convolve. Will remove the experiment
      code of convolve_round experiment from av1_convolve in another CL.
      
      So far we use 4-bit rounding in the intermediate stage on top of using
      post rounding for compound mode after the last stage.
      
      This will give us roughly 0.45% gain on lowres , 0.39% on midres and
      roughly 0.6-0.7% on hdres
      Altogether, is 1.15% on lowresm, 0.74% on midres and roughly 1.7-1.8% on
      hdres
      
      Note that there no restriction usage of 12-tap filter in the CL.
      Adding that, we will lose roughly 0.1% again on lowres.
      
      Change-Id: I6332e1d888e28a3b3ddc29711817d66e52cb5cdf
      7927a97d
    • 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
  8. 04 Feb, 2017 3 commits
  9. 03 Feb, 2017 11 commits
    • Yushin Cho's avatar
      Enable an activity masking of PVQ · e4c46918
      Yushin Cho authored
      By default, the activity masking is used with PVQ.
      In addition to '--enable-pvq', '--enable-daala-dist' is also
      required by configure to use the activity masking.
      
      Change-Id: I5100a1db992f0e693e61daf5439de8ae8c64a752
      e4c46918
    • Yushin Cho's avatar
      Fix fixed-pt PVQ compand/expand outputs zero gain · 3ebfe2a4
      Yushin Cho authored
      For fixed-point version of PVQ, which is current default,
      added MAXI(1, ) to limit the minimum companded or expanded gain to be one.
      Previously, gain compand/expand function, which is invoked when
      activity masking is enabled, sometimes outputs zero
      then triggered the assert(gain != 0).
      
      Metric change from floating-pt to fixed-pt PVQ is:
      PSNR  PSNR-HVS  SSIM  CIEDE-2000  PSNR Cb PSNR Cr MS-SSIM VMAF
      0.02  0.10      0.08  0.11        0.01    0.02    0.13    -0.30
      
      Change-Id: I64a60d1970d35a26af227841e4a5e50a89ddc44c
      3ebfe2a4
    • 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
    • Ryan Lei's avatar
      set loop_filter_across_tiles_enabled flag to 1 in default case · ad67d795
      Ryan Lei authored
      Change-Id: I907976619a433a92d671c5cce25f3e8806638e80
      ad67d795
    • Jonathan Matthews's avatar
      Bugfix: ensure for pareto coef that there are no zero range encodings · 13754540
      Jonathan Matthews authored
      Introduced by change I98b33fab6b9f52690f6ad618ac55e725a97be056
      
      BUG=aomedia:349
      
      Change-Id: Ib6df52ac2442f60c159bae2271793b7570d53a19
      13754540
    • 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
  10. 02 Feb, 2017 4 commits
  11. 01 Feb, 2017 4 commits
    • 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
    • Debargha Mukherjee's avatar
      Misc global motion changes. · d978cd5e
      Debargha Mukherjee authored
      A few encoder global-motion estimation parameter changes.
      lowres: -0.844% (up by 0.08%)
      
      Change-Id: Ib080125803cf56a91ce7d482d6d1445160105010
      d978cd5e
    • Sebastien Alaiwan's avatar
      Merge dct_const_round_shift functions. · d0e23b40
      Sebastien Alaiwan authored
      Change-Id: I73e3eec0b8fd17c3f9b9f52afc9fac43f3043028
      d0e23b40
    • David Barker's avatar
      Fix encode/decode mismatches for supertx + delta-q · 3aec8d6c
      David Barker authored
      This fixes the following mismatch bugs:
      * At the bitstream level, the decoder would not read the delta_qindex
        information for supertx blocks, but the encoder always sent it,
        leading to the encoder and decoder becoming misaligned.
        The delta_qindex information is still required for supertx blocks,
        so change the decoder to read it.
      * In addition, the quantizer was not properly adjusted for supertx
        blocks at the decoder. We copy the quantizer setup code from
        non-supertx blocks.
      
      Since this does not change the encoder, it should not have any
      quality impact.
      
      Change-Id: I9a0f79c3aa66f2a5a353821e2a6f3b526636e7b4
      3aec8d6c
  12. 31 Jan, 2017 3 commits