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.
      Change-Id: Ic8c3ae9ed65d577df629524b617b386b5e799d4c
    • 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
    • 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.
      Change-Id: Ic076083bb78b3b99a6f7d17ec82ee402c64bcc52
  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
    • 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
    • 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
    • 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.
      Change-Id: Ia39127b5dee129283a133cf5e4000da62d9e0f1c
    • Urvang Joshi's avatar
      Enable rectangular transforms for Intra also. · feb925fe
      Urvang Joshi authored
      These are under EXT_TX + RECT_TX experiment combo.
      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
    • David Barker's avatar
      Fix compile errors with loop-restoration + highbd · 60a055bd
      David Barker authored
      Change-Id: I0d9850e082b8da3b182a3bbaf6569c45317c9659
    • Angie Chiang's avatar
      Pass ConvolveParams into prediction functions · 9f45bc48
      Angie Chiang authored
      Those functions includes
      Change-Id: Ide3b744277cf30964e8b352fc8de91365d7217a8
    • 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.
         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
  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
    • Angie Chiang's avatar
      Use default scan order as a tie breaker · fe2a959e
      Angie Chiang authored
      Change-Id: I85f059b6e2c48bcdf2edd3b7bf896fdccbaaa703
    • 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
  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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
      Change-Id: Ibb59fc5df0ce4b0528b15296bf2f14029c414bc0
    • 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
    • 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
    • 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
  7. 11 Jan, 2017 2 commits