1. 25 Oct, 2017 5 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
    • Sebastien Alaiwan's avatar
      Remove dead struct member · dea4d313
      Sebastien Alaiwan authored
      Change-Id: Id228c94fbe6005ac37a59bb8c23cfb0f95f97af0
      dea4d313
    • Rupert Swarbrick's avatar
      Define av1_foreach_rest_unit_in_frame · 33ed9e69
      Rupert Swarbrick authored
      This is the last stage in a quest to move all knowledge of the layout
      of restoration units across the frame into restoration.c. Now this is
      done, we can change how they are laid out (to split them properly at
      tile boundaries) without having to change code in any other file.
      
      Change-Id: Id5108d787d342f5070580d0e34d84b5ddcc53a86
      33ed9e69
    • Rupert Swarbrick's avatar
      Simplify the search in pickrst.c · 1a96c3f5
      Rupert Swarbrick authored
      The end results should be essentially the same, except hopefully a
      little better because the previous code got the costing slightly
      wrong if there were multiple tiles.
      
      The code was doing something quite complicated to search for the best
      restoration types; this patch makes it much simpler. Basically,
      av1_pick_filter_restoration loops over the planes in the image. For
      each plane, it loops over the possible restoration types, calling
      search_rest_type for each one.
      
      search_rest_type iterates over the restoration units in the image,
      resetting the current context on tile boundaries and calling
      search_<rest_type> for each restoration unit.
      
      The search_norestore function just computes the SSE error with no
      restoration. The search_wiener and search_sgrproj functions compute
      the best set of coefficients and then the resulting SSE error with
      those coefficients (ignoring the bit cost, so the result can be
      re-used for switchable restoration).
      
      In all cases but search_norestore, the search function has to decide
      what restoration type is best for each restoration unit. For example,
      search_wiener could choose to enable or disable Wiener filtering on
      this unit.
      
      Eventually, search_rest_type calculates the RDCOST after summing bit
      rates and SSE errors over the restoration units. This cost gets
      returned to av1_pick_filter_restoration which can then choose the best
      frame-level restoration type.
      
      Change-Id: I9bc17eb47cc46413adae749a43a440825c41bba6
      1a96c3f5
  2. 24 Oct, 2017 15 commits
    • Linfeng Zhang's avatar
      Add 'const' to static tables to fix some warnings · 4afda450
      Linfeng Zhang authored
      Change-Id: I8604a1f644302f5e6249b89c96550e1d5715188f
      warning: assignment from incompatible pointer type
      4afda450
    • Hui Su's avatar
      Remove redundant code for intrabc RD calculation · 0c346539
      Hui Su authored
      Change-Id: I2405656d1151559420b101fc51ceae8a6ba5ca56
      0c346539
    • Hui Su's avatar
      Remove experimental flag of chroma_sub8x8 · 9fa96234
      Hui Su authored
      Change-Id: I32c5015bedef07f58413c679b4aaf30651a357b9
      9fa96234
    • Urvang Joshi's avatar
      TX64x64: zero the coeffs after top-left 32x32 block. · 2d4ac634
      Urvang Joshi authored
      This is to get an approximation of 64x64, 32x64 and 64x32 transforms.
      Compression performance is neutral for lowres and midres sets.
      
      Change-Id: I6faaca02170bfef802a6294410fd691f73914173
      2d4ac634
    • Angie Chiang's avatar
      Make rd/enc optimize_txb uses same fast_mode · 87278292
      Angie Chiang authored
      The performance drop introduced by inconsistency decision between
      optimize_txb in rd loop and final encoding phase.
      
      By making them use the same fast_mode,  will speed up encoder
      without having the performance drop
      
      Change-Id: If25e253cf99b6f17353b4031d03b57da50a1cd95
      87278292
    • Angie Chiang's avatar
      Avoid using gen_txb_cache when eob_first is on · 93af45fc
      Angie Chiang authored
      Change-Id: Ib5e79caa67ba6a061e8dc22491c86cde702be137
      93af45fc
    • Angie Chiang's avatar
      Update eob_extra counts · 0d04f573
      Angie Chiang authored
      Change-Id: Ib0e0b5f7085d3c910dcd15a3628a001af864c8fc
      0d04f573
    • Angie Chiang's avatar
      Fix av1_update_eob_context() · a6031b93
      Angie Chiang authored
      lowres 0.14% gain
      
      Change-Id: Id4d2bee555075c002b7996f0329e89c82657bfdf
      a6031b93
    • Thomas Davies's avatar
      AOM_QM: remove spurious dependence on inter/intra. · dd3cf832
      Thomas Davies authored
      Inter/intra matrices are the same. Reduce the dimensions
      of the various matrices.
      
      Change-Id: Ie5049af9195d9c48b6928143ac04ac0a5058d0d8
      dd3cf832
    • Angie Chiang's avatar
      Use original coeff arr to deal with r/w golomb · 63d190ae
      Angie Chiang authored
      This will avoid overflow issue when coeff uses more than 8 bits
      
      BUG=aomedia:954
      
      
      Change-Id: Ib5f323b0d9db3141cc019a6aad019f09b8c4f9fa
      63d190ae
    • Angie Chiang's avatar
      Do entropy coding on eob_extra · 7ab884e1
      Angie Chiang authored
      Change-Id: Ia67beabb85eedd5da5eb69f434dde71f66f08006
      7ab884e1
    • Dake He's avatar
      [eob first] code eob first · a47cd6c0
      Dake He authored
      This commit makes the following changes to level-map coding
      	1. Encode and decode eob position first
      	2. Context derivation for non-zero flags
      	3. Single pass in optimize-txb
      
      lowres 0.33% gain
      
      Change-Id: Ia2b6cfd70425f49ac021454d42d5950bfcfab50a
      a47cd6c0
    • Sebastien Alaiwan's avatar
      Remove compile guards for VAR_TX experiment · fb838778
      Sebastien Alaiwan authored
      This experiment has been adopted.
      
      Change-Id: Ife4c18a59791268b7ac0de5a8a08e762a042cae2
      fb838778
    • Rupert Swarbrick's avatar
      Make pickrst.c more efficient · 2ec2a6f1
      Rupert Swarbrick authored
      The try_restoration_tile function now works by calling
      av1_loop_restoration_filter_unit rather than
      av1_loop_restoration_filter_frame. This is rather more efficient,
      because it only works on the unit in question, rather than memcpy-ing
      the rest of the frame.
      
      Change-Id: I7cda078523202bec77e933e7b5bd2f34daae5865
      2ec2a6f1
    • Rupert Swarbrick's avatar
      Expose av1_loop_restoration_filter_unit in restoration.h · dd6f09ab
      Rupert Swarbrick authored
      This patch also does a certain amount of rejigging for loop
      restoration coefficients, grouping the information for a given
      restoration unit into a structure called RestorationUnitInfo. The end
      result is to completely dispense with the RestorationInternal
      structure.
      
      The copy_tile functions in restoration.c, together with those
      functions that operate on a single stripe, have been changed so that
      they take pointers to the top-left corner of the area on which they
      should work, together with a width and height.
      
      The same isn't true of av1_loop_restoration_filter_unit, which still
      takes pointers to the top-left of the tile. This is because you
      actually need the absolute position in the tile in order to do striped
      loop restoration properly.
      
      Change-Id: I768c182cd15c9b2d6cfabb5ffca697cd2a3ff9e1
      dd6f09ab
  3. 23 Oct, 2017 5 commits
    • Yaowu Xu's avatar
      Properly compute token buffer size · 522c989b
      Yaowu Xu authored
      This accounts for border extension necessary when image size is not
      a multiple of SB size in either horizontal or vertical direction.
      
      BUG=aomedia:647
      
      Change-Id: I18ae9edf148a83f8b32a06ca31410e30ebaa5a47
      522c989b
    • Yaowu Xu's avatar
      Use type with smaller size · abe5215f
      Yaowu Xu authored
      This is to reduce the size of the huge token buffer by at least more
      than 10%.
      
      BUG=aomedia:940
      
      Change-Id: I2ee7f7f62e8e8fb819cf7fba40a7ca7f860acaa4
      abe5215f
    • Linfeng Zhang's avatar
      Clean av1_read_coeffs_txb() · 72e0b3fa
      Linfeng Zhang authored
      Let read_nz_map() etc. output to uint8_t*.
      
      Temporarily introduced coeff_is_byte_flag as an argument of
      get_nz_count() and get_nz_map_ctx() to handle different types of input
      coefficients. It helps to not duplicate too many functions.
      If possible, unify types to uint8_t* later.
      
      Change-Id: Idbbe67b7ec563f8c9299daa0fa7d05e15c8295e6
      72e0b3fa
    • Soo-Chul Han's avatar
      fix mismatch when obu and loop_restoration are both enabled · 13f0d9cd
      Soo-Chul Han authored
      Change-Id: Ib1ec44f6276b78543296e7dae2f4f8d1b6dc303f
      13f0d9cd
    • Debargha Mukherjee's avatar
      Remove code for homography models · 1a2b35f9
      Debargha Mukherjee authored
      Change-Id: Ib93f090f395e52bd69c59e1229e2e035a8772af5
      1a2b35f9
  4. 21 Oct, 2017 3 commits
  5. 20 Oct, 2017 8 commits
  6. 19 Oct, 2017 4 commits
    • Nathan E. Egge's avatar
      Rename DAALA_DCTx experiments to DAALA_TXx. · e554f36c
      Nathan E. Egge authored
      Change-Id: I8fa0a67d7a198b8b24837ffc352acf77f390cffe
      e554f36c
    • Sebastien Alaiwan's avatar
      Fix mem corruption due to undersized token buffer · 0a86a7d2
      Sebastien Alaiwan authored
      Take a margin of 8 tokens.
      
      BUG=aomedia:647
      
      Change-Id: I04638a73deee334aa1f083f67c602c8a18cb951c
      0a86a7d2
    • Yue Chen's avatar
      Disable residue hash feature on cross-border blocks · 25dc0701
      Yue Chen authored
      Disable this feature unless the entire block is within the frame.
      The reason is, rd decisions in mbmi, e.g. inter_tx_block[][], made
      for blocks partially out of the border can be partly nonsense
      therefore cannot be reused by blocks at other locations.
      
      It caused an infinite loop when encoding a clip with repetitive
      patterns. A cross-border block has an invalid big tx stored
      in inter_tx_block[0][1] and the other block (same residue, within
      frame) reused this mbmi, which makes encoder never reach the
      termination condition when tx blocks are being recursively
      partitioned.
      
      BUG=aomedia:913
      
      Change-Id: Id25a1dbc4a68b5136f6bdf9f6b5811b7ec6920b0
      25dc0701
    • 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