1. 20 Oct, 2017 12 commits
  2. 19 Oct, 2017 11 commits
    • Cheng Chen's avatar
      Soft enable loopfilter_level · 9ac7a0f3
      Cheng Chen authored
      Enable it as it is adopted.
      Fix some compile warnings and compatibilities.
      
      Change-Id: If324e749e27ffa42f69a19ad5ebb39bc493b33ec
      9ac7a0f3
    • Jingning Han's avatar
      Support backward motion vector projection from alt2 · 28031907
      Jingning Han authored
      Support backward projection of the motion vectors from the
      ALTREF2 reference frame to build the motion field.
      
      Change-Id: I81d41c3ea71c14e6d8932f4e106c34976696b74d
      28031907
    • Jingning Han's avatar
      Refactor motion field projection process · 3bd1bc23
      Jingning Han authored
      Abstract the operation for backward projection.
      
      Change-Id: If458cfe8d2f152227565e8b58c864fd2e7824b43
      3bd1bc23
    • Nathan E. Egge's avatar
      Rename DAALA_DCTx experiments to DAALA_TXx. · e554f36c
      Nathan E. Egge authored
      Change-Id: I8fa0a67d7a198b8b24837ffc352acf77f390cffe
      e554f36c
    • David Barker's avatar
      loopfilter-level: Fix some inconsistencies · cce013cd
      David Barker authored
      * Fix a case where we would calculate the Y horizontal filter strength
        as the sum of the base Y *vertical* strength and the
        per-segment delta Y horizontal strength.
      
      * When using delta_lf_multi, adapt the corresponding CDFs between frames
      
      * Correct values in seg_feature_data_{signed,max}
      
      Change-Id: I1976d2024e9e16fe73258cf41d56aafe8a830957
      cce013cd
    • Rupert Swarbrick's avatar
      Comment/refactor striped loop restoration save/restore functions · 9af0cf3c
      Rupert Swarbrick authored
      This shouldn't change the behaviour at all, but I think the resulting
      code is slightly easier to read and follow. I've also added copious
      comments to setup_processing_stripe_boundary to explain exactly what
      the code is doing.
      
      Change-Id: I68adf2d0455b7d87aa04d7e6daa43f4d730c6f80
      9af0cf3c
    • David Barker's avatar
      deblock-13tap: Don't use 8-tap filter for chroma plane · b1d1f2ca
      David Barker authored
      For the chroma plane, the selected filter length was based on
      transform size as follows:
      TX_4X4 -> filter_length = 4
      TX_8X8 -> filter_length = 8
      TX_16X16 -> filter_length = 6 (this is intentionally *not* 16)
      
      This seems inconsistent; presumably the intention is to use the
      6-tap filter for TX_8X8 as well. This patch makes the appropriate
      change to make that be the case.
      
      Change-Id: I7f53d1dce4f16144bcf0c20131527b5193311603
      b1d1f2ca
    • Rupert Swarbrick's avatar
      General tidy-ups in loop restoration code · d3d0615e
      Rupert Swarbrick authored
      This refactors the iteration in restoration.c so that all the scary
      stuff lies in a pair of general functions, filter_frame and
      filter_rest_unit.
      
      filter_frame is currently very simple, iterating over the restoration
      units in the frame. Once we've made it so that restoration units don't
      span tile boundaries, this function is the one we'll need to update to
      iterate over tiles and then restoration units within the tile.
      
      filter_rest_unit replaces the outer loop of the loop_*_filter_tile*
      functions. It deals with chopping the restoration unit into stripes of
      height procunit_height. When CONFIG_STRIPED_LOOP_RESTORATION is true,
      it also deals with calling setup_processing_stripe_boundary and
      restore_processing_stripe_boundary to use boundary data from the
      deblocked output.
      
      Some of the ugly #if/#endif blocks have been elided in the wiener
      filter code (both low and high bit depth), by defining a convolve
      alias based on USE_WIENER_HIGH_INTERMEDIATE_PRECISION.
      
      There are also changes to extend const-ness for the source frame. I've
      adopted the convention that the frame input is called "data" (as it
      was before) while it's non-const. This is true as far as
      filter_rest_unit. Then each "process one stripe" function takes a
      const pointer to the source frame, at which point it's called "src".
      
      The intention is that, once filter_rest_unit no longer needs a
      RestorationInternal pointer, this function can be exposed in
      restoration.h and can be used by pickrst.c
      
      Change-Id: I18043a172ef0ca1154d87cf7f63e3a80944627cd
      d3d0615e
    • Rupert Swarbrick's avatar
      Remove partial_frame support from loop restoration · 146a060a
      Rupert Swarbrick authored
      This flag comes from the loop filter's speed features and (I think)
      tells the encoder to make decisions about the filter by looking at a
      narrow strip in the middle of the frame.
      
      That's reasonable enough, but doesn't make any sense for loop
      restoration, where we were calling av1_loop_restoration_frame from
      pickrst.c in order to calculate what restoration parameters to use for
      a given restoration unit (which might not be in the narrow strip in
      the middle!)
      
      As it turns out, the LPF_PICK_FROM_SUBIMAGE method is never actually
      signalled in the reference encoder, which is presumably why we haven't
      spotted this before.
      
      Change-Id: I745e2eab873c0b33920caca40e338af9d078d25e
      146a060a
    • Rupert Swarbrick's avatar
      Remove RestorationInternal from AV1_COMMON · f88bc049
      Rupert Swarbrick authored
      The bits needed by striped loop restoration are now in
      RestorationInfo (which also gets rid of a rather ugly extra
      index).
      
      The scratch buffer that's used for self-guided restoration has been
      moved up to its own variable (rst_tmpbuf).
      
      All the rest of the fields are now safely hidden inside restoration.c
      
      This patch also does a big cleanup of the initialisation code in
      loop_restoration_rows: it doesn't need to be as repetitive now that
      the fields of YV12_BUFFER_CONFIG can be accessed by plane index.
      
      Change-Id: Iba7edc0f94041fa053cdeb3d6cf35d84a05dbfaf
      f88bc049
    • Rupert Swarbrick's avatar
      Don't compute rtile width/height in av1_get_rest_ntiles · 64b8bbdf
      Rupert Swarbrick authored
      Restoration units are a fixed square size (in cm->rst_info[plane]) for
      almost the entire image. The only special case is for tiles at the
      right hand edge or the bottom row, which might expand or be cropped.
      
      The av1_get_rest_ntiles function was implementing the cropping
      behaviour when the image happened to be less than one restoration unit
      wide or high (but not the expansion behaviour), but the result was
      never useful: if you want to get the size of a restoration tile in
      order to divide by it to work out what tile you're on, the fixed
      square size is what you want. If you need to know how big this
      particular tile is, call av1_get_rest_tile_limits.
      
      As well as removing the output arguments from
      av1_get_rest_tile_limits, this patch also removes the tile_width and
      tile_height fields from the RestorationInternal structure. Note that
      the tile size which is what you actually need is accessible as
      rst->rsi->restoration_tilesize. (In practice, these were almost always
      the same anyway).
      
      This patch also has a couple of other small cleanups. Firstly, it
      moves the subsampling_y field out of
      CONFIG_STRIPED_LOOP_RESTORATION. It's not actually needed when you're
      not doing striped loop restoration, but this gets rid of lots of
      horrible #if/#endif lines at callsites for av1_get_rest_tile_limits.
      
      Secondly, it simplifies the code in init_rest_search_ctxt (and fixes
      some tautologous assertions). Now that YV12_BUFFER_CONFIG has a more
      uniform layout, there's a simpler way to set things up, so we use
      that.
      
      Change-Id: I3c32d8ea0abe119dc86b9efa7564b27dde2151dc
      64b8bbdf
  3. 18 Oct, 2017 5 commits
  4. 17 Oct, 2017 5 commits
  5. 16 Oct, 2017 6 commits
    • Yaowu Xu's avatar
      Align more restoration work buffers · 15269e6e
      Yaowu Xu authored
      Fixes crashes on x86-win32-vs14 build
      
      Change-Id: I045dd0fe4e9af3bfb80223e291617b717cbcb231
      15269e6e
    • Debargha Mukherjee's avatar
      Enable cdf updates for loop-restoration · 43061b3a
      Debargha Mukherjee authored
      BUG=aomedia:907
      
      Change-Id: Ibe367eb34596e2d34d8c059e083b083e702c225e
      43061b3a
    • Yunqing Wang's avatar
      Further modify the sample selection in warped motion · 5a6dc0e7
      Yunqing Wang authored
      1. Reduce the worst-case number of samples from 34 to 16.
      2. Simplify the trimming strategy to not use multiplication and
      division operations.
      
      Overall, this modification reduces the complexity without affecting
      the coding gain too much.
      
      Turning on "ext_warped_motion", the Borg test showed:
                   avg_psnr ovr_psnr ssim
      cam_lowres:  -0.912   -0.920  -1.246
      lowres:      -0.229   -0.219  -0.373
      
      Change-Id: Ida21d1d3f22998c851b1270fe61a5e30f9e4ec38
      5a6dc0e7
    • Sebastien Alaiwan's avatar
      Remove abandonned SUPERTX experiment · 0cf54d40
      Sebastien Alaiwan authored
      Change-Id: I9d3f0380865790d8adcb85f03305b193bc1949d7
      0cf54d40
    • Sebastien Alaiwan's avatar
      Remove compile guards for CONFIG_EXT_REFS · 365e644a
      Sebastien Alaiwan authored
      This experiment has been adopted, we can simplify the code
      by dropping the associated preprocessor conditionals.
      
      Change-Id: I4705652ac8231ee25f960e8096dc97c2aeed1d20
      365e644a
    • Hui Su's avatar
      Remove the intra-interp experiment · 259d4422
      Hui Su authored
      This experiment uses switchable interpolation filter for intra
      prediction. Current gain is too small to be useful for AV1.
      May explore more for AV2 in the future.
      
      Change-Id: I24ae8c75dc71adf6271eabdb68a81b68a0869fa2
      259d4422
  6. 15 Oct, 2017 1 commit