1. 25 Oct, 2017 13 commits
    • Sebastien Alaiwan's avatar
      Remove dead struct member · dea4d313
      Sebastien Alaiwan authored
      Change-Id: Id228c94fbe6005ac37a59bb8c23cfb0f95f97af0
      dea4d313
    • Rupert Swarbrick's avatar
      Avoid UB from misaligned loads/stores in loopfilter code · 129afee7
      Rupert Swarbrick authored
      This patch changes 32 bit loads and stores (which did trigger
      undefined behaviour when the pointer wasn't aligned) to use the
      xx_storel_32 synonym. This should also just generate a MOVD and is
      less verbose to boot!
      
      The patch also changes store_buffer_horz_8 to take its SSE register by
      value rather than by pointer. The most restrictive ABI for passing SSE
      registers by value is win32, where you can pass at most 3. There's
      only one here, so it should be fine.
      
      BUG=aomedia:912
      
      Change-Id: I6d75803e57da090db59eedad902bd27908eb5118
      129afee7
    • Rupert Swarbrick's avatar
      Avoid UB from misaligned loads in variance_sse2.c · d2dea66b
      Rupert Swarbrick authored
      The undefined behaviour came from READ64, whose loads compile to a
      MOVD but which is technically incorrect if p is misaligned. This patch
      rewrites it, and the other loads and stores in the file, to use the
      xx_* functions from synonyms.h
      
      BUG=aomedia:912
      
      Change-Id: Ic2fae623ef3b609dacd0a830a7cc63653291202f
      d2dea66b
    • Rupert Swarbrick's avatar
      Avoid UB from misaligned loads in selfguided_sse4.c · 84ffea31
      Rupert Swarbrick authored
      This follows on from the previous patch, which corrects xx_loadl_32
      for misaligned addresses. Calls to xx_loadl_32 in selfguided_sse4.c
      are all followed by a zero-extend, so this patch packages the two into
      the inlinable functions xx_load_extend_8_16 and xx_load_extend_8_32.
      
      There were also some hand-rolled loads (which matched the old body of
      xx_loadl_32 and weren't strictly correct when the pointer was
      misaligned). This patch fixes them up to use xx_load_extend_8_32.
      
      BUG=aomedia:912
      
      Change-Id: I9c76dd4f41baa1343149aa9c432218a17df8b415
      84ffea31
    • Rupert Swarbrick's avatar
      Avoid UB in xx_loadl/storel_32 helper functions · be0aa4ad
      Rupert Swarbrick authored
      The previous code dereferenced a uint32_t * that might be misaligned,
      which is technically undefined behaviour in C. This version uses the
      right (cryptically named) Intel intrinsics to generate a MOVD without
      making any claims about the alignment of the pointer.
      
      BUG=aomedia:912
      
      Change-Id: Ic51679b9f9ed4d2476e69da70f40b2d599cbc6b0
      be0aa4ad
    • Jingning Han's avatar
      Reduce the MFMV_STACK_SIZE value · 380e37cd
      Jingning Han authored
      Drop it from 4 to 3 to reflect the actual use case.
      
      Change-Id: Ifdadaf053153c21b4b4fef40a3298a557fd2ef92
      380e37cd
    • Jingning Han's avatar
      Re-arrange the tpl_mvs stack order · 71da481d
      Jingning Han authored
      Check the availability of motion field from the ARF frame first.
      
      Change-Id: I8adce9e604344ee860b5015ff6c755f173886678
      71da481d
    • Jingning Han's avatar
      Reduce the actual tpl_mvs stack size · 406591c2
      Jingning Han authored
      Guarantee that the tpl_mvs stack size is 3 regardless if ALT2 will
      be deprecated.
      
      Change-Id: Ic8d19150051f87a4cfb25709feb4151b1e09a3e0
      406591c2
    • 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
    • Linfeng Zhang's avatar
      Remove unused get_level_count() and get_mag() · a29cef91
      Linfeng Zhang authored
      Change-Id: I5df23dd4106ff18747116d083423da3bdf300c7a
      a29cef91
    • Tom Finegan's avatar
      Remove vestigial cruft from CONFIG_RESTRICT_COMPRESSED_HDR. · 28ab67ec
      Tom Finegan authored
      BUG=aomedia:870
      
      Change-Id: I7bc1b502ab403d761f96ea1f81b0217cb1f274d6
      28ab67ec
    • Jonathan Matthews's avatar
      lv_map - ensure coeffs don't overflow in highbitdepth modes · 14195f42
      Jonathan Matthews authored
      BUG=aomedia:954
      BUG=aomedia:956
      
      Change-Id: Idc292c524bc3fea2a8a0e003d1a4cc9ae5799bd1
      14195f42
  2. 24 Oct, 2017 23 commits
    • Cheng Chen's avatar
      JNT_COMP: 1. Init version of experiment JNT_COMP · d867c9aa
      Cheng Chen authored
      Enable to assign distance based weight for joint compound prediction.
      
      (w0, w1) are weights for two predictors of different distance to
      current frame.
      
      Use 4 bit precision for quantized distance weight. e.g.
      the prediction is generated as
      
      value = (w0 * p0 + w1 * p1) >> n
      w0 + w1 = (1 << n), n = 4;
      
      Change-Id: Ib0ff0c41c82b9ebb033f498e90c18a03d18969e4
      d867c9aa
    • Yue Chen's avatar
      Revert "Don't reject invalid warped motion model" · 8a92cd0b
      Yue Chen authored
      This reverts commit 1eac584f.
      
      Reason for revert: As Peter pointed out, reverting motion_mode to SIMPLE_TRANSLATION only at the decoder side could mess up coding of compound_type. We'll fix this issue from encoder side.
      
      Change-Id: Ic9b3b8e0f0d06b22630d5f870a8d9737a596fa22
      8a92cd0b
    • Yunqing Wang's avatar
      Enhance and refactor copying code · b90a97a8
      Yunqing Wang authored
      Modified the copying code and the profiling showed better performance
      than previous implementation.
      
      Change-Id: I41f585e0b0eac7a0deb4dec197c178e412a48db9
      b90a97a8
    • 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
    • Ankur Saxena's avatar
      Add dual filter support to inspector etc. · 6e6b6974
      Ankur Saxena authored
      Change-Id: Id3124c0a4724e1c9e94960702445055da1e99277
      6e6b6974
    • 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
      Add default_eob_extra probability model · fcdda9dc
      Angie Chiang authored
      Change-Id: Ic8670dcfed8efa37050816bbb8062f9092886ef7
      fcdda9dc
    • Angie Chiang's avatar
      Fix eob_extra_cdf update · 89150ec8
      Angie Chiang authored
      After this fix
      eob_extra provides lowres 0.1% gain
      
      Change-Id: I5eec92ff89c38410acc6f1ab463528507783f359
      89150ec8
    • Angie Chiang's avatar
      Fix eob_extra_cdf init bug · 98cb47c1
      Angie Chiang authored
      Change-Id: I39bc0d7926f43bd683034bd7660d110e6552c388
      98cb47c1
    • 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
    • Thomas Davies's avatar
      Remove redundant experiment. · 2e868abe
      Thomas Davies authored
      restrict_compressed_hdr experiment is made redundant by
      new_multisymbol.
      
      BUG=aomedia:870
      
      Change-Id: I86100d114ca641a453c32ffd09cabb736809abd1
      2e868abe
    • 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 4 commits