1. 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
  2. 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
  3. 04 Feb, 2017 3 commits
  4. 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
  5. 02 Feb, 2017 4 commits
  6. 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
  7. 31 Jan, 2017 10 commits
    • Alex Converse's avatar
      ans: Remove some out of date ifdefs · 8aca36d3
      Alex Converse authored
      Change-Id: Ibd4bbceca8218eb94ed0af3c980f8e829a1896de
      8aca36d3
    • Urvang Joshi's avatar
      Bugfix: Fix an assert being triggered because of palette. · 451e0f22
      Urvang Joshi authored
      rd_pick_palette_intra_sby() was being passed a dummy 'best_mbmi' in
      one case, and later that dummy value could be assigned to 'mbmi'
      causing invalid values in 'mbmi'.
      
      This bug was introduced by:
      de0c70a2: Refactor rd_pick_intra_sby_mode()
      
      See the referenced bug for a repro case.
      
      BUG=aomedia:337
      
      Change-Id: If6b0aa329f4e4902cd4de8a5e09bc5d9196492a1
      451e0f22
    • Yue Chen's avatar
      Offset probabilities of compound types for cb4x4 · 4415b6cc
      Yue Chen authored
      BUG=aomedia:313
      
      Change-Id: Ic1a9e20e5fd3f645d3be851d7be759cf4caf7c02
      4415b6cc
    • David Barker's avatar
      Fix ext-inter + compound-segment + supertx · 426a997e
      David Barker authored
      Allow the above combination of experiments to work together
      correctly, fixing an encode/decode mismatch bug when they
      were all enabled.
      
      This change causes build_masked_compound(_highbd) to only
      ever be called if CONFIG_SUPERTX is off, so wrap these functions
      in an '#if !CONFIG_SUPERTX' block.
      
      BUG=aomedia:313
      
      Change-Id: Ic3886bc69ba9624b8fcb0a4c2d71fc64d2c0f22c
      426a997e
    • Urvang Joshi's avatar
      Fix segmentation fault when encoding all keyframes (kf-max-dist=0). · d803cb96
      Urvang Joshi authored
      The issue was that:
      - We call av1_setup_pre_planes() when this is not an intra-only frame,
      but,
      - But, we do motion vector search for any frame other than first frame
      Doing both of these only when this is not an intra-only frames makes
      logical sense and fixes the crash too.
      
      This also avoids doing motion search for intra-only frames in the first
      pass.
      
      Verified that there is no change in compression performance for video,
      as well as when forcing all keyframes.
      
      BUG=aomedia:133
      
      Change-Id: I7b18c0568eaa29c6c97f31f226243e5a9dbaecf1
      d803cb96
    • Sarah Parker's avatar
      Make global_motion work with ext_inter · c2d38715
      Sarah Parker authored
      Change-Id: I2a490e144099d7692296992528192c1f11d2c06f
      c2d38715
    • Thomas Davies's avatar
      EC_MULTISYMBOL: Separate out tokenization loop. · c6733fb7
      Thomas Davies authored
      This will make merging EOB_TOKEN easier.
      
      Change-Id: I1789344e9c3bbb329c30287a00aeee3c8a9d60c4
      c6733fb7
    • Thomas Davies's avatar
      EC_MULTISYMBOL: split off token packing. · f6390321
      Thomas Davies authored
      This will make refactoring to support EOB_TOKEN easier.
      
      Change-Id: I8c7e37d090fd142f6b95d997116b84e6e10f3db5
      f6390321
    • Thomas Davies's avatar
      EC_MULTISYMBOL: reconfigure coefficient decoding loop. · 0583c984
      Thomas Davies authored
      Preparation for merging EOB into multi-symbol encoding.
      The more_data flag for the first position is moved
      out of the loop, and for remaining positions is
      moved in with the previous coefficient. This way it
      can always be associated with the previous non-zero
      coefficient.
      
      Change-Id: Idfb38058f4c415127b4d9a9beeb8ea2d3a2ec1a2
      0583c984
    • Thomas Davies's avatar
      EC_MULTISYMBOL: merge ZERO_TOKEN into coding scheme. · 0ccefe21
      Thomas Davies authored
      Zero, one, and two or more coded as one symbol (head).
      Remaining tokens coded as a tail symbol.
      
      The pareto CDF distribution is adjusted to cover tokens from
      two onwards.
      
      Change-Id: I98b33fab6b9f52690f6ad618ac55e725a97be056
      0ccefe21
  8. 30 Jan, 2017 4 commits
    • Urvang Joshi's avatar
      Palette code: add comments and rename some variables. · 23a61117
      Urvang Joshi authored
      - Added comments for some tables and #defines for clarity.
      - Renamed some variables to ensure we use "color_index" instead of
      "color" for palette color index related variables.
      
      Change-Id: Ica95a26e0f171a41a3259c8e6b3b891b8cd10151
      23a61117
    • Yue Chen's avatar
      Fix conflicts between cb4x4 and warped_motion · d0d3bccf
      Yue Chen authored
      Set mi_size properly in findSample()
      
      Change-Id: I26bae25bf6300a107108dc5c2b7098e7d7dfa750
      d0d3bccf
    • Jingning Han's avatar
      Make cb4x4 work with daala-ec · 1992af1b
      Jingning Han authored
      This commit makes the daala-ec work in the cb4x4 mode. As compared
      to --enable-experimental, --enable-experimental --enable-cb4x4
      improves the coding performance by:
      
      lowres 2.6%
      midres 1.2%
      
      Change-Id: Ifee6f011c80364492c4a547513d24eb2958b5a56
      1992af1b
    • Urvang Joshi's avatar
      Palette Optimization: O(1) context lookup. · cdbe7085
      Urvang Joshi authored
      Now that we have small number of contexts (5), use hash multipliers
      (instead of base 11), so that color context hash is within a small
      range. This allows us to use a lookup table to get color context
      instead of a for loop.
      
      Output bitstreams are bit-exact, so no change in compression.
      
      Change-Id: I8cd8c893048c2fc6b22ccbd56f652d11486e2ee9
      cdbe7085