1. 08 Jul, 2017 2 commits
  2. 07 Jul, 2017 5 commits
    • David Barker's avatar
      Fix a logic error with cb4x4 disabled · a0c1638f
      David Barker authored
      In the case where:
      * global-motion and ext-inter are both enabled
      * cb4x4 is disabled
      * We have an 8x8 macroblock which is partitioned into smaller blocks
      
      the function is_nontrans_global_motion has a bug where it will
      always act as if that macroblock does not use global motion. This
      patch fixes that logic bug.
      
      Change-Id: I712d7bab6d646726d97aa37630399b4bcbee7757
      a0c1638f
    • Lester Lu's avatar
      Signature changes for the LGT experiment · d8b1ddce
      Lester Lu authored
      The input arguments of av1_fht* and av1_iht* functions (and their
      HBD versions) are slightly changed. Input arguments tx_type and
      bd are carried by a struct fwd_txfm_param/inv_txfm_param. This
      struct is meant to later on carry other prediction information,
      such as intra top/left boundaries to the transform level, so
      that the choice of transforms can be more adaptive to the
      prediction mode and local video content.
      
      Change-Id: Ia42544248a51845be64b72855b642ef1fe5910a9
      d8b1ddce
    • Thomas Davies's avatar
      NEW_MULTISYMBOL: adapt remaining INTERINTRA syntax elements. · cff9171e
      Thomas Davies authored
      AWCY, objective-1-fast, High Latency :
      -0.14% all metrics with NEW_MULTISYMBOL on (reference
          with NEW_MULTISYMBOL off).
      
      Change-Id: I7cb3d05977d5e424fd38a40ab558c87c5d811f14
      cff9171e
    • Thomas Davies's avatar
      INTERINTRA : adapt interintra_mode as cdf. · 299ff04f
      Thomas Davies authored
      Use CDFs to code intrainter_mode instead of deprecated
      tree coding.
      
      AWCY, objective-1-fast, High Latency :
      -0.02% all metrics, standard configuration
      
      Change-Id: I839eec7cae9783e28d2018511989b7b56dc948a5
      299ff04f
    • Thomas Davies's avatar
      Adapt the compound_type syntax element. · d8dac22f
      Thomas Davies authored
      This syntax element was encoded using legacy tree encoding, and is
      used in the compound_segment and wedge experiments.
      
      AWCY: -0.01% all metrics (objective-1-fast, High Latency)
      
      Change-Id: I3771ed27e13dd74841c615bec4c2918d39b76093
      d8dac22f
  3. 06 Jul, 2017 10 commits
    • Wei-Ting Lin's avatar
      Fix compiling bug for ext-inter cdf coding · 99eaa0eb
      Wei-Ting Lin authored
      Change-Id: I1ddc3386d5ed78a8595abfb2fd73d634bc5de03a
      99eaa0eb
    • hui su's avatar
      Re-order intra modes during RD search · 8a516a8f
      hui su authored
      Prioritize modes that are more likely to be picked. Impact on
      compression is neutral. Keyframe encoding speed increases by about 5%.
      
      Change-Id: I57f7481a42b833203e4cfb84806fe755ec37d615
      8a516a8f
    • Luc Trudeau's avatar
      [CFL] Fewer bits for fixed point · 475fc9df
      Luc Trudeau authored
      Since alpha is Q3, we reduce y_average from Q10 to Q3. As such, the
      prediction is reduced from Q13 to Q6. Chroma dc_pred is reduced from Q7
      to Q6 in order to match with the prediction.
      
      Results on Subset1 (compared to 209de2e5b with CfL enabled)
      
        PSNR | PSNR Cb | PSNR Cr | PSNR HVS |   SSIM | MS SSIM | CIEDE 2000
      0.0010 |  0.0176 | -0.0538 |  -0.0043 | 0.0027 | -0.0097 |    -0.0018
      
      Change-Id: Ib7dd3968a764e0380ddc0ad2333ebacf1e9699cd
      475fc9df
    • U-AMR\zlei3's avatar
      fix a bug in update_boundary info function · af7846ec
      U-AMR\zlei3 authored
      the existing code in update_boundary info function always set tile
      boundary. However, the cdef filter only check tile boundary info but
      not the loopfilter_across_tile_boundary_enabled flag. so it always
      disable filtering at the tile boundary no matter what the
      loopfilter_across_tile_boundary_enabled is.
      
      with this fix, tile boundary info is only set when
      the loopfilter_across_tile_boundary_enabled is set to 0. otherwise
      it should be ignored.
      
      Change-Id: I67bda08b217dd862bbeef2fd38b7a444b2edf59b
      af7846ec
    • Luc Trudeau's avatar
      [CFL] Convert dc_pred to fixed point · 2e6cb7e7
      Luc Trudeau authored
      The dc_pred values stored in the CfL context are in Q8.7 (Worst case
      division will be of 1/128).
      
      Results on Subset1 (compared to f9684d222 with CfL enabled)
      
        PSNR | PSNR Cb | PSNR Cr | PSNR HVS |   SSIM | MS SSIM | CIEDE 2000
      0.0118 | -0.0181 | -0.0109 |   0.0086 | 0.0086 |  0.0196 |     0.0018
      
      Change-Id: I0701e04fb76f03eff12ed01fd5fda675fbb15e32
      2e6cb7e7
    • Thomas Davies's avatar
      EXT_INTER: CDF coding for inter_compound_mode. · 8c08a33a
      Thomas Davies authored
      Replace deprecated tree coding when EC_ADAPT is on.
      
      AWCY: -0.01% all metrics.
      
      Change-Id: I021dbc1e5f2a64fec66da1a427a0bf930cfed292
      8c08a33a
    • Wei-Ting Lin's avatar
      ncobmc_adapt_weight: allow the usage of new motion mode · d0f7ba16
      Wei-Ting Lin authored
      The new motion mode "NCOBMC_ADAPT_WEIGHT" cannot be used
      in the motion search loop as it requires all mvs from the
      neighboring blocks. This patch add a wrapper to skip checking
      this mode during mv search.
      
      Change-Id: I3a39954e91101929f26b5479c8c6ae22abdc7bce
      d0f7ba16
    • Luc Trudeau's avatar
      [CFL] Fixed point implementation for tx average · bfe2827b
      Luc Trudeau authored
      This change does not impact the bitstream as no loss is incured by using
      a fixed point value for the transform size average.
      
      For low bit depth, the transform size average is stored using Q8.10
      fixed point format. Worst case, smallest fraction is 1/1024.
      
      Results on Subset1 (Compared to 366b74 with CfL)
      
        PSNR | PSNR Cb | PSNR Cr | PSNR HVS |   SSIM | MS SSIM | CIEDE 2000
      0.0000 |  0.0000 |  0.0000 |   0.0000 | 0.0000 |  0.0000 |     0.0000
      
      Change-Id: Ia5b046b92a0e4c40e413b16af3394bdc0a8c8cd9
      bfe2827b
    • Luc Trudeau's avatar
      [CFL] Compute Average Over TX Block Instead of Pred Block · 03678940
      Luc Trudeau authored
      When computing alpha, multiple averages are computed, one for each
      transform block. The CfL prediction now uses the transform block average
      instead of partition block average.
      
      This allows the decoder to build the CfL prediction by using only the
      collocated reconstructed luma values for the current transform size and
      not the entire partition.
      
      Results on Subset 1 (Compared to 0e81b97c with CfL)
      
        PSNR | PSNR Cb | PSNR Cr | PSNR HVS |   SSIM | MS SSIM | CIEDE 2000
      0.0180 |  0.2627 |  0.2274 |   0.0233 | 0.0301 |  0.0312 |     0.1506
      
      A small regression is expected, this change was made to simplify
      hardware implementations.
      
      Change-Id: Ib2ce2a3053b85300c5c62ef0e3270af489568a38
      03678940
    • Luc Trudeau's avatar
      [CFL] clip CFL prediction to avoid overflow · 5c453db2
      Luc Trudeau authored
      The value predicted using CfL is clipped to avoid going out of the
      scope of the uint8. Both overflow and underflow was detected over
      Subtset1.
      
      Results on Subset1 (compared to 7e55571e with CfL enabled)
      
        PSNR | PSNR Cb | PSNR Cr | PSNR HVS |   SSIM | MS SSIM | CIEDE 2000
      0.0019 |  0.0001 |  0.0009 |   0.0047 | 0.0020 |  0.0023 |     0.0012
      
      Change-Id: Ie1190e2286aa90542eaa68b814cc5cfa031acb73
      5c453db2
  4. 05 Jul, 2017 4 commits
  5. 04 Jul, 2017 1 commit
  6. 03 Jul, 2017 3 commits
    • Luc Trudeau's avatar
      [CFL] Adjust Pixel Buffer for Chroma Sub8x8 · 780d249d
      Luc Trudeau authored
      Adjust row and col offset for sub8x8 blocks to allow the CfL prediction
      to use all available reconstructed luma pixels.
      
      Results on Subset 1 (Compared to b03c2f44 with CfL)
      
         PSNR | PSNR Cb | PSNR Cr | PSNR HVS |    SSIM | MS SSIM | CIEDE 2000
      -0.1355 | -0.8517 | -0.4481 |  -0.0579 | -0.0237 | -0.0203 |    -0.2765
      
      Change-Id: Ia91f0a078f0ff4f28bb2d272b096f579e0d04dac
      780d249d
    • Nathan E. Egge's avatar
      Remove the av1_intra_mode_tree const with EC_ADAPT. · 5694aa7b
      Nathan E. Egge authored
      When EC_ADAPT is enabled, this adds const av1_intra_mode_ind and
       av1_intra_mode_inv arrays and removes the av1_intra_mode_tree const.
      This commit has no effect on metrics.
      
      Change-Id: I1de8f4ea91269adacd7fdadbc8426f641ef866f0
      5694aa7b
    • Nathan E. Egge's avatar
      Use CDFs to compute all intra mode related costs. · 693eedd1
      Nathan E. Egge authored
      When EC_ADAPT is enabled, this patch uses the adapted CDF after
       encoding the entire frame to compute the non-adapted costs that are
       used in RDO decision making when coding the following frame.
      Future patches will update these costs periodically while coding the
       frame to keep them in sync with the actual rates used when coding the
       symbols with the adapted CDF.
      
      master@2017-06-30T01:10:29.197Z -> intra_cdfs@2017-06-30T01:09:41.171Z
      
         PSNR | PSNR Cb | PSNR Cr | PSNR HVS |    SSIM | MS SSIM | CIEDE 2000
      -0.0168 |  0.0031 | -0.0181 |  -0.0018 | -0.0022 | -0.0209 |    -0.0027
      
      Change-Id: Id9e284b429e4d2a31d418141af6935d7ece1180e
      693eedd1
  7. 30 Jun, 2017 2 commits
  8. 29 Jun, 2017 3 commits
    • Luc Trudeau's avatar
      [CFL] Compute DC_PRED until end of frame · e7f9e16a
      Luc Trudeau authored
      When computing CFL's prediction block level DC_PRED,
      We can't assume that the neighbor will use the same
      transform size. As such, we don't know what pixels
      are available outside of the frame. A simple
      solution is to stop computing DC_PRED at the block
      boundary.
      
      Results on Subset 1 ( Compared to 9c6f8547 with CfL enabled)
         PSNR | PSNR Cb | PSNR Cr | PSNR HVS |    SSIM | MS SSIM | CIEDE 2000
      -0.0015 | -0.0026 | -0.0025 |  -0.0034 | -0.0008 | -0.0044 |     0.0019
      
      Change-Id: I00ed4114e5c5871fdc7222fa2000474eb11d33e0
      e7f9e16a
    • Luc Trudeau's avatar
      [CFL] Better encapsulation · 3dc55e0f
      Luc Trudeau authored
      The function cfl_compute_parameters is added and contains the logic
      related to building the CfL context parameters. As such, many cfl
      functions can now be encapsulated inside of cfl.c and not exposed to the
      rest of AV1.
      
      This also allows for supplemental asserts that validate that the CfL
      context is properly built.
      
      Results on Subset1 (compared to 9c6f8547 with CfL)
      
        PSNR | PSNR Cb | PSNR Cr | PSNR HVS |   SSIM | MS SSIM | CIEDE 2000
      0.0000 |  0.0000 |  0.0000 |   0.0000 | 0.0000 |  0.0000 |     0.0000
      
      Change-Id: I6d14a426416b3af5491bdc145db7281b5e988cae
      3dc55e0f
    • Frederic Barbier's avatar
      Cleanup dead inv-txfm functions in HBD data path · 24d565b4
      Frederic Barbier authored
      Cleanup related unit-tests.
      
      Change-Id: Ic756e6bbad80f5b9947ca1cdd55cdef77b985f81
      24d565b4
  9. 28 Jun, 2017 4 commits
  10. 27 Jun, 2017 3 commits
    • Wei-Ting Lin's avatar
      ncobmc_adapt_weight: Add bitstream syntax · 85a8f70c
      Wei-Ting Lin authored
      Define the syntax and entropy coding templates for
      NCOBMC_ADAPT_WEIGHT. The actual values of the default
      probabilities and the index tree structure need to
      be fine tuned.
      
      In this experiment all mv's in a superblock are sent
      first as in the ncobmc case.
      
      Change-Id: I68d50d3d27346c2847ea449a1168c6a99fbb4d3d
      85a8f70c
    • Debargha Mukherjee's avatar
      Reduce multiplier precision for warp least squares · f053cba2
      Debargha Mukherjee authored
      Includes reordering and other clamping changes, as well as
      changes to reduce multiplier precision.
      
      cam_lowres (60 frames): -0.092% BDRATE improvement in
      --disable-cdef --disable-global-motion --disable-ext-tx
      configuation.
      
      Change-Id: I0660c45b44fcd5a193534d8dadd1aa1ae5c5e27a
      f053cba2
    • Yi Luo's avatar
      Fix inv txfm low/high bitdepth selection logic · 51281095
      Yi Luo authored
      We are going to have several commits to setup new low/high
      bitdepth data path selection logic. This patch is for inverse
      transform. Let me summarize the ideas as following.
      
      - For low/high bitdepth selection, encoder depends on
        input configuration, e.g., video sequence bitdepth,
        profile. Decoder depends on input bitstream. This has
        nothing to do with compiler/build  configuration.
      
      - Typical encoder usage for sampling format 4:2:0.
        1) 8-bit video sequence:
         a) --profile=0
         Fastest encoding/decoding pipeline on speedup.
      
         b) --profile=2 --bit-depth=10
         Image pixels are left shifted by 2 bits. It
         employs 16-bit reference frame buffer and has high
         calculation precision. It usually enjoys higher
         compression performance.
      
        2) 10/12-bit video sequence (HDR):
         --profile=2 --bit-depth=10/12
      
      - Transform coefficient type:
        Lowbitdepth:  int16_t
        Highbitdepth: int32_t
      
      - The type, tran_low_t is still used in codebase,
        Which is int32_t, defining the data path capacity.
        Naturally, it is high bitdepth.
      
      Eventually we shall remove the configuration flags,
      CONFIG_HIGHBITDEPTH/CONFIG_LOWBITDEPTH, and seperate
      low and high bitdepth data path. Two data paths co-exist
      in the same build environment.
      
      Change-Id: I35c06d4d4f19ebf80d909168fdddbae57c3cc884
      51281095
  11. 26 Jun, 2017 1 commit
    • Lester Lu's avatar
      New experiment: LGT · ad8290b8
      Lester Lu authored
      In previous ADSTs, DST-7 and DST-4 are used for length 4 and length
      8/16/32, respectively. In this LGT experiment we explore transforms
      between DST-4 and DST-7. When CONFIG_LGT flag is on, adst4 and adst8
      are replaced by lgt4 and lgt8, the intermediate transforms with
      pre-chosen parameters.
      
      The LGTs applied here are lgt4_160 and lgt8_170, where the numbers
      mean the self-loop weights times 100. The associated values for DST-7
      and DST-4 are 100 and 200.
      
      ovr_psnr:
      lowres: -0.140
      midres: -0.131
      hdres: -0.078
      
      These changes are not applied to the highbd scenario in the
      current version.
      
      Change-Id: I20600456da8766528b2b6b11aa28801e70af498e
      ad8290b8
  12. 24 Jun, 2017 2 commits
    • David Barker's avatar
      Change mv scaling behaviour · 67d968f3
      David Barker authored
      This patch changes the motion vector scaling and clamping to be
      slightly more accurate (removing an occasional 1px offset due to
      multiple roundings) and fixes the border clamping when scaling
      frames.
      
      Change-Id: I032dc0b87854eebafa58f1f803981e23c8cc2d9b
      67d968f3
    • James Zern's avatar
      x86: _mm_set_epi64x -> _mm_{set_epi32,cvtsi32_si128} · d937cdbe
      James Zern authored
      _mm_set_epi64x is incompatible with visual studio x86 configurations
      
      Change-Id: I7986e43d0471699553affeefabae66a512d9d46a
      d937cdbe