1. 04 Oct, 2017 9 commits
    • Dominic Symes's avatar
      Fix for issue 844 · c27f5424
      Dominic Symes authored
      Change the foreach_rtile_in_tile() function to call av1_tile_set_row/col
      to calculate tile borders, rather than calculate tile borders itself.
      This will then allow variable sized tiles.
      
      Also remove some unused set tile width/height defines from aomcx.h
      
      BUG=aomedia:844
      
      Change-Id: I356c90cb4189b904ca1d6e57939582b2e92f3162
      c27f5424
    • Rupert Swarbrick's avatar
      Fix rate costing for small blocks with skip flag · c6cc1f5e
      Rupert Swarbrick authored
      In av1_rd_pick_intra_mode_sb, the code calculates the rate for Y and
      UV planes separately. If the transform coefficient should be zero,
      rd_pick_intra_sby_mode and rd_pick_intra_sbuv_mode return the cost of
      actually coding up the zero coefficient, but also set a flag (y_skip
      or uv_skip) saying that this could be skipped.
      
      Since the skip flag isn't per-plane, av1_rd_pick_intra_mode_sb checks
      to see whether both y_skip and uv_skip were true. In that case, it
      costs the block for setting the skip flag rather than outputting zero
      transform coefficients.
      
      If a small block (less than 8x8) has no chroma information,
      x->skip_chroma_rd is true. In that case, we don't call
      rd_pick_intra_sbuv_mode and so uv_skip is never set. However, when we
      come to write the block, it will be written using the skip flag. This
      patch gets the costing right in that case.
      
      Change-Id: Ib31b80b4b44a5c8ed9d9b3f86d782c54927345f3
      c6cc1f5e
    • Cheng Chen's avatar
      Clamp current_delta_lf_from_base in ext_delta_q · 9dccdf24
      Cheng Chen authored
      BUG=aomedia:829
      
      Change-Id: I78347e12b4efa05ebd424ba25de7767437495b42
      9dccdf24
    • Jingning Han's avatar
      Experiment probability precision for lv-map coding · 94cea4ac
      Jingning Han authored
      Experiment probability precision for binary coding in the lv-map
      coding system.
      
      Change-Id: I8d9c49eee6dc7ca7970390fa5febe25b80bfab3c
      94cea4ac
    • Debargha Mukherjee's avatar
      Fix rd scales for transforms larger than 32x32 · b02d2f39
      Debargha Mukherjee authored
      Change-Id: I1ddec0cf3513e2bd7568393e5ed5d52c25014ab4
      b02d2f39
    • 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
    • Dominic Symes's avatar
      MAX_TILE: Allow list of tile widths/heights · 26ad0b22
      Dominic Symes authored
      The aomenc API is modified to allow --tile_width and --tile_height to take a list of sizes.
      For example, --tile_width=2,3 will give tiles of widths 2,3,2,3,... until the image width
      is exhausted. --tile_width=2 will still work to gives tiles of width 2.
      
      Change-Id: I2afa14d404557aa8b7341b20f7477590e03e0bdb
      26ad0b22
    • Sebastien Alaiwan's avatar
      Remove HBD special cases · 8ce18aea
      Sebastien Alaiwan authored
      xd->bd is available here and is equal to 8 in the low-bitdepth case.
      
      Change-Id: I20760f7ec4279008fdab005345442052b1d10905
      8ce18aea
    • Cheng Chen's avatar
      LOOPFILTER_LEVEL: add flexibility for EXT_DELTA_Q · 880166ab
      Cheng Chen authored
      When experiment LOOPFILTER_LEVEL is on, there're four base filter levels
      for each frame. This patch enables one to use one delta or four deltas
      to update corresponding filter levels for each superblock in
      EXT_DELTA_Q.
      
      1 bit per frame is sent through bitstream to select one or four deltas.
      Now, we hard code to use one delta.
      
      Change-Id: I9c61a035064fa81878b0575ad21664e2b22a6a45
      880166ab
  2. 03 Oct, 2017 6 commits
    • Hui Su's avatar
      Remove symbol mapping of intra modes · 814f41e7
      Hui Su authored
      The _ind and _inv mapping tables are not necessary. The CDF tables are
      updated with new values converted from the old tables. Performance
      impact is small and neutral.
      
      Change-Id: I65845ab3c80f88794abd9ab9e61494af56099c7c
      814f41e7
    • David Barker's avatar
      Fix global-motion + error-resilient-mode · d7c8bd51
      David Barker authored
      Patch https://aomedia-review.googlesource.com/c/21783
      changed things so that error-resilient frames use the default
      global motion parameters as a reference, rather than taking
      the reference from the previous frame.
      
      This was implemented by clearing out cm->prev_frame->global_motion
      when we have an error-resilient frame. Unfortunately, this causes
      an issue: if we have an error resilient frame which isn't stored
      into any reference slots, followed by a non-error-resilient frame,
      then both frames refer to the same prev_frame. The second frame
      then delta-codes against cm->prev_frame->global_motion, but
      this was reset to the default values by the intervening
      error-resilient frame!
      
      In order to allow the above case to work as intended, expand the
      default warp parameter set to a full WarpedMotionParams struct,
      and use that as the reference for error-resilient frames.
      
      This also allows us to remove set_default_warp_params, as we
      can now just copy directly from default_warp_params.
      
      Change-Id: I9645615db2700c1d3810e6e42f4f1da626fcd5e3
      d7c8bd51
    • David Barker's avatar
      Deduplicate use_reference_buffer/frame_id_numbers_present_flag · 5e70a114
      David Barker authored
      These two flags serve essentially the same purpose, so we can
      simplify down to just having one flag. Since the
      frame_id_numbers_present_flag is older and listed in the
      reference-buffer design doc, this is the one we'll keep.
      
      Note that, previously, frame_id_numbers_present_flag was only
      sent when CONFIG_OBU was enabled - otherwise it was always set
      to 1. On the other hand, use_reference_buffer was always signalled
      so that allowed us to disable frame ids even without CONFIG_OBU.
      
      In order to keep the ability to disable frame IDs without
      CONFIG_OBU, we send a "real" sequence header (ie, with the same
      data as in CONFIG_OBU) in-line within the uncompressed header.
      This is sent every keyframe and every intra-only frame, just
      as the use_reference_buffer flag was before this patch.
      
      BUG=aomedia:853
      
      Change-Id: I4bb6c7a222aeddfb6d3737a39d10782d32ee2eee
      5e70a114
    • Yushin Cho's avatar
      Make braces matchable in vi for select_tx_block() · c5a1f263
      Yushin Cho authored
      For select_tx_block() in rdopt.c.
      
      Change-Id: Iaac658ab7e7c0b53597f4f781a4fd0f340e9308d
      c5a1f263
    • 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
    • Angie Chiang's avatar
      Fix memory leak incurred by av1_alloc_txb_buf() · 9367e3ec
      Angie Chiang authored
      Since alloc_compressor_data() may be called multiple times before
      dealloc_compressor_data() is called
      
      The av1_alloc_txb_buf() called by alloc_compressor_data() should
      free the txb_buf before allocating new txb_buf
      
      Change-Id: I0fe15de771e0669ec3521e5aac322f5cedfd67a9
      9367e3ec
  3. 02 Oct, 2017 5 commits
  4. 01 Oct, 2017 5 commits
  5. 30 Sep, 2017 3 commits
    • Yushin Cho's avatar
      [dist-8x8] Bug fix - exclude invisible pixels · 2f025aae
      Yushin Cho authored
      There were two places where invisible pixels are included
      when calculating distortion with dist-8x8 is turned on.
      Those are bugs and fixed by this commit.
      
      1) When av1_dist_8x8() is called in dist_8x8_sub8x8_txfm_rd()
      - New assert() are also added to detect any failures in the future.
      
      2) Inside av1_dist_8x8() and av1_dist_8x8_diff(), with tune-metric == PSNR.
      
      Change-Id: I078d1feb3bb010c0e34041640bb69a400125817a
      2f025aae
    • Yaowu Xu's avatar
      Remove experiment speed_refs · 9293bce0
      Yaowu Xu authored
      Change-Id: Ie4e2f04a6fa27480e500469a0d822e539b7cb066
      9293bce0
    • Rupert Swarbrick's avatar
      Add a new layout for HORZ/VERT_A/B partitions · 3dd33911
      Rupert Swarbrick authored
      This hides behind --enable-ext_partition_types_ab. When that flag is
      set, the mixed partitions change from
      
         +-+-+---+          +-+-+---+
         |   |   |          | | |   |
         |---+   |    to    | | |   |
         |   |   |          | | |   |
         +-+-+---+          +-+-+---+
      
      (that's PARTITION_VERT_A; other partitions change similarly).
      
      Since 128x32 and 32x128 block support hasn't yet been merged, this
      patch also temporarily disables these partitions for 128x128 blocks.
      
      Change-Id: Ic479c0fc129f590b8ad56d72dc98ba79ae1bd1cf
      3dd33911
  6. 29 Sep, 2017 8 commits
  7. 28 Sep, 2017 4 commits
    • Cheng Chen's avatar
      Make LOOPFILTER_LVL support segment · d8184dae
      Cheng Chen authored
      Experiment LOOPFILTER_LVL has 4 deblocking filter levels for:
      y plane horizontal, y plane vertical, u plane, and v plane.
      
      The patch supports segment updates for each of the four filter levels.
      
      Change-Id: I494e8d9ab67e37c5f6234b8d9db8e3e3abf70d52
      d8184dae
    • 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
    • Thomas Daede's avatar
      Remove unused bytes from uncompressed header. · 3e22da3d
      Thomas Daede authored
      Although they are called "sync codes", nothing is synchronized
      using them.
      
      Change-Id: I2dbd67daf9f4822438323212bb96cac489c38c5d
      3e22da3d
    • Angie Chiang's avatar
      Customize coding scheme for 1D transform · f12cc4a4
      Angie Chiang authored
      Observe 0.1% gain on lowres wo optimize_b before rebase
      
      Change-Id: I0cb5b5e4be2563093efb2f6dfbefdce9b554e910
      f12cc4a4