1. 31 Aug, 2017 8 commits
    • Angie Chiang's avatar
      Use 7 neighbors for nz_map ctx · 2b38deff
      Angie Chiang authored
      This will let coding performance drop slightly
      lowres 0.093%
      
      Increase encoder speed by 24%
      
      Reduce nz_map's context size by 20%
      
      Change-Id: I871c18a7e0341e066afc334556b9998194b3f8c9
      2b38deff
    • Hui Su's avatar
      Do not allocate leaf nodes in pc tree when CB4x4 is on · cad9fb52
      Hui Su authored
      Change-Id: Idbde50deab816b669ca362e3e739c76a7f434f2c
      cad9fb52
    • Hui Su's avatar
      Reduce memory allocation in alloc_mode_context() · 8efee2f5
      Hui Su authored
      Before this patch we were passing in the number of pixels as
      number of 4x4 blocks, thus allocating much more memory than
      necessary. With this patch, the heap usage on a CIF test clip
      drops from 130MB to 93MB.
      
      Change-Id: I6078c5ff02a9cf08aa0eb9acd2527ac3b2baf0f7
      8efee2f5
    • Stanislav Vitvitskyy's avatar
      Using CDFs for read_partition special case · 8711cf5f
      Stanislav Vitvitskyy authored
      Test results:
      akiyo	    -0.05%
      bowing	    -0.072%
      bridge	    -0.042%
      bus	    -0.156%
      coastguard  -0.645%
      container   -0.087%
      deadline     0.007%
      flower       0.02%
      football    -0.009%
      foreman      0.03%
      hall         0.087%
      highway     -0.041%
      husky       -0.031%
      mad900       0.015%
      mobile      -0.007%
      mother       0.012%
      news         0.039%
      pamphlet     0.061%
      paris       -0.003%
      sign        -0.148%
      silent       0.003%
      students    -0.009%
      tempete     -0.061%
      waterfall    0.666
      
      Change-Id: I96c2fd3a6fbc5f8e5cf7f3b881ef89335e58d5ac
      8711cf5f
    • Luc Trudeau's avatar
      [CFL] Asserts for chroma_sub8x8 · c84c21c4
      Luc Trudeau authored
      When Chroma from Luma is combined with chroma_sub8x8, the prediction
      used for sub8x8 blocks originates from multiple luma blocks. Extra
      asserts are added to validate that the prediction buffer contains all
      the required information.
      
      Change-Id: I305c46ce9b8292697e1d5b181d123461026da11c
      c84c21c4
    • hui su's avatar
      Remove probablity model for coeffecient tokens · b53682f5
      hui su authored
      Remove the token prob tables and counters.
      
      Change-Id: Ic63d52d80bb922fc10b586c27a20f2378618168c
      b53682f5
    • Jingning Han's avatar
      Enable motion field estimation in DRL · ffbb0f91
      Jingning Han authored
      Enable the use of motion field estimation in the dynamic motion
      vector referencing system. With default experiments on, it improves
      the compression performance:
      
      lowres 1.2%
      midres 1.5%
      
      Change-Id: Ifc5b15a7239b5c3212ea50f326ab99d372034658
      ffbb0f91
    • Jingning Han's avatar
      Add frame index to the decoded frames · c723b348
      Jingning Han authored
      Add frame index to the deocded frames. Store such information to
      the reference frame buffer pool. This design allows each frame
      to know its index in natural order, as well as its reference
      frames positions.
      
      Change-Id: I5bb36928dc5750a4fdcc582dca0d244d6482f400
      c723b348
  2. 30 Aug, 2017 1 commit
  3. 29 Aug, 2017 5 commits
  4. 28 Aug, 2017 3 commits
    • Jingning Han's avatar
      Refactor lv-map coefficient buffers · f5a4d3ba
      Jingning Han authored
      Reduce the encoder memory footprint in lv-map by ~800X.
      
      BUG=aomedia:713
      
      Change-Id: I7aad604cf3186a0d3c6d5b6d1aa9489ac7c36093
      f5a4d3ba
    • Luc Trudeau's avatar
      [CFL] Move store flag to CFL_CTX · fcca37a4
      Luc Trudeau authored
      With recent changes, it is now possible to store the storage
      flag inside the CFL_CTX. This simplifies the implementation
      and will allow reuse in the decoder.
      
      This change does not alter the bitstream.
      
      Change-Id: Ibb8aebdd3d06f8765d40248ece8a038892e87032
      fcca37a4
    • Luc Trudeau's avatar
      [CFL] Reorganize Reconstructed Pixel Buffering · 32306c22
      Luc Trudeau authored
      Reworked how the storage flag is set to avoid duplication on the encoder
      side. Reconstructed Luma pixels are stored in encode_superblock in the
      loop that calls av1_encode_intra_block_plane and in the extra call to
      txfm_rd_in_plane after the luma RDO, but prior to the chroma RDO.
      
      This change does not alter the bitsteam.
      
      Change-Id: Ifd8441363ea0733fea3d06129a025940abb2abc9
      32306c22
  5. 26 Aug, 2017 2 commits
  6. 25 Aug, 2017 4 commits
    • Yushin Cho's avatar
      Fix compile error in inc_mvs() · 97dd6ca0
      Yushin Cho authored
      When CONFIG_EXT_INTER is disbaled, an instane of struct nmv_context is
      passed inc_mv_cdf() instead of its pointer type.
      
      Change-Id: I5a51c4065a1493e2e2a544d243907672614752a7
      97dd6ca0
    • Rupert Swarbrick's avatar
      Add support for 16x4 partitions · 6a93b155
      Rupert Swarbrick authored
      When updating default_partition_cdf, this sums the probabilities that
      were divided evenly across the pairs PARTITION_HORZ_A/PARTITION_HORZ_B
      and PARTITION_VERT_A/PARTITION_VERT_B. Those summed probabilities now
      get distributed evenly across the triples you get by adding
      PARTITION_HORZ_4 and PARTITION_VERT_4, respectively.
      
      Rather than implement 2X8/8X2 blocks for now, ss_size_lookup returns
      4X8/8X4 block sizes to use as chroma transform sizes for 4X16/16X4
      blocks.
      
      The changes in setup_pred_plane and set_skip_context are because this
      is presumably the first time we've had to deal with 16x4 or 4x16
      blocks. Since BLOCK_16X4 is not less than BLOCK_8X8, the existing
      logic didn't work (and the "shuffle back one" logic should probably be
      done for small widths and heights separately).
      
      Change-Id: If28d8954da42d6c726f2bcce2cb5242154b0870c
      6a93b155
    • Nathan E. Egge's avatar
      Force C implementations when using Daala DCT's. · e030936c
      Nathan E. Egge authored
      This patch fixes a regression introduced in 1d190950 where the encoder
       was using the 4x4 VP9/AV1 transforms for RDO, but then used the Daala
       transforms for encoding.
      The ~2% improvement below comes from forcing the C implementation of the
       4x4 and 8x8 transforms to be used when CONFIG_DAALA_DCT4 and
       CONFIG_DAALA_DCT8 are enabled respectively.
      
      subset-1 (--enable-experimental --enable-daala_dct4):
      
      master@2017-08-21T21:41:18.302Z ->
       master_daala_dct4_use_c@2017-08-22T02:39:14.457Z
      
         PSNR | PSNR Cb | PSNR Cr | PSNR HVS |    SSIM | MS SSIM | CIEDE 2000
      -2.1953 | -1.2044 | -1.1865 |  -1.6173 | -1.7029 | -1.6784 |    -1.7235
      
      Change-Id: I44d2b24094e89b2857ae03d743180e706cef45eb
      e030936c
    • Yue Chen's avatar
      Fix av1_get_tx_scale() for 32x8 and 8x32 tx · aa0d90f0
      Yue Chen authored
      Make it 0 to run at higher precision
      
      Change-Id: I51decbf9179efa18a1a06dcc3f0e939d9895a5cd
      aa0d90f0
  7. 24 Aug, 2017 3 commits
    • Todd Nguyen's avatar
      Turn off bgsprite depending on firstpass metrics. · 71efd848
      Todd Nguyen authored
      Changes:
      - Add block size define.
      - Set default to mean filtering.
      - Add flag in AV1_COMP for bgsprite.
      - Determine to use bgsprite or not based on firstpass metrics in
      define_gf_group.
      - Add outlier removal for bgsprite mean blending (off by default)
      
      Results:
      lowres: -0.009 avg_psnr, -0.029 ovr_psnr, -0.102 ssim
      
      Clips with maximum gain:
      - brdige_far_cif: -2.071 avg_psnr, -2.409 ovr_psnr, -1.977 ssim
      - deadline_cif: -0.148 avg_psnr, -0.137 ovr_psnr, -0.113 ssim
      - brdige_close_cif: +1.741 avg_psnr, -0.258 ovr_psnr, -2.534 ssim
      
      Change-Id: I809406020f7786e49cc80329511e22d25379d7a2
      71efd848
    • Yue Chen's avatar
      Update cdf and mode rate per superblock in RDO · b855b8e8
      Yue Chen authored
      Update cdf after each superblock being finalized, and re-compute
      symbol costs. Affected symbols include prediction parameters,
      tx type, and new motion vector.
      BDRate: -0.121% lowres, -0.089% midres
      
      Change-Id: I005ef382762d6e3423f933cca0a0b7b40288e8bf
      b855b8e8
    • Zoe Liu's avatar
      Add encoder support for ext-comp-refs + altref2 · ac889707
      Zoe Liu authored
      Change-Id: I9d26f288657a15e3d0ec4c5a11e80aecc1a829ad
      ac889707
  8. 23 Aug, 2017 6 commits
  9. 22 Aug, 2017 8 commits
    • Sarah Parker's avatar
      Refactor palette functions to write a general color map · 0cf4d9f1
      Sarah Parker authored
      This will allow the mrc-tx experiment to pass in its own color map
      and set of probabilities to the tokenize and bit packing functions.
      The corresponding change on the decoder side will come in a followup
      shortly.
      
      No change in performance.
      
      Change-Id: I1872b7f1b1cf5b102e6289388ce1ae449e67cb4d
      0cf4d9f1
    • Rupert Swarbrick's avatar
      Refactor iteration over neighbours for OBMC · c0cea7f3
      Rupert Swarbrick authored
      There are six pieces of code in reconinter.c and two in rdopt.c which
      iterate over the blocks along the top or left edge of the current
      block for OBMC. Before this patch, each bit of code has its own
      implementation of the iteration, which is reasonably finicky to get
      right.
      
      This patch factors out that logic into a pair of helpers
      (foreach_overlappable_nb_above and foreach_overlappable_nb_left). The
      functions take a "fun" parameter, which contains the loop body. Note
      that the iteration is too complicated for us to be able to define a
      macro that could be used like
      
        FOREACH_NB_ABOVE(rel_pos, nb_size, nb_mi) { ... }
      
      While C's syntax doesn't seem to let you do that, once the compiler's
      optimisation pass is done inlining everything, the results are
      essentially the same.
      
      The iteration logic is also slightly generalised: the old code checked
      whether a block was shorter or narrower than 8 pixels by comparing a
      block size with BLOCK_8X8. This doesn't work when you have a 4x16 or
      16x4 block because e.g. BLOCK_16X4 is not less than BLOCK_8X8. This
      generalisation is (unsurprisingly) needed in order to to support 16x4
      or 4x16 blocks.
      
      This patch doesn't address the CONFIG_NCOBMC functions in reconinter.c
      that do prediction from right and bottom edges.
      
      This patch shouldn't affect the generated bitstream in any way: the
      code is supposed to be equivalent.
      
      Change-Id: I9e5a116b012c18645604a7d98fb98be99697d363
      c0cea7f3
    • Yaowu Xu's avatar
      Revert "Prevent access of array using -1 index" · 03dc6799
      Yaowu Xu authored
      This reverts commit 38cdce8e.
      
      Reason for revert: <INSERT REASONING HERE>
      
      It is reported that this introduced a segment fault, revert now to investigate. 
      
      Change-Id: I229dcdc09462ae4eb9cf2a3da4ce59aa9eafe65e
      03dc6799
    • Cheng Chen's avatar
      Silence warnings when warped_motion is disabled · 811bba79
      Cheng Chen authored
      Change-Id: I5da893be07b3b9aa4351b5bb1af987f4992370ef
      811bba79
    • Lester Lu's avatar
      Refactor lgt · 918fe698
      Lester Lu authored
      Change get_lgt in order to integrate a later experiment
      lgt_from_pred with lgt. There are two main changes.
      
      The main purpose for this change is to unify get_fwd_lgt and
      get_inv_lgt functions into a get_lgt function so the lgt basis
      functions can always be selected through the same function in
      both forward and inverse transform paths. The structure of those
      functions will also be consistent with the get_lgt_from_pred
      functions that will be added in the lgt-from-pred experiment.
      
      These changes have no impact on the bitstream.
      
      Change-Id: Ifd3dfc1a9e1a250495830ddbf42c201e80aa913e
      918fe698
    • Jingning Han's avatar
      Account for cdf model update in lv-map coding · 8f661605
      Jingning Han authored
      Make the lv-map rate-distortion optimization account for the
      per symbol cdf update. This improves the level map coding
      performance by 0.4%.
      
      Change-Id: I1cbecafbad4e6642abc3782c9741636d92d87eb7
      8f661605
    • Jingning Han's avatar
      Support per symbol cdf update in lv-map encoding · 24b0cf96
      Jingning Han authored
      Allow per symbol cdf probability model update in the lv-map
      encoding process.
      
      Change-Id: Id0c4a659c04ffa981d8f04537eda2f1304d1682a
      24b0cf96
    • Jingning Han's avatar
      Make lv-map decoding support per symbol cdf update · bb72cafa
      Jingning Han authored
      Support the per symbol cdf update at the level map syntax element
      decoding process.
      
      Change-Id: Id58bf86fb1c7c72dd14ddaa3781caaa27f446ef7
      bb72cafa