1. 09 Nov, 2017 5 commits
    • Monty Montgomery's avatar
      Add Daala TX to rectangular 32x64 and 64x32 transforms · 6a2a75b6
      Monty Montgomery authored
      This patch adds Daala TX transforms ot the 32x64 and 64x32 transform
      block sizes using Q3 (up 4, down 1) scaling.
      
      subset 1:
      monty-daalaTX-fulltest-Daalabaseline-s1@2017-11-07T00:01:46.582Z ->
       monty-daalaTX-LBD-Daala32x64-s1-Z@2017-11-07T06:10:58.523Z
      
        PSNR | PSNR Cb | PSNR Cr | PSNR HVS |   SSIM | MS SSIM | CIEDE 2000
      0.0112 | -0.0769 |  0.0799 |   0.0567 | 0.0099 | -0.0077 |    -0.0446
      
      objective 1 fast:
      monty-daalaTX-fulltest-Daalabaseline-o1f4@2017-11-07T05:59:16.553Z ->
       monty-daalaTX-LBD-Daala32x64-o1f4-Z@2017-11-07T06:10:11.519Z
      
         PSNR | PSNR Cb | PSNR Cr | PSNR HVS |    SSIM | MS SSIM | CIEDE 2000
      -0.0190 |  0.0926 | -0.0730 |  -0.0516 | -0.0037 | -0.0588 |     0.1310
      
      Change-Id: I6246ecba388ae81deadc7b306dc3404fa7869aab
      6a2a75b6
    • Monty Montgomery's avatar
      Separate quantizers used for quantization from RDO · 125c0fca
      Monty Montgomery authored
      Generalize quantizer setup so that quantization and TX can use
      different coefficient shifts/scalings without inpacting RDO lambda
      generation.
      
      This patch is documentaiton + a minor refactor setting up later
      work; it causes no functional change.
      
      monty-daalaTX-fulltest-Daalabaseline-o1f@2017-11-07T00:01:20.779Z ->
       monty-daalaTX-fulltest-DaalaRDO-o1f@2017-11-07T00:02:31.347Z
      
      PSNR | PSNR Cb | PSNR Cr | PSNR HVS | SSIM | MS SSIM | CIEDE 2000
       N/A |  0.0000 |  0.0000 |      N/A |  N/A |     N/A |        N/A
      (note-- the numbers above were collected using --cpu-used=3, which
       appears to be newly broken.)
      
      monty-daalaTX-fulltest-Daalabaseline-o1f4@2017-11-07T05:59:16.553Z ->
       monty-daalaTX-fulltest-DaalaRDO-o1f4@2017-11-07T05:59:50.180Z
      
        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
      
      monty-daalaTX-fulltest-Daalabaseline-s1@2017-11-07T00:01:46.582Z ->
       monty-daalaTX-fulltest-DaalaRDO-s1@2017-11-07T00:02:56.282Z
      
        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: Ia5a3c052eacd17184ca1b0fe6d032cfb9afdb77f
      125c0fca
    • Linfeng Zhang's avatar
      Initialize update_eob to -1 in txb code · 848f7bc7
      Linfeng Zhang authored
      To skip possible unnecessary looping.
      
      Change-Id: If611d344ab39eee53de6c5256ce5f8febedecc9b
      848f7bc7
    • Zoe Liu's avatar
      Add one more level for selective ref frame speed feature · 451672e2
      Zoe Liu authored
      Change-Id: Idb4c986d8cd795e2d2ea76023674c8b2ba5d353c
      451672e2
    • Zoe Liu's avatar
      Align encoder stats update on delta_qindex and delta_lflevel · 59d2dd02
      Zoe Liu authored
      This patch is to add the according changes to update_stats() on the
      encoder side for signaling of delta_qindex and delta_lflevel, aligned
      with the following CL:
      https://aomedia-review.googlesource.com/c/aom/+/30801
      
      BUG=aomedia:992
      
      Change-Id: Ie627d4ebce085da85bcee7d5d3f9a7c358725481
      59d2dd02
  2. 08 Nov, 2017 11 commits
    • Debargha Mukherjee's avatar
      Replace ZERO with GLOBAL for mode thresholds. · ae2f3cf0
      Debargha Mukherjee authored
      Change-Id: Ied50f8302875ce03a4e52ff8862422d8ec919c7f
      ae2f3cf0
    • Debargha Mukherjee's avatar
      Fix to hashing function to support highbitdepth · fd65c8dc
      Debargha Mukherjee authored
      Change-Id: Ib5de3d1c1acce676b3fcc12b4c237d681ac9a845
      fd65c8dc
    • Thomas Daede's avatar
      Use AOM_CDF* macros instead of bare AOM_ICDF macros. · e82e5774
      Thomas Daede authored
      This will facilitate later experiments reducing the precision
      of probabilities.
      
      after_cdf_table_rewrite-3 -> before_cdf_table_rewrite-3
      
        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: Ief01b4d7fdca075c41e9add079f7ac836dafcfbe
      e82e5774
    • Arild Fuldseth (arilfuld)'s avatar
      FRAME_SIZE: Never exceed maximum frame dimensions. · b638074c
      Arild Fuldseth (arilfuld) authored
      Encoder:
      Use oxcf->width/heigth instead of cm->width/height in sequence header.
      aom_internal_error() if cm->width/height is larger than max values.
      
      Decoder:
      aom_internal_error() if cm->width/height is larger than max values.
      
      Change-Id: I8d8b415efe82d961dbe34377f4da79379cb111a8
      b638074c
    • Cheng Chen's avatar
      JNT_COMP: fix issues with convolve_round · 3866a142
      Cheng Chen authored
      Fix an issue of sudden PSNR drop on a few frames when convolve_round
      is turned on.
      
      C functions is added.
      
      Corresponding simd functions and unit tests will be updated in
      future CL.
      
      Change-Id: I0126ea4d54c98951e5b1efeaecd5468fdc18724a
      3866a142
    • Yunqing Wang's avatar
      Make apply_encoding_flags work when lag_in_frames > 0 · f2e7a397
      Yunqing Wang authored
      av1_apply_encoding_flags() was called in encoder_encode(). If
      lag_in_frames > 0, it wouldn't be called for last several frames
      while flushing the encoder, and thus cpi->ref_frame_flags can not
      be set correctly. This patch fixed the issue by adding an extra
      flag cpi->ext_ref_frame_flags to store the external reference
      frame flag, and pass it to cpi->ref_frame_flags correctly.
      
      Change-Id: I9c3f22f92b81c7b4b6241a3f7edcaeabd8d8bbc9
      f2e7a397
    • Zoe Liu's avatar
      Remove ONE_SIDED_COMPOUND experimental flag · c01dddb7
      Zoe Liu authored
      Always assume ONE_SIDED_COMPOUND is true as it has been adopted
      officially. Further, this patch also fixes the cmake setup for
      the experiment of EXT_COMP_REFS, as when EXT_COMP_REFS is on, it
      shall always have ONE_SIDED_COMPOUND on (but that was not the case
      without this patch).
      
      We leave EXT_COMP_REFS for the time being, even though it is also
      adopted, since by keeping this flag, it may allow its turning off to
      tune the encoder speed. The experiment of EXT_COMP_REFS should be
      removed eventually at the closing of the bitstream.
      
      Change-Id: I0644318e522f5b48d5bba4e4391104a24d43cdc3
      c01dddb7
    • Yaowu Xu's avatar
      Revert "Turn on the max_tile experiment" · 81d458b2
      Yaowu Xu authored
      This reverts commit ab8bb8b8.
      
      The reverted breaks many nightly run tests, reverting this temporarily
      to allow nightly tests to detect other failures. Once the issues are
      fixed, we can reenable the change in the reverted commit.
      
      BUG=aomedia:1012
      BUG=aomedia:1013
      BUG=aomedia:1014
      
      Change-Id: I2503fe78e47c7a08bb6cfdfff2c295cec0b6497d
      81d458b2
    • Linfeng Zhang's avatar
      Remove get_level_count_mag_coeff() and get_br_ctx_coeff() · 841a84d6
      Linfeng Zhang authored
      Change-Id: Ie6d663aacbed1452060cdef60e96d6acf469d430
      841a84d6
    • Linfeng Zhang's avatar
      Remove temporary coeff_is_byte_flag in txb code · b6957c29
      Linfeng Zhang authored
      Change-Id: I8b3e028b3c17660b390ce9c65b3d31aabc83efd9
      b6957c29
    • Sebastien Alaiwan's avatar
      Cleanup unreachable statement · fcebd49e
      Sebastien Alaiwan authored
      Change-Id: I48f45d47123c3eeea0684a5652bffec499408095
      fcebd49e
  3. 07 Nov, 2017 18 commits
    • Hui Su's avatar
      intrabc: control reference areas · 64463e74
      Hui Su authored
      Change-Id: I853a0e4b5fc7e7b5c1745b401214ef71b65aad60
      64463e74
    • Rupert Swarbrick's avatar
      Move loop restoration reset into a helper function · 76405206
      Rupert Swarbrick authored
      This seems a little cleaner than having the loop open coded in four
      places.
      
      Change-Id: I2ce7be2745ba3575f618d9e261ab767d10f551f7
      76405206
    • Rupert Swarbrick's avatar
      Remove duplicated code for reading/writing sequence header · b394bfec
      Rupert Swarbrick authored
      Teach read_sequence_header_obu and write_sequence_header_obu to just
      call read_sequence_header and write_sequence_header, respectively.
      
      Change-Id: Iff27b5cfbccab0ebaf2e28d72df3d6606964936f
      b394bfec
    • Rupert Swarbrick's avatar
      Fix widths in OBU reading code · 4cbf05c5
      Rupert Swarbrick authored
      It was mixing uint32_t and size_t, which isn't correct on a 64-bit
      system and causes compilation warnings.
      
      Change-Id: I3677c02cb366d60175e762ec4249d2445ee729de
      4cbf05c5
    • Rupert Swarbrick's avatar
      Use correct RestorationInfo when encoding tilesize · 4596deb2
      Rupert Swarbrick authored
      Also, factor out some long constants to avoid line wrapping.
      
      BUG=aomedia:1009
      
      Change-Id: I7850c27d22ef8b927c3554f1083bc7bdf2c7c6b3
      4596deb2
    • Sebastien Alaiwan's avatar
      Remove LPF_DIRECT experiment · 472b1744
      Sebastien Alaiwan authored
      This experiment has been abandonned for AV1.
      
      Change-Id: I599608060ade646d6551dea7cfc680f83ee9d507
      472b1744
    • Hui Su's avatar
      Don't use sub8x8_inter for intrabc blocks · 96e119a3
      Hui Su authored
      Change-Id: Ibaeea878e37f193e405910fac34176065cb5d2e3
      96e119a3
    • Hui Su's avatar
      intrabc: add assertions for DV subpel · 1e6bf6ba
      Hui Su authored
      DV and ref DV should not have subpel values.
      
      Change-Id: I7c47c442936f1d6bda36314812c44498ba6195a6
      1e6bf6ba
    • Hui Su's avatar
      intrabc: only consider intrabc blocks' mvs for ref mv · 1e68d5dd
      Hui Su authored
      When generating ref mv list, only consider neighbor blocks that use intrabc.
      
      Change-Id: I69f838a38478ce118f936dbf431048d3d42d4f34
      1e68d5dd
    • Linfeng Zhang's avatar
      Add levels array in av1_optimize_txb() · 1015a347
      Linfeng Zhang authored
      av1_txb_init_levels() has prefix 'av1' because it will be optimized
      and not static later.
      
      Change-Id: I988da817335f122522a76c4412207c3a6fdd6b71
      1015a347
    • Joe Young's avatar
      Enable ext-intra-mod by default · 2edfc37b
      Joe Young authored
      Provisionally adopted on 2017-10-31
      
      (Also an asan warning fix + few non-functional changes)
      
      Change-Id: I2ff4f34f8b20d2eeb567f2e5b1e57b296a97be82
      2edfc37b
    • Yaowu Xu's avatar
      Avoid left shift of negative numbers · 2a91ab7e
      Yaowu Xu authored
      Change-Id: I21f956a83687ebaeab81577aabdbfed2ea2b4dd2
      2a91ab7e
    • Zoe Liu's avatar
      Speed up ref selection by enforcing max 6 frames · f452fdfe
      Zoe Liu authored
      A speedup feature that enforces the maximum number of reference frames
      to evaluate for each arbitrary frame to be 6, as opposed to the maximum
      syntax-allowed number of reference frames which is 7, through the
      following rules:
      
      (1) When all the possible reference frames are availble, we reduce the
          number of reference frames (7) by 1 by removing one reference
          frame;
      (2) Always retain GOLDEN_FARME/ALTEF_FRAME;
      (3) Check the earliest 2 remaining reference frames, and there are two
          options to remove one reference frame:
          (a) Remove the one with the lower quality factor; Otherwise if
          both frames have been coded at the same quality level, remove the
          earliest reference frame;
          (b) Always remove the earliest reference frame.
          Currently set option (a).
      
      This patch has demonstrated an encoder speedup of ~8.5%. It is under
      speed2 with "selective_ref_frame >= 2". (May be considered to move
      to speed1 later once the coding performance impact is evaluated
      further.)
      
      Using the following configure setups, the coding performance has been
      dropped on Google test sets (50 frames) in BDRate by ~0.2% for lowres
      and by ~0.1% for midres:
      --enable-experimental --disable-convolve-round --disable-ext-partition
      --disable-ext-partition-types --disable-txk-sel --disable-txm
      
      Change-Id: I84317bae00bfd90b2c3d301858a849f441974e6f
      f452fdfe
    • Nathan E. Egge's avatar
      Replace OD_UNBIASED_RSHIFT32() with OD_RSHIFT1(). · 49fad89a
      Nathan E. Egge authored
      Because daala_tx only ever does an unbiased shift by 1, we can replace
       the varible shift macro with a simpler hardcoded implementation.
      This patch causes no change in behavior.
      
      subset-1:
      
      daala_tx@2017-11-04T07:20:17.571Z ->
       daala_tx-no_op@2017-11-04T07:21:06.231Z
      
        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: Ifddfef079320de0df09d9bc39757af9fe81e3c38
      49fad89a
    • Monty Montgomery's avatar
      Fix build for CONFIG_DAALA_TX and CONFIG_TX64X64 · 683f70e7
      Monty Montgomery authored
      The recent 64x32 and 32x64 patches break the build when
      CONFIG_DAALA_TX and CONFIG_TX64X64 are enabled simultaneously.  This
      is a minor correction that fixes the build problem.
      
      Change-Id: I53cd8df9160fc35b67f2ac16bddcfab08425cf8e
      683f70e7
    • Debargha Mukherjee's avatar
      Back out pruning for horz_4 and vert_4 partitions · d75ea5b5
      Debargha Mukherjee authored
      This change seems to drop efficiency more than expected. So backing
      that out for now until a better rd based decision is found.
      
      Change-Id: I3791a13ba76cfa38dd0df2f1fd4119b42b12291d
      d75ea5b5
    • Yue Chen's avatar
      Fix mismatches caused by filter_intra · 18f6c15c
      Yue Chen authored
      Return invalid rate (previously only invalid rdcost) if the
      mode combination to check is < 8x8 tx_size + filter_intra mode.
      
      BUG=aomedia:1006
      
      Change-Id: If90f431c7692473c88ac7a644bfa969a1acb3573
      18f6c15c
    • Rupert Swarbrick's avatar
      striped-loop-restoration: Respect tile experiments · 921b334f
      Rupert Swarbrick authored
      As of patch https://aomedia-review.googlesource.com/c/aom/+/28821 ,
      loop-restoration units cannot cross tile borders. But the context
      around each processing unit was still allowed to cross tile borders.
      This is fine in the usual case - but, when loop filtering across tiles
      is switched off, we're supposed to be able to decode each tile completely
      independently (each tile column, if dependent-horztiles is on).
      
      Roughly, the change we need to make is:
      When loop filtering across tiles is switched off, we treat each tile
      as if it were a full frame, and extend the CDEF output for that tile
      to form a 3-pixel border around the tile. We only use deblocked
      above/below pixels for processing unit boundaries which lie inside
      a tile.
      
      In terms of the code, this is implemented in two parts. This only
      applies when the loop_filter_across_tiles_flag is false; otherwise,
      we keep the old behaviour.
      
      * For processing units at the top edge of a tile, fill the above context
        with copies of the topmost line of CDEF output *from the same tile*,
        rather than using deblocked pixels from the tile above.
        The below context of processing units at the bottom edge of a tile
        is treated analogously.
      
      * When setting up the boundary for a processing stripe at the left edge
        of a tile, fill the stripe's left boundary with copies of the
        leftmost column of CDEF output from the same tile. Again, processing
        stripes at the right edge of a tile are treated analogously.
      
        Similarly to the above/below boundaries, we store the overwritten
        pixels into a pair of left/right context buffers, and restore them
        to their original values once we've dealt with that processing stripe.
      
      Change-Id: I53a0932793c1c56dc037683c6a4353a3f5dc4539
      921b334f
  4. 06 Nov, 2017 6 commits
    • Yushin Cho's avatar
      [segment] Remove coding of seg->abs_delta · d728c216
      Yushin Cho authored
      Remove the option of raw data or delta when coding the
      segment data, then only use delta coding.
      
      Raw data coding of segment data has been nowhere used but
      the option of "raw or delta codig of seg_data" has been coded to a bitstream.
      
      Change-Id: Iaf8f21692452d0c9a127b958812c6151d3c5db05
      d728c216
    • Yushin Cho's avatar
      [segment] Remove unused function · accfe39a
      Yushin Cho authored
      Also move its comment on seg_data to other relavant function.
      
      Change-Id: I5d3282040862cd09565b9d4f7baadf0124b64823
      accfe39a
    • Luc Trudeau's avatar
      [CFL] DC_PRED as a block instead of as single value · ace7ffb2
      Luc Trudeau authored
      This change does not alter the bitstream. This change simplifies a subsequent
      commit to remove the custom DC_PRED used by CfL. To use the DC_PRED in AV1, 
      CfL must consider the DC_PRED as a block instead of a single value.
      
      Results on Subset1 (Compared to Previous commit with CfL enabled)
        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=master%402017-11-03T15%3A57%3A30.643Z&job=cfl-pixel-DC_PRED%402017-11-03T15%3A59%3A03.304Z
      Change-Id: I75f981ab93ab1808450f8280bfbabde76ea5b7fe
      ace7ffb2
    • Rupert Swarbrick's avatar
      Correct a loop restoration buffer size · efa76d7e
      Rupert Swarbrick authored
      On subsampled planes, the frame is narrower but the padding by
      RESTORATION_EXTRA_HORZ on each side is the same width as usual.
      
      Change-Id: Id68c0dd674efaa769412825b119ae5ebe56548ad
      efa76d7e
    • Yunqing Wang's avatar
      Disallow to use temporal MVs while large_scale_tile=1 · 0edbdcde
      Yunqing Wang authored
      While large_scale_tile=1, not use temporal MVs.
      
      Change-Id: I7107519595b79cbca45dfe72d5ada78cfdc39b00
      0edbdcde
    • Yunqing Wang's avatar
      Update the encoder flags for reference frames using and updating · 9a50fec3
      Yunqing Wang authored
      Updated the encoder flags for externally setting reference frames using
      and updating to include latest changes in AV1.
      
      1. For what reference frames to use, always initilize
      cpi->ref_frame_flags with AOM_REFFRAME_ALL at the beginning of encoding
      a frame. The internal ref_frame_flags starts from external flags. Added
      AOM_EFLAG_NO_REF_LAST2 and AOM_EFLAG_NO_REF_LAST3 for LAST2 and LAST3.
      
      2. For what reference frames to update, added ext_refresh_bwd_ref_frame
      and ext_refresh_alt2_ref_frame for BWD and ALT2. Also, removed
      AOM_EFLAG_FORCE_GF and AOM_EFLAG_FORCE_ARF since these are never
      actually used. They can be added back if needed later.
      
      Change-Id: I1e4429290f09bfcd1b26f2babc0cf556fc6fbc6c
      9a50fec3