1. 25 Oct, 2017 2 commits
    • Yue Chen's avatar
      Optimizations for filter_intra · 57b8ff68
      Yue Chen authored
      Reduce number of modes from 10 to 6, and disable fi modes in UV.
      To reduce complexity, apply filter directly without subtracting
      the estimated means.
      
      Change-Id: Iaf78d92d31e4a7cc30ea7863b57a9611c5f503e6
      57b8ff68
    • David Michael Barr's avatar
      [CFL] Switch to txfm_rd_in_plane in alpha search · 1f8d0950
      David Michael Barr authored
      This is more precise than the dist functions it replaces.
      
      Results on Subset1 (compared with previous commit with CfL enabled)
        PSNR | PSNR Cb | PSNR Cr | PSNR HVS |   SSIM | MS SSIM | CIEDE 2000
      0.0634 | -0.9188 | -0.9429 |   0.0609 | 0.0722 |  0.0593 |    -0.3226
      
      Change-Id: I955a7d7eceea50482edb40b0d1041b300e3c9042
      1f8d0950
  2. 24 Oct, 2017 3 commits
  3. 23 Oct, 2017 1 commit
  4. 21 Oct, 2017 2 commits
  5. 20 Oct, 2017 2 commits
  6. 17 Oct, 2017 2 commits
  7. 16 Oct, 2017 2 commits
  8. 11 Oct, 2017 1 commit
  9. 10 Oct, 2017 2 commits
    • Hui Su's avatar
      Add function to control palette usage · e87fb237
      Hui Su authored
      Add av1_allow_palette() to control whether palette mode should be enabled.
      
      Change-Id: Iee24636451be42eb36093dc3453bc39c7e686276
      e87fb237
    • Lester Lu's avatar
      lgt-from-pred: transforms based on prediction · 432012f6
      Lester Lu authored
      In this experiment, sharp image discontinuity in the predicted
      block is detected. Based on this discontinuity, we choose
      particular LGTs as row and column transforms.
      
      Bitstream syntax, entropy coding, and RD search for LGT are added.
      One binary symbol is used to signal whether LGT is used. This
      experiment can work independently with the lgt experiment.
      
      lowres: -0.414% for key frames, -0.151% overall
      midres: -0.413% for key frames, -0.161% overall
      
      Change-Id: Iaa2f2c2839c34ca4134fa55e77870dc3f1fa879f
      432012f6
  10. 09 Oct, 2017 2 commits
    • Debargha Mukherjee's avatar
      Enable 32x64 and 64x32 transforms · 1a86b013
      Debargha Mukherjee authored
      Change-Id: I73e9d2d327b062828a75bc99fb348441dd32174a
      1a86b013
    • Rupert Swarbrick's avatar
      Define block_signals_txsize function · fcff0b25
      Rupert Swarbrick authored
      This returns true if a block signals tx_size in the stream and uses it
      in the bitstream writing code and the decoder.
      
      Note that we can't quite use it in pack_inter_mode_mvs when
      CONFIG_VAR_TX && !CONFIG_RECT_TX but I've switched the code to using
      it the rest of the time since rect-tx is adopted and eventually the
      other code path should be deleted.
      
      Also use the helper function in tx_size_cost in rdopt.c, where the
      test was wrong and caused underestimates of block
      costs. (Specifically, the code that subtracts tx_size_cost from
      this_rate_tokenonly in rd_pick_intra_sby_mode ended up subtracting
      zero for a 4x8 block).
      
      The behaviour of the decoder should be unchanged. The only change in
      the encoder's behaviour should be in tx_size_cost where it should now
      match the rest of the code.
      
      Change-Id: I97236c9ce444993afe01ac5c6f4a0bb9e5049217
      fcff0b25
  11. 08 Oct, 2017 1 commit
  12. 04 Oct, 2017 1 commit
    • Rupert Swarbrick's avatar
      Pack InterpFilters into a single integer · 27e90295
      Rupert Swarbrick authored
      Before this patch, if CONFIG_DUAL_FILTER was true then an MB_MODE_INFO
      stored its filter choices as an array of four numbers, each of which
      was between 0 and 10. It also seems that elements 2 and 3 of the array
      were always the same as elements 0 and 1 when used.
      
      This patch defines a new type(def) called InterpFilters together with
      constructor and extractor functions. When CONFIG_DUAL_FILTER is zero,
      InterpFilters is a synonym for InterpFilter and the constructor and
      extractor functions should compile away to nothing. When it is
      nonzero, InterpFilters is a uint32_t which stores the x filter in the
      high part and the y filter in the low part (this looks strange, but
      matches the old numbering).
      
      Making this change allows us to get rid of lots of special case code
      that was dependent on CONFIG_DUAL_FILTER. The uniform
      extract/make/broadcast interface also actually shortens code in
      general.
      
      Change-Id: I6b24a61bac3e4b220d8d46d0b27cfe865dcfba81
      27e90295
  13. 03 Oct, 2017 2 commits
    • Debargha Mukherjee's avatar
      Misc fixes for 32x64 and 64x32 transforms · 570423cf
      Debargha Mukherjee authored
      Change-Id: Ic843e99bd9b79cb9a0a26b95e3a48717ff2ec2a5
      570423cf
    • Cheng Chen's avatar
      Make LOOPFILTER_LEVEL support EXT_DELTA_Q · a97394f7
      Cheng Chen authored
      Before LOOPFILTER_LEVEL, there's one filter level,
      now we have four filter levels for y plane vertical,
      y plane horizontal, u plane and v plane.
      
      This patch enables experiment LOOPFILTER_LEVEL to support per
      superblock loop filter level update.
      
      Change-Id: Ib11a1564471eb3076c26e73e5cdf7b5a3045ef97
      a97394f7
  14. 02 Oct, 2017 1 commit
  15. 29 Sep, 2017 2 commits
  16. 28 Sep, 2017 3 commits
    • Rupert Swarbrick's avatar
      Don't work in TX64X64 blocks on a subsampled chroma plane · 4e7b7d6f
      Rupert Swarbrick authored
      With ext-partition and tx64x64 enabled, the encoder could choose
      TX_64X64 to encode the transform for a subsampled plane of a
      BLOCK_128X128 block. This broke an assumption in the nested loop in
      write_tokens_b and also caused bug 827 (with a rather cryptic
      failure).
      
      This patch changes get_vartx_max_txsize to ensure that the encoder and
      decoder don't think they can use TX_64X64 in this situation. It also
      adds a couple of assertions to the loop mentioned above so that if
      something comes unstuck it'll be much more obvious what went wrong.
      
      BUG=aomedia:827
      
      Change-Id: Ie093f2f20f6242949d68e950c8f95b100867ee17
      4e7b7d6f
    • Luc Trudeau's avatar
      [CFL] Move Subsampling in Store · 4e26d667
      Luc Trudeau authored
      Pixels are subsampled when they are stored in the CfL prediction
      buffer. This allows to avoid having two buffers. No impact on the
      bitstream.
      
      Results on subset1 (Compared to parent)
      
        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
      
      https://arewecompressedyet.com/?job=cfl-avg-on-fly%402017-09-23T21%3A38%3A04.440Z&job=cfl-Sub-On-Store%402017-09-24T15%3A01%3A41.161Z
      
      Change-Id: If051e34d6d7078d77609542305a2afebef5cb177
      4e26d667
    • Luc Trudeau's avatar
      [CFL] Compute and Subtract Average on the Fly · 593d02c8
      Luc Trudeau authored
      Instead of storing the transform block average, it is immediately
      subtracted from the subsampled pixels. This change does not alter the
      bitstream and it reduces CfL complexity.
      
      Change-Id: Ia5038b336abf1ec01e295b235734318906d3bae6
      593d02c8
  17. 27 Sep, 2017 1 commit
  18. 23 Sep, 2017 2 commits
    • Yushin Cho's avatar
      Improve dist-8x8 · 8e75e8bb
      Yushin Cho authored
      Improve dist-8x8 when computing 8x8 yuv dist for sub8x8.
      
      To apply dist-8x8 for sub8x8 partitions, once mode decision for
      sub8x8 partitions are finished then dist-8x8 is computed on 8x8 window.
      Since dist-8x8 is only for luma, chroma distortion should be identified.
      
      Previously, it has been hard to be free from potential bugs doing this,
      due to the complex inter mode search code.
      
      The new method is less-error-prone, which computes uv distortion (in MSE) after
      the mode decisions for all of sub8x8 blocks in a 8x8 window are finished,
      when the dist-8x8 distortion for luma 8x8 pixels are computed with
      new distortion metric.
      
      All the code separating y and uv distortion in inter mode search has
      been removed in this commit.
      
      Change-Id: Ieaccb7915df5faeb5e89a7e70b2b7cbac65231af
      8e75e8bb
    • Hui Su's avatar
      Move local functions out of blockd.h · 032ab8b3
      Hui Su authored
      Change-Id: Id667950de84ad6a0b55222264a0ce8473cd10bcc
      032ab8b3
  19. 22 Sep, 2017 2 commits
  20. 20 Sep, 2017 2 commits
    • Cheng Chen's avatar
      Search for deblocking filter level for superblock · f572cd30
      Cheng Chen authored
      Search and pick filter level for each superblock after the entire
      frame has been encoded. And then apply loop filtering using
      selected filter levels.
      
      Now it can't work with LOOPFILTER_LEVEL. Y, U, V planes share the
      same filter level.
      
      Per superblock, filter levels are signaled via bitstream.
      
      Future work: move selecting filter level into each superblock
      rather than wait for the whole frame encoded.
      
      Change-Id: I46cb994ec4866abb0456146f7c3cae8813c1d52e
      f572cd30
    • Soo-Chul Han's avatar
      initial implementation of HLS based on R18 · 65c00ae1
      Soo-Chul Han authored
      Change-Id: I78bb38e3d61d74442278bd5ed1c4f695b7c8e24a
      65c00ae1
  21. 19 Sep, 2017 3 commits
    • RogerZhou's avatar
      Adaptive Motion Vector Resolution · 3b635245
      RogerZhou authored
      Change-Id: Ic3c93a5d2e427ce1ed578389196a265245063821
      3b635245
    • Luc Trudeau's avatar
      [CFL] Use MAX_NUM_TXB_SQUARE instead of MAX_NUM_TXB · f1cf7178
      Luc Trudeau authored
      MAX_NUM_TXB represents the maximum number of transform blocks in 1
      dimension. CfL requires the maximum number of transform blocks in 2
      dimensions. As such, we now use MAX_NUM_TXB_SQUARE instead of the
      erroneous MAX_NUM_TXB for the average buffer.
      
      There's an assert guarding for overrun on the average buffer.
      This fix stops assertions on 4:4:4 sequences. This patch does
      not alter AWCY results as AWCY only covers 4:2:0 sequences (for
      which MAX_NUM_TXB turns out to be sufficient). 
      
      Change-Id: I628db0131f60abc2d06cbbe3fe3dc40e28894ce3
      f1cf7178
    • Luc Trudeau's avatar
      [CFL] Replace Magic Numbers with Constants · 03b7e7d5
      Luc Trudeau authored
      Added CFL_SUB8X8_VAL_MI_SIZE and CFL_SUB8X8_VAL_MI_SQUARE to replace the
      magic numbers previously used. Also, CFL_SUB8X8_VAL_MI_SIZE goes from 2
      to 4 to support the upcoming EXT_PARTITION_TYPE experiment.
      
      Change-Id: I5c812af3366f80345a749451415660024e41ea3c
      03b7e7d5
  22. 13 Sep, 2017 1 commit
    • David Michael Barr's avatar
      [CFL] Fix typedef-redefinition compiler warnings · 5b2021ea
      David Michael Barr authored
      Instead of forward-declaring AV1_COMMON and MACROBLOCKD,
      move the dependent struct and function prototype closer
      to where they are used and after these types are defined.
      
      Change-Id: I75f005b46ef322a6fcbc01377b8dded1637c5f73
      5b2021ea