1. 20 Nov, 2017 8 commits
    • Monty Montgomery's avatar
      Modify RDO for use with Daala TX constant-depth coeffs · 4a05a58c
      Monty Montgomery authored
      Modify the portions of RDO using TX-domain coeff calaculations to deal
      with TX_COEFF_DEPTH and constant-depth coefficient scaling.  At
      present, this represents no functional change.
      
      subset-1:
      monty-rest-of-stack-quant-s1@2017-11-13T14:38:43.774Z ->
       monty-rest-of-stack-RDO-s1@2017-11-13T14:39:17.093Z
      
        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
      
      objective-1-fast --limit=4:
      monty-rest-of-stack-quant-o1f4@2017-11-13T14:38:28.828Z ->
       monty-rest-of-stack-RDO-o1f4@2017-11-13T14:38:57.951Z
      
        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: I0fbc45e018f565f48e1fc8fdeabfcd6cb6fa62fe
      4a05a58c
    • Dake He's avatar
      [lv_map_multi] Base level alphabet adjustment · 3fe369c8
      Dake He authored
      At eob-1, coefficient must be non-zero. As such, this CL changes the
      alphabet for base levels at eob-1 from size 4 to size 3. Minor
      performance improvement is observed. In addition, changes in 33462 made
      by Ola Hugosson were also incorporated.
      
      Now with trained initial probability distributions.
      
      Change-Id: Id6b5d0908b5ff186ed88ab0733ce7cc0c4a468d5
      3fe369c8
    • Yue Chen's avatar
      New filter_intra implementation + entropy coding · da2eefc6
      Yue Chen authored
      Use 4x2 processing unit.
      Reduce # of modes from 6 to 5.
      
      Change-Id: I3c12e18084636de0e279c9102a8b212342faf4c7
      da2eefc6
    • David Barker's avatar
      superres + frame-size: Fix experiment combination · 22171319
      David Barker authored
      The current code has two issues with this combination:
      i) The frame_size_override_flag was being set based on the downscaled
         frame size rather than the upscaled frame size
      ii) This flag was then being ignored in write_frame_size(), and we
          would always write a 16-bit size, even if the flag was 0.
          This lead to an encode/decode mismatch.
      
      This patch fixes these two issues, and rewrites write_frame_size()
      to be much clearer and more closely match setup_frame_size() from
      the decoder.
      
      Change-Id: Id6b8e51ef10f3285f8318e4acd8606060f29e9cb
      22171319
    • Debargha Mukherjee's avatar
      Some RD fixes · 2c50f9ae
      Debargha Mukherjee authored
      Change-Id: Ie6b41ac068846da3c87bdcaa94180777edb27d1f
      2c50f9ae
    • Debargha Mukherjee's avatar
      Update cdf for intra blocks · a496c673
      Debargha Mukherjee authored
      This was missing before. Hopefully it will improve costing.
      
      Change-Id: Id7dbe963fe5e26798b853419804bdd128537a5d9
      a496c673
    • Monty Montgomery's avatar
      Add Daala TX fixed-coeff-depth capability to quantization · 60f2a229
      Monty Montgomery authored
      This patch completes the work to add fixed-depth TX domain support to
      the quantization and dequantization code.  At present, it is active but
      configured to behave identically to current AV1 master as RDO and TX
      have not yet been updated to also support this functionality.
      
      subset-1:
      monty-rest-of-stack-noshift-s1@2017-11-13T14:37:42.541Z ->
       monty-rest-of-stack-quant-s1@2017-11-13T14:38:43.774Z
      
        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
      
      objective-1-fast --limit=4:
      monty-rest-of-stack-noshift-o1f4@2017-11-13T14:37:16.992Z ->
       monty-rest-of-stack-quant-o1f4@2017-11-13T14:38:28.828Z
      
        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: I3773a1fc128136c9fea227f4b547576a8aa6efa3
      60f2a229
    • Debargha Mukherjee's avatar
      Remove unused tx_size_implied count · 605d63f3
      Debargha Mukherjee authored
      Change-Id: Icca39f1d037a3aca4540e35b70fdfafeae2b094e
      605d63f3
  2. 19 Nov, 2017 1 commit
    • Alexander Bokov's avatar
      Add extra hashing mechanism on the TX size search level · c5ddf06e
      Alexander Bokov authored
      In TX size search the rate and distortion values are often computed for
      residuals that have already been seen before, with exactly the same
      entropy context. Such repeated computations occur when the residue
      signal is the same for 2 or more partitions for a given prediction mode.
      By saving previous RD search results we can achieve some encoder
      speed-up at the cost of higher RAM consumption (~20MB).
      
      Test results with all default experiments:
      Speedup      15% (measured on 4 lowres 30-frame sequences)
      compression   0%
      
      Change-Id: I8d9b8dd483cf862f0864b50ae80466beac978290
      c5ddf06e
  3. 18 Nov, 2017 3 commits
    • Jingning Han's avatar
      Properly scale the distortion in lv-map optimize_b · b433f4c4
      Jingning Han authored
      Account for the bit-depth in calculating the distortion for lv-map
      coefficient level optimization.
      
      Change-Id: I47c60f15bfda5aeba8e32f1ac898015650a057db
      b433f4c4
    • Jingning Han's avatar
      Fix av1_txb_init_levels clamping limit · 5cb408e5
      Jingning Han authored
      This solves an enc/dec mismatch issue due to the fact that
      SIMD implementation compares signed int8_t. Hence we need to
      limit the base level reference to be under 127, to avoid cmpt
      instruction taking it as a negative number.
      
      BUG=aomedia:1045
      
      Change-Id: I2ed616fda52415fbf50451660b9564df1adf77af
      5cb408e5
    • Zoe Liu's avatar
      Add motion selection to ext_skip · f40a9577
      Zoe Liu authored
      A new block mode, referred to as skip_mode is added. If a block is
      coded as skip_mode, it will be inter-coded, with its references and
      motion vectors derived from its neighboring blocks with zero-residue.
      Otherwise, the block can be coded in the current intra or inter mode.
      
      The computational load on skip_mode evaluation at the encoder should
      be kept minimum. No transform size / type evaluations are needed.
      
      Change-Id: I5aef0159c7d5ecd64258510835903375d6c536d6
      f40a9577
  4. 17 Nov, 2017 8 commits
    • Yunqing Wang's avatar
      Reuse neighbor's warped motion parameters · 876a8b0b
      Yunqing Wang authored
      If a block's motion_mode is WARPED_CAUSAL and its mode is NEARESTMV, search
      its immediate above and left neighbors to get the set of neighbor blocks
      using WARPED_CAUSAL motion mode, pick the one with largest block size, and
      use that neighbor's warped motion parameters directly for the current block.
      If none of the neighbors uses WARPED_CAUSAL motion mode, we estimate the
      current block's warped motion parameters.
      
      Before this patch, for every block, we estimate its warped motion parameters.
      With this patch, we reduce the number of blocks doing parameter estimation.
      Here are results by testing on clips with camera motions.
                          WARPED_CAUSAL blocks   blocks reusing parameters
      station2_240p(30f):     3857                    1678
      netflix_arieal(30f):     692                     223
      
      No noticable changes in coding gain. Borg test result showed a PSNR
      change of +0.006% on cam_lowres set, and -0.014% on lowres set.
      
      Change-Id: If12387ad0ca8a1996ea4c3f1bedcb269ebf78c6c
      876a8b0b
    • Hui Su's avatar
      Call aom_clear_system_state() before palette RD search · c3769e5c
      Hui Su authored
      BUG=aomedia:1042,aomedia:1043
      
      Change-Id: Ia7e82cbd280132bbeef41c90c38cbb585db8828a
      c3769e5c
    • Hui Su's avatar
      Remove prob table entries and counters for new mv · 21b67229
      Hui Su authored
      Change-Id: Ifa2cdc2d2230dfa11396ee3e547653180f96b795
      21b67229
    • Debargha Mukherjee's avatar
      Make forward 4:1 transforms txmg compliant · 69f914a8
      Debargha Mukherjee authored
      Change-Id: I9e55a9c9dd546e2e1d5e9c43e3e73fc44c3ba590
      69f914a8
    • David Barker's avatar
      striped-loop-restoration: Use consistent frame height · 9cf9e28c
      David Barker authored
      The stripes are intended to extend down to the full decoded
      height of the frame, which is always a multiple of 8 luma pixels,
      in order to avoid some nasty edge cases.
      
      This change was partially implemented in previous patches, but
      not everywhere was modified, leading to slightly inconsistent code.
      This patch finishes making the relevant changes, along with a
      slight bit of refactoring.
      
      Change-Id: Ibc8e2f5ace5415815625edbc224557a7c548c38a
      9cf9e28c
    • Ola Hugosson's avatar
      lv_map_multi: optimize_txb improvement · e5a9b381
      Ola Hugosson authored
      Corrected the nz_rate which is used to estimate the cost of changing
      the current coeff to EOB (as part of optimize_txb).
      (patch suggested by Dake He)
      
      Change-Id: I60d38d86744826e5c3bbc9eaea9ba6c520145f0b
      e5a9b381
    • Thomas Davies's avatar
      LV_MAP_MULTI: use reduced probability in EC. · 736ddef5
      Thomas Davies authored
      Do not round the lv_map probabilities but instead
      reduce the precision of the entropy coder to 9 bits
      for all CDFs, and modify operation so that the EC
      interval is never 0.
      
      Change-Id: I1b4e51019613106ae3b68519b20637bc0d7b51be
      736ddef5
    • Linfeng Zhang's avatar
      Add av1_get_br_level_counts_sse2() · ae7b2f3a
      Linfeng Zhang authored
      Change-Id: I6ce7aea19e3bdeef24d3fe66ac6eba7b8d585f9a
      ae7b2f3a
  5. 16 Nov, 2017 4 commits
    • Yaowu Xu's avatar
      Fix warning of unused function definition · 9b803916
      Yaowu Xu authored
      Change-Id: Ib82549c4fae8bca285062084ed7c9c43b84e1660
      9b803916
    • Monty Montgomery's avatar
      Eliminate tx_size dependant shifts for Daala TX · a26262c3
      Monty Montgomery authored
      short-circuit av1_get_tx_scale to always return zero when
      CONFIG_DAALA_TX, and remove it from the actual Daala TX toplevel
      
      This has potential overflow consequences for any metrics computation
      based on pixels; as such, also force use of the high-bitdepth path in
      each of these case.
      
      subset-1:
      monty-rest-of-stack-baseline-s1@2017-11-13T00:39:03.881Z ->
      monty-rest-of-stack-noshift-s1@2017-11-13T14:37:42.541Z
      
         PSNR | PSNR Cb | PSNR Cr | PSNR HVS |    SSIM | MS SSIM | CIEDE 2000
      -0.0030 | -0.0523 |  0.2656 |  -0.0239 | -0.0033 | -0.0029 |     0.0067
      
      objective-1-fast --limit=4:
      monty-rest-of-stack-baseline-o1f4@2017-11-13T00:37:06.999Z ->
      monty-rest-of-stack-noshift-o1f4@2017-11-13T14:37:16.992Z
      
         PSNR | PSNR Cb | PSNR Cr | PSNR HVS |    SSIM | MS SSIM | CIEDE 2000
      -0.0264 |  0.2303 |  0.0822 |  -0.0109 | -0.0395 | -0.0709 |     0.0538
      
      Change-Id: I57da71861f105dc7a404fa75a75bde573855ef79
      a26262c3
    • Yunqing Wang's avatar
      Modify lightfield encoding example · b041d8a7
      Yunqing Wang authored
      Modified the lightfield encoding example to accommodate HW implementation
      requirements. Fixed the encoding scheme, generated a bitstream of a list
      of references followed by the surrounding large scale tile coded frames.
      All large scale tile coded frames use the same uncompressed frame header
      and the same set of frame contexts. This example also wrote out the frame
      header and frame contexts while encoding a large scale tile frame and
      setting EXT_TILE_DEBUG to 1.
      
      Change-Id: I7cc19099195d0a20335d5c6bfb9f493f1bf3a7b2
      b041d8a7
    • Yunqing Wang's avatar
      Force to have a common frame header in large scale tile coding · b6e23bc4
      Yunqing Wang authored
      In large scale tile coding(namely, large_scale_tile = 1), forced
      all frames to generate a bit-exact uncompressed frame header.
      This patch modified parameters that could change from one frame to
      another.
      
      Change-Id: Ibe72519da0b8a4f5a4ef30a4303ad7d7e4992a65
      b6e23bc4
  6. 15 Nov, 2017 6 commits
    • Cheng Chen's avatar
      Fix allow_update_cdf for jnt_comp · 2098abc1
      Cheng Chen authored
      Update cdf only when it is allowed.
      
      Change-Id: I95ab08ff4220abdd277a7cd110b69c82364dddcb
      2098abc1
    • Frederic Barbier's avatar
      Remove experimental flag of NEW_MULTISYMBOL · 749c21a1
      Frederic Barbier authored
      This experiment has been adopted, we can simplify the code
      by dropping the associated preprocessor conditionals.
      
      Change-Id: I6ac62c2825eabcba8f854cfa25c84638d9a73872
      749c21a1
    • Rupert Swarbrick's avatar
      Use CDFs to cost right/bottom partitions in rd_pick_partition · aac6162d
      Rupert Swarbrick authored
      This matches the code in read_partition in decodeframe.c and almost
      gets rid of the last usage of the "partition_prob" tables which can
      now be deleted.
      
      Change-Id: Ibe0e947007d593d8e5f4ab10a38cd920856e566d
      aac6162d
    • Sebastien Alaiwan's avatar
      Remove COMPOUND_SINGLEREF experiment · 34d5566a
      Sebastien Alaiwan authored
      This experiment has been abandonned for AV1.
      
      Change-Id: I3501181d096873dec35ea58e4b55530fa76e683f
      34d5566a
    • Debargha Mukherjee's avatar
      Replace RECT_TX_EXT experiment · 35a4db38
      Debargha Mukherjee authored
      Remove the previous experiment and now use the same name for a
      simpler experiment that only enables 4:1 transforms for 4:1
      partitions when ext_partition_types is on, and that which was
      previously enabled with the USE_RECT_TX_EXT macro.
      
      Change-Id: Iccc35744bd292abf3c187da6f23b787692d50296
      35a4db38
    • Yaowu Xu's avatar
      Support Separate qmatrix for U and V planes · d467bba2
      Yaowu Xu authored
      This commit adds support of a separate qmatrix and iqmatrix for each
      of the U and V planes. Currently the separate matrices are intialized
      to the same ones, then the commit does not have any coding impact
      yet.
      
      Change-Id: I5c4045fe1879db262c6ec1567d8d7dfd9a98fbed
      d467bba2
  7. 14 Nov, 2017 10 commits
    • Sebastien Alaiwan's avatar
      Move encoder-only code to av1/encoder · 95137bde
      Sebastien Alaiwan authored
      Change-Id: Ic4e16f30827e2e2e2dd140aee94d309b049dd063
      95137bde
    • Rupert Swarbrick's avatar
      Don't send chroma data in monochrome mode · dcb3cff5
      Rupert Swarbrick authored
      This is still a rather inefficient black+white encoder, since it carefully
      computes some chroma data, but just doesn't write it. However, at least the
      bitstream is now monochrome.
      
      Change-Id: Ie8a89bf329e7b41441032fb0d9e9011385bc12ff
      dcb3cff5
    • Hui Su's avatar
      intrabc: use its own mv cost table · dfcbfbd4
      Hui Su authored
      To faciliate using intrabc on interframes.
      
      Change-Id: Ibfe376190adf24d15198c5fb548e1050e191a3d6
      dfcbfbd4
    • Rupert Swarbrick's avatar
      Replace force*split with has_rows/has_cols in rd_pick_partition · 1c2dfae3
      Rupert Swarbrick authored
      I think the result is a little easier to reason about (you now talk
      about a property of the block, rather than the behaviour that should
      be enforced). It also matches the code in read_partition in
      decodeframe.c
      
      Change-Id: I13ba06b1504fa153b8b6b60fa14b373483639718
      1c2dfae3
    • Ola Hugosson's avatar
      WIP: lv_map_multi: make br multi symbol · e72a2091
      Ola Hugosson authored
      The br_cdf and lps_cdf with a new 4-state symbol br_cdf.
      The br symbol indicates whether the level is k, k+1, k+2 or >k+2
      In the latter case, a new br symbol is read. Up to 4 br symbols are
      read which will reach level 14 at most. Levels greater than 14 are
      golomb coded.
      
      The adapted symbol count is reduced further by this commit.
      E.g. for the I-frame of ducks_take_off at cq=12, the number of adapted symbols
      is reduced from 4.27M to 3.85M. About 10% reduction.
      
      Gains seems about neutral on a limitied subset.
      
      Change-Id: I294234dbd63fb0fa26aef297a371cba80bd67383
      e72a2091
    • Ola Hugosson's avatar
      WIP: lv_map_multi: New experiment · 13892108
      Ola Hugosson authored
      This experiment modifies lv_map to make use of multi symbol.
      
      Replace the nz_map and coeff_base binary CDF with a new multi-symbol
      CDF of size 4. The new base_cdf indicates for each coeff if the level
      is 0, 1, 2 or >2. Two new special contexts are added to be used for the
      last coefficient (the EOB coeff). For the EOB coefficient we already know
      that it is non-zero. We use one context for DC EOB and one for AC EOB
      (this can potentially be refined more).
      
      The new symbol is read/written by special bitreader/bitwriter functions.
      Those functions reduce the probability precision from 15bit to 9bit before
      the invocation of the arithmetic coding engine.
      
      The adapted symbol count is significantly reduced by this experiment.
      E.g. for the I-frame of ducks_take_off at cq=12, the number of adapted symbols
      is reduced from 6.7M to 4.3M.
      
      Change-Id: Ifc3927d81ad044fb9b0733f1e54d713cb71a1572
      13892108
    • Rostislav Pehlivanov's avatar
      q_segmentation: disable delta_q encoding when enabled · da06779c
      Rostislav Pehlivanov authored
      The decoder side correctly disabled delta_q but the encoder didn't.
      
      Change-Id: I9f720c678d9e99d723c632095c058eaecd1a639d
      da06779c
    • Monty Montgomery's avatar
      Simplify Daala inverse TX toplevel for constant shift · 359854fe
      Monty Montgomery authored
      Rather than backing out all the LGT-related shifting matrices
      throughout the existing TX code, separate out and simplify Daala
      inverse TX into a single dedicated entry point.  When DAALA_TX is
      enabled, CONFIG_HIGHBITDEPTH is also forced, and all of Daala TX
      (lowbd and highbd) uses this single TX dispatch.
      
      This patch is purely non-functional changes.
      
      subset 1:
      monty-TXtesting-fwd-s1@2017-11-12T05:25:09.557Z ->
       monty-TXtesting-inv-s1@2017-11-12T05:25:43.878Z
      
        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
      
      objective-1-fast:
      monty-TXtesting-fwd-o1f@2017-11-12T05:25:29.386Z ->
       monty-TXtesting-inv-o1f@2017-11-12T05:25:58.897Z
      
        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: I790e8d7ac08eb214eb712f5441d6e5f76ebddf17
      359854fe
    • Hui Su's avatar
      Fix the logic for skipping in-loop filters in loopfilter_frame() · 27a4fb68
      Hui Su authored
      Change-Id: I976b4a684d6d309da6b1076627f7e1e058e72932
      27a4fb68
    • Debargha Mukherjee's avatar
      Support for 4:1 transforms with txmg · 845057f1
      Debargha Mukherjee authored
      Change-Id: I484121349af182f4f9525b1c992a6e77f6da7ea9
      845057f1