1. 12 Jul, 2017 1 commit
    • Zoe Liu's avatar
      Further work on ext-comp-refs for ref frame coding · fcf5fa27
      Zoe Liu authored
      (1) Work with var-refs to remove redundant bits in ref frame
          coding;
      (2) Add a new uni-directional compound reference pair:
          (LAST_FRAME, LAST3_FRAME);
      (3) Redesign the contexts for encoding uni-directional reference frame
          pairs;
      (4) Use aom_entropy_optimizer to collect stats for all the default
          probability setups related to the coding of reference frames.
      
      Compared against the baseline (default enabled tools excluding ext-tx
      and global-motion for encoder speed concern) with one-sided-compound,
      the coding gain of ext-comp-refs + var-refs - one-sided-compound is:
      
      lowres: avg_psnr -0.385%; ovr_psnr -0.378% ssim -0.344%
      midres: avg_psnr -0.466%; ovr_psnr -0.447% ssim -0.513%
      
      AWCY - High Latency:
         PSNR | PSNR Cb | PSNR Cr | PSNR HVS |    SSIM | MS SSIM | CIEDE 2000
      -0.2758 | -0.1526 | -0.0965 |  -0.2581 | -0.2492 | -0.2534 |    -0.2118
      
      AWCY - Low Latency:
         PSNR | PSNR Cb | PSNR Cr | PSNR HVS |    SSIM | MS SSIM | CIEDE 2000
      -1.0467 | -1.4500 | -0.9732 |  -0.9928 | -1.0407 | -1.0180 |    -1.0049
      
      Compared against the baseline (default enabled tools excluding ext-tx
      and global-motion for encoder speed concern) without
      one-sided-compound, the coding gain of
      ext-comp-refs + var-refs - one-sided-compound is:
      
      lowres: avg_psnr -0.875%; ovr_psnr -0.877% ssim -0.895%
      midres: avg_psnr -0.824%; ovr_psnr -0.802% ssim -0.843%
      
      Change-Id: I8de774c9a74c20632ea93ccb0c17779fa94431cb
      fcf5fa27
  2. 05 Jul, 2017 1 commit
    • Thomas Daede's avatar
      Disable CDEF signaling when all segments are lossless. · f636d5cd
      Thomas Daede authored
      This required moving the CDEF and lr signaling in the
      uncompressed header to after segmentation is signaled.
      
      The all_lossless logic was factored out into onyxc_int.h.
      
      Change-Id: If8de03438d4e9f8cb49ed49b60a880962cc9d28b
      f636d5cd
  3. 28 Jun, 2017 1 commit
    • Jingning Han's avatar
      Support rectangular tx_type coding in var-tx · 243b66bc
      Jingning Han authored
      Support the transform block kernel coding for rectangular
      transform block size in var-tx. This integrates txk-sel with
      var-tx.
      
      Change-Id: I9a8edd84812168f56c79b78cc9af34f6304b1d54
      243b66bc
  4. 20 Jun, 2017 1 commit
    • James Zern's avatar
      get_min_tx_size: disable -Warray-bounds · 5d61b609
      James Zern authored
      this warning is covered by an assert and other runtime detection.
      expanding the array, adding a conditional or converting the type to int
      are less desirable.
      
      BUG=aomedia:578
      
      Change-Id: Idb6a1dec5f17db85a0e9c1d0ee372e701f4e1aa4
      5d61b609
  5. 19 Jun, 2017 1 commit
    • Luc Trudeau's avatar
      [CFL] Compute Luma Average Over Partition Unit · 3e18e4ae
      Luc Trudeau authored
      Extract the compution of the luma reconstructed average out of cfl_load
      and into cfl_compute_average. The reconstructed luma average is stored
      in the CFL_CONTEXT to avoid computing it for each transform block and
      for each plane.
      
      Results on subset1 (compared to 803bea26 with CfL)
         PSNR | PSNR Cb | PSNR Cr | PSNR HVS |    SSIM | MS SSIM | CIEDE 2000
      -0.0474 | -0.1486 | -0.2931 |  -0.0358 | -0.0397 | -0.0127 |    -0.1162
      
      Change-Id: I9e34af0fe5961ce8dbe70cb80aea2a16221d0d92
      3e18e4ae
  6. 16 Jun, 2017 1 commit
  7. 14 Jun, 2017 1 commit
  8. 12 Jun, 2017 3 commits
    • Fergus Simpson's avatar
      frame_superres: Post encode/decode upscaling · d2bcbb56
      Fergus Simpson authored
      This patch implements the post-encode and post-decode upscaling for the
      frame superresolution experiment to work.
      
      Upscaling happens after cdef and before loop restoration.
      
      For now, this patch forces on random-superres.
      
      The patch also cleans up some broken rate control hooks from VP9
      days, to be brought back later when the resize and superres tools
      are stable.
      
      Change-Id: If0a8f69224dfaa0f4ae7703bd429ea2af953c7a6
      d2bcbb56
    • Yue Chen's avatar
      supertx: code refactoring + resolve conflicts with baseline · 8e689e4b
      Yue Chen authored
      Refactoring: split prediction+extension for each plane, so we can
      handle luma/chroma supertx pred in different ways.
      Compatibility fix: fix conflicts with cb4x4 and chroma_sub8x8, now
      for chroma sub8x8 supertx, only the top-left(basic cb4x4) or the
      the bottom-right(cb4x4 + chroma_sub8x8) predictor will be used
      without any blending within a 8x8 unit.
      
      Change-Id: I6cf7b12768a82d3c7e01811ada02de84af9bd8ac
      8e689e4b
    • Zoe Liu's avatar
      Add encoder/decoder support for var-refs · 7b1ec7a9
      Zoe Liu authored
      Check the availability of the reference frames at the frame level at
      both encoder and decoder, and if a reference frame is not available
      for a specific video frame, remove the signaling of such reference
      frame info at the block level.
      
      This patch adds the consideration of the bit saving inside the RD
      optimization loop.
      
      Change-Id: I4c22f1b843b21c7d2b47e118c99c3ad615a3d4e4
      7b1ec7a9
  9. 07 Jun, 2017 1 commit
  10. 06 Jun, 2017 2 commits
  11. 01 Jun, 2017 2 commits
  12. 31 May, 2017 1 commit
    • Jingning Han's avatar
      Rework txfm_above and txfm_left context offset · 331662e9
      Jingning Han authored
      Make the txfm_above and txfm_left be processed in the unit of
      miniumum transform block size. Scale the transform block step
      size with respect to the mode_info step size.
      
      Change-Id: Iee4421e005db742cd4ff7899215560063e5f68e5
      331662e9
  13. 26 May, 2017 1 commit
    • Fergus Simpson's avatar
      resize: Clear above context to aligned width · 8c70d917
      Fergus Simpson authored
      This fixes an issue with context clearing introduced by commit
      5e81643d.
      
      In av1_zero_above_context width_y went from being assigned "2 *
      aligned_width" to "width << 1". All this patch does is replace width
      with the aligned_width.
      
      This resolves an issue with random resizing being broken on the master
      branch.
      
      Change-Id: Ib60bf81e6091802053a5a26057c626d4efe6497c
      8c70d917
  14. 25 May, 2017 2 commits
  15. 24 May, 2017 2 commits
    • Thomas Davies's avatar
      AOM_QM: redesign matrices and support CB_4X4 and RECT-TX. · 6675adff
      Thomas Davies authored
      All matrices are derived by subsampling 32x32 and 32x16 matrices.
      Inter and intra matrices now use the same matrix set.
      
      BUG=aomedia:520
      
      AWCY results for default setting (qm-min=5, qm-max=9):
      
        PSNR  | PSNR Cb | PSNR Cr | PSNR HVS | SSIM  | MS SSIM | CIEDE 2000
         2.75 |  7.98   |    -    |  -3.52   |  0.73 |   -2.21 |   4.22
      
      Change-Id: I8414d19eaf50cfe80d4fe2290da6cdf4ebb406cb
      6675adff
    • Jingning Han's avatar
      Fix set_skip_context logic · f65b89ab
      Jingning Han authored
      Properly reset mi_row and mi_col values per plane.
      
      Change-Id: Ic624f286c8ee2521403557bc1d685752166b1947
      f65b89ab
  16. 21 May, 2017 2 commits
    • Timothy B. Terriberry's avatar
      cb4x4: Don't assume TX units are half MI_SIZE in skip context indexing. · 5e81643d
      Timothy B. Terriberry authored
      Currently the "transform units" used to measure transform sizes
      in some parts of the code are based on the smallest defined
      transform size.
      
      cb4x4 currently defines a 2x2 transform size, even when chroma_2x2
      is not enabled, which means that the scale of the transform units
      was always double that of MODEINFO units.
      
      Several areas of the code were hard-coding this assumption instead
      of converting from one to the other using appropriate constants.
      
      Change-Id: Ibc55671aa5bc3ad272cb8a036f9c4f9621df85ab
      5e81643d
    • Jingning Han's avatar
      Silent clang warnings on variable init value assignment · 2af277a4
      Jingning Han authored
      Clear the clang warnings when var-tx is enabled.
      
      Change-Id: I6b005124159b0607ec3284cc2e5ba287745a2541
      2af277a4
  17. 20 May, 2017 1 commit
  18. 19 May, 2017 1 commit
    • Fergus Simpson's avatar
      frame_superres: Refactor pre-encode frame size set · bc189939
      Fergus Simpson authored
      Before this commit set_frame_size decided on the frame size to use and
      then set it. It has been changed to just take an arbitrary size to make
      it more flexible.
      
      The decision of what size to use has been moved to the new
      set_scaled_size and existing av1_calculate_superres_size.
      
      setup_frame_size implements the old logic of getting the scaled size,
      then superres size, then setting the frame to use it.
      
      This change will make post-encode upscaling possible using
      set_frame_size since it can now be given a target resolution.
      
      Change-Id: I2f0f20740a54f751bc9963f279d6bcfdfb2722c2
      bc189939
  19. 15 May, 2017 1 commit
  20. 05 May, 2017 1 commit
  21. 04 May, 2017 2 commits
  22. 03 May, 2017 2 commits
    • Jingning Han's avatar
      Account for sub8x8 chroma intra boundary condition · 3da18d60
      Jingning Han authored
      Properly account for the intra boundary condition for sub8x8
      chroma components in the modified chroma-2x2 framework. This fixes
      a rare enc/dec mismatch issue when chroma-sub8x8 is turned on.
      
      Change-Id: I058a2fb855a491bf604277f4c82169c1b55424fa
      3da18d60
    • Fergus Simpson's avatar
      frame_superres: Make frame_superres independent of loop_restoration · d91c8c9a
      Fergus Simpson authored
      The frame superresolution experiment currently makes no use of the
      features of the loop restoration experiment. While this is planned for
      the future, there is no reason to continue having frame superresolution
      depend on loop restoration for now.
      
      Frame superresolution was made dependent by having every preproccesor if
      containing its config flag also depend on the loop restoration config
      flag. Those if's are modified to only check the frame superresolution
      flag by this patch.
      
      Change-Id: Ieef47de29125af8d080739ffeac5c55a1fa99e23
      d91c8c9a
  23. 02 May, 2017 1 commit
    • David Barker's avatar
      Fix encode/decode mismatch when enabling frame resizing · d706ed25
      David Barker authored
      There was a bug caused by the following sequence of events:
      * A frame was coded full-size, filling out the
        cm->above_context array as normal.
      * The next frame was coded at a reduced size
      * Due to changes between VP9 and AV1, we now clear the
        context arrays per-tile on the decoder side. The amount
        cleared is the span of the tile, rounded up to the next
        mi unit. Since this frame is at a reduced size, this
        leaves some entries "off the edge of the frame" set to 1.
      * get_entropy_context() reads a full transform block's worth
        of data from cm->above_context. This could read the off-frame
        1s, even when all the in-frame values were 0 (eg, because
        we're working on the topmost block of the frame).
      * This leads to the decoder getting the wrong context, causing
        an encode/decode mismatch.
      
      We fix this by rounding up to the next superblock, rather than
      the next mi unit, when clearing the context arrays per-tile.
      This is safe because all tiles other than the rightmost column
      must be an integer number of superblocks wide.
      
      BUG=aomedia:481
      
      Change-Id: I8283c69957900572d44eb8d7f633cb59e352da3c
      d706ed25
  24. 01 May, 2017 1 commit
  25. 29 Apr, 2017 2 commits
  26. 28 Apr, 2017 1 commit
  27. 27 Apr, 2017 1 commit
    • Luc Trudeau's avatar
      [CFL] Store luma as prediction for chroma · e3980281
      Luc Trudeau authored
      Stores the reconstructed luma pixels for each transform block inside a
      prediction block. Rectangular transform blocks are supported.
      
      As for RDO, after all the modes have been tested for luma, an extra
      encoding is perform in order to store the reconstructed pixel values of
      the best mode. These values are then used for RDO on the chromatic
      planes.
      
      Change-Id: I354d9827e32fd41065f1b2ce02832d943a6fa156
      e3980281
  28. 25 Apr, 2017 1 commit
    • Fangwen Fu's avatar
      Extend delta q to have delta lf · 231fe424
      Fangwen Fu authored
      This is the second patch.
      * Add delta loop filter level at super block level.
      * Add symbol coding for delta lf syntax
      * Allow delta lf to work with segments
      
      Change-Id: I393a021a875d03c6e113127cbb3543fc077308e4
      231fe424
  29. 24 Apr, 2017 2 commits
    • Yaowu Xu's avatar
      Cleanup: Remove const for params passed by value · 4ff59b55
      Yaowu Xu authored
      BUG=aomedia:448
      
      Change-Id: Ieff977fca8a5033ddef2871a194870f59301ad8f
      4ff59b55
    • Luc Trudeau's avatar
      [CFL] Custom block-level DC_PRED · f8164157
      Luc Trudeau authored
      Adds the CfL experiment flag and computes a block-level DC_PRED that is
      required by CfL in order to compute alpha_cb and alpha_cr.
      
      The rate-distorsion impact of computing DC_PRED at the prediction block level
      for chroma planes is rather small
      
      Subset 1:
      master_no_cdef@2017-04-18T20:37:05.712Z
        -> block_DCPRED_no_cdef@2017-04-18T20:38:07.381
        PSNR | PSNR Cb | PSNR Cr | PSNR HVS |   SSIM | MS SSIM | CIEDE 2000
      0.0712 |  0.0337 | -0.1692 |   0.0693 | 0.0814 |  0.0710 |    -0.0063
      Note: CDEF was disabled because of problematic asserts.
      
      Change-Id: I44d1cde8605b108366f4bd4cedbf5159dbbb5880
      f8164157