1. 19 Jan, 2017 3 commits
    • Jingning Han's avatar
      Support adaptive scan order in cb4x4 mode · a6b0c4c9
      Jingning Han authored
      This commit adds 2x2 transform block scan order to make the
      adaptive scan order support cb4x4 mode.
      
      BUG=aomedia:135
      
      Change-Id: Ic8c3ae9ed65d577df629524b617b386b5e799d4c
      a6b0c4c9
    • Jingning Han's avatar
      Remove an outdated assertion · 25f2f7d9
      Jingning Han authored
      The check condtion on block size is deprecated. No need to keep
      this assertion around.
      
      Change-Id: Icf2dde2a678cbbce837798877634b7be54e86e67
      25f2f7d9
    • Yue Chen's avatar
      Bug fix: determine tx_mode based on lossless mode of all segments · eeacc4c0
      Yue Chen authored
      When segment feature is on, frame level cm->tx_mode can be set to
      ONLY_4X4 only if all segments are lossless. Otherwise will cause
      bugs when xd->lossless[i] is 0 and xd->lossless[0] is 1.
      Also fix the condition of coding tx_type, which should be on when
      the qindex of current segment is > 0.
      
      BUG=aomedia:106
      BUG=aomedia:104
      
      Change-Id: Ic076083bb78b3b99a6f7d17ec82ee402c64bcc52
      eeacc4c0
  2. 18 Jan, 2017 8 commits
    • Angie Chiang's avatar
      Store result on conv_params->buf when no rounding · f7159223
      Angie Chiang authored
      We need uint16_t buf for storing no-rounding prediction.
      Add uint16_t buf in conv_params for that.
      This CL let us avoid changing interface of convolve functions.
      
      Change-Id: I079fad911327f40ffb98e17c73e7638b1719c975
      f7159223
    • Angie Chiang's avatar
      Change build_inter_predictors · 907230ea
      Angie Chiang authored
      Separate prediction code and parameter generating code.
      This will not change bitstream statistics.
      
      Change-Id: I194480166d3f8641592e53683029be1d466cfba9
      907230ea
    • Yue Chen's avatar
      Add rd loop of NCOBMC · f27b1605
      Yue Chen authored
      At the final round of encoding of each superblock, will go through
      each prediction block to check if ncobmc mode is better than non-
      overlapped prediction. Note that causal obmc mode is dumped here.
      
      PSNR gain (MOTION_VAR + NCOBMC): -2.845% lowres
      
      Change-Id: Ibe504f7f1882446a08ba426e1e9824bca73bf655
      f27b1605
    • Yunqing Wang's avatar
      Fix the transform size/type search condition · 2615d6ea
      Yunqing Wang authored
      While encoding a key frame with quantizer = 0 and aq-mode = 1,
      for some segment_ids, the quantizer got modified and could be
      > 0, and lossless[segment_id] might be 0 or 1 depending on the
      segment_id. Namely, blocks with lossless[segment_id] = 0 were
      allowed to choose transform sizes other than 4x4. This conflicted
      with tx_mode which was a frame-level decision. In this patch,
      the transform search condition was modified so that the transform
      choice was consistent with tx_mode of that frame.
      
      BUG=aomedia:104
      
      Change-Id: Ia39127b5dee129283a133cf5e4000da62d9e0f1c
      2615d6ea
    • Urvang Joshi's avatar
      Enable rectangular transforms for Intra also. · feb925fe
      Urvang Joshi authored
      These are under EXT_TX + RECT_TX experiment combo.
      
      Results
      =======
      
      Derf Set:
      --------
      All Intra frames: 1.8% avg improvement (and 1.78% BD-rate improvement)
      Video: 0.230% avg improvement (and 0.262% BD-rate improvement)
      
      Objective-1-fast set
      --------------------
      Video: 0.52 PSNR improvement
      
      Change-Id: I1893465929858e38419f327752dc61c19b96b997
      feb925fe
    • David Barker's avatar
      Fix compile errors with loop-restoration + highbd · 60a055bd
      David Barker authored
      Change-Id: I0d9850e082b8da3b182a3bbaf6569c45317c9659
      60a055bd
    • Angie Chiang's avatar
      Pass ConvolveParams into prediction functions · 9f45bc48
      Angie Chiang authored
      Those functions includes
      av1_make_inter_predictor
      av1_build_inter_predictor
      inter_predictor
      
      Change-Id: Ide3b744277cf30964e8b352fc8de91365d7217a8
      9f45bc48
    • Alex Converse's avatar
      Add unpoison_partition_ctx experiment · 55c6bdeb
      Alex Converse authored
      At the edges of the picture only a subset of partitions are legal. Add
      new contexts for these borders so they don't distort the probabilities of
      the interior of the image where all partitions are legal.
      
      Only include one context for each block size of each border direction
      because so few blocks fall into these contexts to begin with.
      
      objective-1-fast:
         PSNR | PSNR Cb | PSNR Cr | PSNR HVS |    SSIM | MS SSIM | CIEDE 2000
      -0.0294 | -0.0911 | -0.2382 |  -0.0481 | -0.0441 | -0.0450 |    -0.0454
      
      derf144: -0.135
      lowres: -0.124
      midres: -0.076
      hdres: -0.078
      
      Change-Id: I909b98eebb7e49273cde90154c8408febe334158
      55c6bdeb
  3. 17 Jan, 2017 2 commits
  4. 14 Jan, 2017 3 commits
    • Angie Chiang's avatar
      Refactor av1_update_neighbors · 0cfaeeaf
      Angie Chiang authored
      Beside above and left positions, additional above-left,
      above-right, and bottom-left positions are added as
      neighbor candidates.
      
      In av1_update_neighbors, two available positions will be picked as
      context neighbors.
      
      The picking priority is
      above -> left -> above-left -> above->right -> bottom->left
      
      Change-Id: I82eaf0b23d0189caaea008ecc86776492886a05b
      0cfaeeaf
    • Angie Chiang's avatar
      Use default scan order as a tie breaker · fe2a959e
      Angie Chiang authored
      Change-Id: I85f059b6e2c48bcdf2edd3b7bf896fdccbaaa703
      fe2a959e
    • Yi Luo's avatar
      Fix 4x4 hybrid transform accuracy check tests · 8f315b19
      Yi Luo authored
      - Adjust the accuracy value and fix,
        C/Trans4x4HT.AccuracyCheck/5,6,7 as CONFIG_AOM_HIGHBITDEPTH = 1.
      
      Change-Id: I2f8d97b2e2c1ee45bfae613657ca01b5666d76ee
      8f315b19
  5. 13 Jan, 2017 11 commits
  6. 12 Jan, 2017 11 commits
    • Yue Chen's avatar
      Refactor write_modes_b() and decode_block() · 64550b6a
      Yue Chen authored
      In order to reduce the code complexity for handling parameter
      coding and recon separately for each 64x64 in non-causal obmc
      experiment, we break them down to two steps calling separate
      functions, one for params, the other dealing with coefficients
      and recon(decoder side).
      Note: actually the non-causal prediction can use the original
      syntax, but right now in the decoder coeff detoken and recon are
      heavily nested.
      
      Change-Id: I72d9c42ab8f38b57850d6b0481551893f1702822
      64550b6a
    • David Barker's avatar
      Add SSE2 vectorized warp filter for lowbd · d5dfa96e
      David Barker authored
      End-to-end speed improvements: (measured on tempete_cif.y4m,
      20 frames for encoder and all 260 frames for decoder)
      
      * GLOBAL_MOTION encoder: ~10% faster
      * GLOBAL_MOTION decoder: 100-200% faster depending on bitrate
      * WARPED_MOTION encoder: ~2.5% faster
      * WARPED_MOTION decoder: ~20-40% faster depending on bitrate
      
      The improvement in the GLOBAL_MOTION decoder is particularly
      large because its runtime is dominated by calls to warp_plane().
      
      This introduces minor changes to the output of the warp filter,
      but these should be rare.
      
      Change-Id: I5813ab9e90311e27587045153c32d400b6b9eb92
      d5dfa96e
    • Yi Luo's avatar
      High bit depth 32x32 inverse DCT_DCT transform, AVX2 · 3bd83775
      Yi Luo authored
      - Witness the follow user-level speedup on AV1 baseline:
       Encoding time reduction: 4.26%
       Decoding time reduction: 25.35%
      
      Change-Id: Ideaf3cd473ad45ed9256c80d5a5daed0a6e098cf
      3bd83775
    • Yue Chen's avatar
      Add NCOBMC experimental flag · b2d26453
      Yue Chen authored
      NCOBMC (non-causal obmc) allows overlapped prediction that takes
      mvs from blocks at positions with non-causal relation (e.g. at the
      bottom, or to the right) to the current block.
      This experiment will be a sub-experiment of MOTION_VAR, so will only
      be effective when MOTION_VAR is on.
      
      Change-Id: Ie3aa9591e1c15f5cc251664ea3c146210a5010cf
      b2d26453
    • Jingning Han's avatar
      Make av1_update_txb_coeff_cost() check condition support cb4x4 · 904fd182
      Jingning Han authored
      Replace hard coded numbers with macro defs.
      
      Change-Id: I125ef4e4c8c3aead182c583522450626b730bbb3
      904fd182
    • Jingning Han's avatar
      Make rd_debug aligned to var-tx · c7ea761f
      Jingning Han authored
      Fix the corner case and use the right rate cost udpate for rd_debug.
      This would make the var-tx pass rd_debug test.
      
      Change-Id: Ib0fbd2d73030c0d150222c6b7c2dfffc0c6af085
      c7ea761f
    • Jingning Han's avatar
      Make txfm block partition context support rectangular blocks · 0c70a80f
      Jingning Han authored
      Make the transform block partition context model support the
      rectangular transform block size partition. The coding gains
      from cb4x4 and var-tx are:
                cb4x4 + var-tx
      lowres         4.3%
      midres         2.6%
      
      Change-Id: I6cc1413fbf6d7707ca7fd24300623a3f0118be7c
      0c70a80f
    • Nathan E. Egge's avatar
      Move from Daala accounting to AOM accounting. · cefb4094
      Nathan E. Egge authored
      Replace all instances of Daala's OD_ACCOUNTING with those specified by
       CONFIG_ACCOUNTING.
      
      Change-Id: Ibb59fc5df0ce4b0528b15296bf2f14029c414bc0
      cefb4094
    • Nathan E. Egge's avatar
      Don't include Daala EC headers directly. · cceac33a
      Nathan E. Egge authored
      The generic coder now uses the AOM entropy coder API and no longer
       needs to include the entenc.h and entdec.h headers.
      
      Change-Id: I213acb5b6bd8a3fe60dc096b83d76ae72315e9de
      cceac33a
    • Nathan E. Egge's avatar
      Use aom_reader / aom_writer API to code rest. · 25007c88
      Nathan E. Egge authored
      The functions aom_encode_pvq_split() and aom_decode_pvq_split() code
       the rest value as raw bits using the od_ec_enc_bits() and
       od_ec_dec_bits() functions.
      These code bits in the reverse order as the aom_write_literal() and
       aom_read_literal() functions, so both the encoder and decoder must
       be changed at the same time.
      This commit has no impact on metrics but is a bitstream change.
      
      Change-Id: Iee79777f35aebbb23043a7efa7fe439af70348ba
      25007c88
    • Nathan E. Egge's avatar
      Use aom_reader / aom_writer API to code raw bits. · f1e2fbdc
      Nathan E. Egge authored
      The functions aom_laplace_encode_special() and
       aom_laplace_decode_special() code the rest value as raw bits using the
       od_ec_enc_bits() and od_ec_dec_bits() functions.
      These code bits in the reverse order as the aom_write_literal() and
       aom_read_literal() functions, so both the encoder and decoder must
       be changed at the same time.
      This commit has no impact on metrics but is a bitstream change.
      
      Change-Id: I428d5a83dd108c3a54f3c1dbae2c7fd5e59f5726
      f1e2fbdc
  7. 11 Jan, 2017 2 commits