1. 01 Mar, 2017 2 commits
    • Jingning Han's avatar
      Fix compiling warnings in var-tx and pvq · ab77e73b
      Jingning Han authored
      Change-Id: Ie836a113978028f3bde2acd31061d9a663547087
      ab77e73b
    • Fergus Simpson's avatar
      handle_inter_mode: add arguments struct · 073c6f33
      Fergus Simpson authored
      Adds the arguments struct HandleInterModeArgs to hold arguments that
      are conditional on compiled features. This means that there are no
      longer #if's in the function's argument list.
      
      Some of the array pointers that were optional arguments have been
      made array members in the new struct, but not all. This is due to the
      function being called with either references to arrays that are
      maintained between trying different modes OR with references to
      "dummy" arrays initialized to zero. The arrays that are always used
      are now members of the HandleInterModeArgs struct.
      
      Change-Id: I3076fd53c3cddf5a6d14bbe7d23a889465ed716d
      073c6f33
  2. 28 Feb, 2017 3 commits
    • Debargha Mukherjee's avatar
      Assign offsets correctly to compute warped motion · 246d2737
      Debargha Mukherjee authored
      Offsets for the least-squares for affine motion computation
      are now set at the top left corner of the current block.
      
      Improves stability and performance a little.
      
      Change-Id: I68ca7e74c6102502daa8ca3373af2b2dd59400c3
      246d2737
    • Jingning Han's avatar
      Disable compound mode in sub8x8 coding blocks · c41a549a
      Jingning Han authored
      Disable the support of compound prediction modes for sub8x8 codking
      blocks. Make the rate-distortion optimizations process account for
      such constraints.
      
      With the use 2x2 chroma prediction block, this makes the wrost case
      number of inter predictors same as vp9. It affects the coding
      gains by 0.35% for lowres, 0.17% for midres, and 0.08% for hdres.
      
      The encoding speed is up by 10%.
      
      Change-Id: Ieb2a83030676911baa403e586f1f800cbf485d81
      c41a549a
    • Yaowu Xu's avatar
      Use correct segment · 1e2aae1a
      Yaowu Xu authored
      Segmment based lossless flag is used in select transform size, this
      commit fixes a bug where wrong segment_id is used in such selection.
      
      BUG=aomedia:350
      
      Change-Id: Ibc981c779739849bac00447155180abbd319eb28
      1e2aae1a
  3. 27 Feb, 2017 4 commits
    • Debargha Mukherjee's avatar
      Better block center in gm_get_motion_vector fn · f6dd3c68
      Debargha Mukherjee authored
      Also supports homography models for future experiments.
      
      Change-Id: I4510540f54133e063891ed491c95c087222f7810
      f6dd3c68
    • Debargha Mukherjee's avatar
      Adds macro to test cb4x4 w/o sub8x8 txtype search · 094c9439
      Debargha Mukherjee authored
      USE_TXTYPE_SEARCH_FOR_SUB8X8_IN_CB4X4 macro added to turn
      tx_type search on/off for sub8x8 in cb4x4 mode.
      
      The purpose is mainly to analyze the coding gains from cb4x4
      but this later can be made into a speed feature as well.
      
      Change-Id: Ic22026c373eebba87f324689ac5686a2844315b6
      094c9439
    • Debargha Mukherjee's avatar
      Integerize warped motion computation · e6eb3b53
      Debargha Mukherjee authored
      Integerizes computation of the least squares for warped motion.
      The model is restricted to only Affine. Affine seems easiest
      to compute and integerize since it can be split into two 3-dim
      least squares problems, as opposed to rotation-zoom which needs
      a 4-dim least-squares problem to be solved.
      The current implementation requires only one division per block.
      
      BDRATE impact is mminimal. The upgrade to the affine model improves
      coding efficiency but integerization also degrades efficiency a
      little. Overall there is a net gain of about -0.07% BDRATE on
      the lowres set.
      BDRATE lowres: -1.113% with ----enable-warped-motion vs. without
      (up from -1.044%).
      
      Change-Id: I6b9216ac0737d76f59054293eabee48e17739ec4
      e6eb3b53
    • Angie Chiang's avatar
      Prefer using get_tx_size() · 7fcfee40
      Angie Chiang authored
      Change-Id: Ifcdd3ce2953c1ecb1d0962da412a4b5ba2cda912
      7fcfee40
  4. 24 Feb, 2017 1 commit
    • Luc Trudeau's avatar
      Add get_plane_type() helper function. · 005feb6b
      Luc Trudeau authored
      Adds the static inline function get_plane_type to convert a plane number
      to the corresponding PLANE_TYPE.
      
      There's no change to the bitstream, it only encapsulates the logic to
      get the PLANE_TYPE.
      
      Change-Id: I1199db3a32c89437d9c029ab5b2b2e62582a13a2
      005feb6b
  5. 23 Feb, 2017 5 commits
    • Jingning Han's avatar
      Fix a compiling error in ext-tx and var-tx · 2b0eeb16
      Jingning Han authored
      Change-Id: Icd4cd42b1b9fa9066cda3e33e487298c8d802546
      2b0eeb16
    • Jingning Han's avatar
      Remove recon_variance variable from MACROBLOCK · 1857cfa1
      Jingning Han authored
      Skip redundant computation of recon_variance value.
      
      Change-Id: I0ea1a3528f8bdc7095d9cc458ce0bd3a958989b4
      1857cfa1
    • Jingning Han's avatar
      Add chroma 2x2 block experiment · 31b6a4f9
      Jingning Han authored
      Support the use of 2x2 prediction and transform block size for
      chroma components. This experiment builds on top of cb4x4. It
      brings back the loss in performance gains due to 4x4 chroma
      component constrain. The coding gains for lowres are up from 1.5%
      to 2.5%.
      
      Change-Id: I8e461e230c2d920f6df1af9d935ebe9dfa3820d9
      31b6a4f9
    • David Barker's avatar
      Change gm_get_motion_vector · 45390c18
      David Barker authored
      Since gm_get_motion_vector is trying to give a motion vector for
      "the frame as a whole", it makes more sense for it to calculate
      the motion of the *center* of the block rather than the top-left
      corner of the frame.
      
      In theory, this change should also help the encoder make better
      decisions on when to use global motion. It avoids an issue
      where, early in the frame, NEARESTMV looks like a good way to use
      the global motion vector *without* paying the rate cost applied
      to the first few global motion blocks in each frame. This seems
      to lead to a better overall result.
      
      Change-Id: Ia5c6259ceb8b4ff3d00a5d553e1d18bdb802da59
      45390c18
    • Angie Chiang's avatar
      Enable av1_is_interp_needed in handle_inter_mode · e7e37208
      Angie Chiang authored
      If there no sub-pixel in both direction of MV,
      the interp_filter is set to EIGHTTAP_REGULAR
      
      Change-Id: I208c34906544f1937c57d78017999be6eddd9e87
      e7e37208
  6. 22 Feb, 2017 6 commits
  7. 18 Feb, 2017 1 commit
  8. 17 Feb, 2017 2 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
    • 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
  9. 16 Feb, 2017 2 commits
  10. 13 Feb, 2017 2 commits
  11. 08 Feb, 2017 1 commit
  12. 03 Feb, 2017 2 commits
    • 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
    • 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
  13. 31 Jan, 2017 3 commits
    • 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
    • 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
    • Sarah Parker's avatar
      Make global_motion work with ext_inter · c2d38715
      Sarah Parker authored
      Change-Id: I2a490e144099d7692296992528192c1f11d2c06f
      c2d38715
  14. 30 Jan, 2017 3 commits
  15. 27 Jan, 2017 2 commits
  16. 26 Jan, 2017 1 commit
    • Urvang Joshi's avatar
      Palette: Don't store tokens for pixels outside image boundary. · 56ba91bb
      Urvang Joshi authored
      If part of a block falls outside right and/or bottom image boundary,
      then only store tokens for the part of it within the boundary.
      
      Also, consider only the part of the block within the boundary when
      calculating the number of colors in the image, deciding the base
      colors for palette, RD calculation etc.
      
      The part of color map corresponding to pixels outside the image
      boundary is padded with color indices copied from same row/column.
      This behavior is similar to how pixels outside the boundary are padded.
      
      For screen_content set, this is improves compression performance by
      0.038 overall. One clip, in particular, has a significant gain of 0.8.
      
      Change-Id: I745ca032f313c5041aacc98c03ae4bfc33d840de
      56ba91bb