1. 08 Sep, 2017 4 commits
    • Tom Finegan's avatar
      Fix CMake build configurations using linker flag dependent compiler flags. · 58447949
      Tom Finegan authored
      The CMake compiler test functions are built atop CMake's try_compile()
      function. try_compile() ignores configuration specific link flags in
      favor of the generic linker flag variable (CMAKE_EXE_LINKER_FLAGS is
      used instead of CMAKE_EXE_LINKER_FLAGS_<CONFIG>). This patch applies
      the flags cached in AOM_EXE_LINKER_FLAGS to CMAKE_EXE_LINKER_FLAGS
      during C and C++ compiler tests.
      
      Change-Id: I831244d114a8195527bcb865537494a98cabc170
      58447949
    • Tom Finegan's avatar
      Fix warning in selfguided_filter_test.cc. · 9f02130a
      Tom Finegan authored
      When building without SSE4 support some compilers complain about
      an unused variable. Typically gcc's with a major version of 4.
      Guard the declaration of the offending var within a
      HAVE_SSE4_1 block to avoid the problem.
      
      Change-Id: I4e4deb46014c97f3157f3b6c2376e1b034a51b62
      9f02130a
    • Hui Su's avatar
      palette-delta-encoding: remove dependency on above SB row · 3748bc2a
      Hui Su authored
      Do not refer to above MB when on SB boundary. This helps to
      reduce line buffer.
      
      Keyframe coding gain on the screen_content testset drops from
      1.28% to 1.20%.
      
      Change-Id: I4b06fd137d6c9ea68d618035381f09d0746ba9e8
      3748bc2a
    • Hui Su's avatar
      Encoder speedup: buffer TX RD search results · 1ddf2314
      Hui Su authored
      Encoder may do multiple rounds of transform RD search on the same
      residue signals. Save the RD search results so that encoder can
      fetch the results and terminate early if the residue signals have
      been seen before.
      
      The hash functions are ported from the hash_me experiment.
      
      Test results show the encoder speed is increased by 10% on
      average (ranging from 0 to 30%) with all default experiments on.
      
      Change-Id: I47dd63549f67cb43d3d700f6a76ce0992b1ccd0d
      1ddf2314
  2. 07 Sep, 2017 11 commits
    • Cheng Chen's avatar
      Remove av1_ prefix and make functions static · 46f30c7f
      Cheng Chen authored
      A lot of local functions have av1_ prefix due to legacy reasons.
      Make them static and remove their prefix.
      
      Change-Id: I069a3a1af583d5d307cdc56819901d1f9e004d07
      46f30c7f
    • Debargha Mukherjee's avatar
      Fix scaling parameter in non-normative warping · 5a9e82e3
      Debargha Mukherjee authored
      Use macro SCALE_SUBPEL_BITS rather than hard-coded 4 for old
      warping code that is used for non-affine global models.
      
      Change-Id: I10ee7b29101cd79e77a4d29e69d67497fda4e967
      5a9e82e3
    • Tom Finegan's avatar
      Silence logical-op warnings in av1/encoder/pickrst.c · 8af64ae5
      Tom Finegan authored
      Newer gcc's output logical-op warnings when and'ing together
      a duplicate condition. In this case it's because a constant
      was set to an enum value that was also checked locally.
      
      Change-Id: Iada9571d3e59ec9b75aa446fd6690587092af161
      8af64ae5
    • David Barker's avatar
      Don't read global motion for intra-only frames · d3bbfee8
      David Barker authored
      Save bits by not encoding global motion data when there's no
      previous frame to use as a reference. Use the same logic
      as for using the previous frame's motion vectors - ie, we don't
      read global motion information when the current frame is
      intra-only or when using error-resilient mode.
      
      This also fixes an undefined behaviour / segfault bug - see
      https://bugs.chromium.org/p/aomedia/issues/detail?id=731 for
      details
      
      BUG=aomedia:731
      
      Change-Id: Icca90a1bccafd06de8a4056ca5353318fce416cb
      d3bbfee8
    • Yaowu Xu's avatar
      Remove duplicate lines around #ifdef · db61234e
      Yaowu Xu authored
      Change-Id: I43e92e3f3799857e928543434d049b4155b64d7d
      db61234e
    • Yi Luo's avatar
      Lowbd parallel_deblocking sse2 optimization · ea8a0d52
      Yi Luo authored
      Baseline + parallel_deblocking:
      
      - Passed unit tests *SSE2/Loop8Test6*, *AVX2/Loop8Test6*.
      - 1080p, 25 frames, profile=0, encoding/decoding, output match.
      - Decoder frame rate increases from 54.15 to 65.84.
      
      Change-Id: I55938c94961066594f4b9080192c7268c19d9bf9
      ea8a0d52
    • Wei-Ting Lin's avatar
      ncobmc-adapt-weight: add bitstream to support warped motion · 07ed3ab2
      Wei-Ting Lin authored
      Change-Id: I0e9df3719e5f9a55e1386afe44851d1707e2e01b
      07ed3ab2
    • Rupert Swarbrick's avatar
      Remove repetition in decode_partition · 668d3d99
      Rupert Swarbrick authored
      The callsites to decode_block and decode_partition in the body of
      decode_partition are rather noisy with code that is enabled or
      disabled by config flags, so it's hard to see what is fundamentally a
      simple recursion.
      
      This patch moves all that cruft into a pair of locally defined
      preprocessor macros (DEC_BLOCK and DEC_PARTITION) to simplify
      things.
      
      There's no diff in disassembled code when compiling before and after
      the patch.
      
      Change-Id: Ie08db263a9874e2c566c758e8f3a51d131b1b80b
      668d3d99
    • Debargha Mukherjee's avatar
      Reduce line buffer size for Wiener filter. · 22bbe4cc
      Debargha Mukherjee authored
      This patch forces the vertical filtering for the top and bottom
      rows of a processing unit for the Wiener filter to be 5-tap.
      The 5-taps are derived from the primary 7-tap fitler by forcing
      the taps at the end to be zero, and absorbing their weights into
      the other taps to maintain normalization.
      This will effectively reduce the line buffer size for luma Wiener
      filter to 4 (from 6).
      
      Change-Id: I5e21b58369777eabf553a8987387d112f98a5598
      22bbe4cc
    • David Barker's avatar
      Fix an edge case in tile group decoding · 1a191125
      David Barker authored
      As of patch https://aomedia-review.googlesource.com/c/20220 ,
      it is no longer always the case that tile_rows == (1 << log2_tile_rows)
      and tile_cols == (1 << log2_tile_cols). This exposed an inconsistency
      in the tile-group decoding:
      
      When reading the first tile group in a frame, we read
      (log2_tile_rows + log2_tile_cols) bits each for the tile group
      start and length, but when reading later tile groups we read
      get_msb(tile_rows * tile_cols) bits. But now there are edge cases
      where those values differ! Since the encoder always uses
      (log2_tile_rows + log2_tile_cols) bits, this leads to mis-parsing
      the bitstream.
      
      Fix this by moving the decode logic to one function, which always
      reads (log2_tile_rows + log2_tile_cols) bits. As a bonus, this gives
      us one place to check other invariants, eg. that tile groups can't
      run off the end of the frame.
      
      Change-Id: I83b24314526b6055300b70b0f1cdce038e6b23dc
      1a191125
    • Yaowu Xu's avatar
      Prevent division-by-zero · cc550634
      Yaowu Xu authored
      Change-Id: Id606669875ef1dcb163ff7dec619dae6110d9047
      cc550634
  3. 06 Sep, 2017 20 commits
    • Sarah Parker's avatar
      Remove global motion from compressed header · 3e579a60
      Sarah Parker authored
      This requires making a temporary copy of the functions in
      binary_codes_writer/reader to take in the aom_write_bit_buffer type.
      
      Change-Id: Idb60b29cff69b45224535c6e6a4079a34a2c6871
      3e579a60
    • Wei-Ting Lin's avatar
      Fix a bug forcing encoder to transmit mbmi info first · 49c335f4
      Wei-Ting Lin authored
      Fix the bug forcing encoder/decoder to transmit/decoder all
      mbmi info for a superblock first.
      
      Change-Id: I623217655b043fc90adbcc13e4cf2a4a845084ab
      49c335f4
    • Tom Finegan's avatar
      Build test/hiprec_convolve_test sources only when necessary. · 5d9e44f2
      Tom Finegan authored
      Change-Id: If60c97131bed58ce7c6d3875f9a088df27b9bae4
      5d9e44f2
    • Zoe Liu's avatar
      Refactor defining the GF group in first pass · f271a950
      Zoe Liu authored
      In the old code, the function of allocate_gf_group_bits() in
      firstpass.c handles both GF group structure design as well as the
      corresponding bit allocation for each coded frame. This CL separates
      the two functionalities.
      
      It has been verified that no coding performance has been incurred by
      this CL.
      
      Change-Id: I544b4fcdc8cb37ec810373f1f820dbd2e400c39b
      f271a950
    • Yue Chen's avatar
      Update cdf and mode rate per superblock in RDO · a4245511
      Yue Chen authored
      Update cdf after each superblock being finalized, and re-compute
      symbol costs. Affected symbols include prediction parameters and
      tx type.
      BDRate: -0.119% lowres, -0.092% midres
      
      Change-Id: I724900ac04f725910ed7055a18c2f6a139469b52
      a4245511
    • Jingning Han's avatar
      Properly merge the tile context models in lv-map · 7bc599f5
      Jingning Han authored
      Merge the tile context models at the end of frame coding.
      
      Change-Id: I0a71c49c448cfbd71fb0bd15ca7b1f6097c56529
      7bc599f5
    • Jingning Han's avatar
      Fix lv-map tile independence unit test · 41c7f448
      Jingning Han authored
      BUG=aomedia:719
      
      Change-Id: Id47c2c68cb61e142ce62fee5e97f7c474b3dc273
      41c7f448
    • Wei-Ting Lin's avatar
      ncobmc-adapt-weight: remove config constraint · 14cca44c
      Wei-Ting Lin authored
      Change-Id: Iff1a7e35c439f0baa7240eef75fcb5da46d06a4c
      14cca44c
    • Wei-Ting Lin's avatar
      Remove motion_mode_wrapper · 20885281
      Wei-Ting Lin authored
      Change-Id: I3de1c933ee0fa90e9c0d52e6cbe4bc8bf5482a73
      20885281
    • Wei-Ting Lin's avatar
      ncobmc-adapt-weight: refactoring the mode selection function · 3122b7d5
      Wei-Ting Lin authored
      Change-Id: I7393596d98f11aa53ba4b9e329386b5168b3e086
      3122b7d5
    • Tom Finegan's avatar
      Explicitly support user supplied flags in the CMake build. · c8593981
      Tom Finegan authored
      Add AOM_EXTRA_<TYPE>_FLAGS variables. Currently AS, C, CXX, and
      LINKER are the available type values. These variables are added
      to argument strings for each type as the last step in generation
      to ensure that user flags have precedence over flags added by
      the AOM build itself.
      
      Change-Id: I8e01682ee6c7dad2253e01c446a5ced7d06596c7
      c8593981
    • Tom Finegan's avatar
      Make CMake flag testing and propagation multi-config generator aware. · 282e9f25
      Tom Finegan authored
      BUG=aomedia:659,aomedia:695,aomedia:705,aomedia:706
      
      Change-Id: Iba60166370362599f3f4ef7959a6304bf079857d
      282e9f25
    • Yaowu Xu's avatar
      Silent compiler warning of unused variable · 069cc313
      Yaowu Xu authored
      Change-Id: I1b921e79484e78a272c4f62e30cb85631a65ac25
      069cc313
    • David Barker's avatar
      Adjust chroma position in warp filter · a60dc9d6
      David Barker authored
      When using chroma subsampling, the warp filter currently behaves
      strangely when projecting chroma pixels, especially when the
      subsamplings are not equal along the x and y axes.
      
      For example, when subsampling_x = 1 and subsampling_y = 0, we
      calculate the destination coordinates (dx, dy) from the source
      coordinates (sx, sy) as:
      dx = project(2*sx+0.5, 2*sy+0.5)/2 - 0.5
      dy = project(sx, sy)
      where project() applies the affine warp model.
      
      This patch changes to a simpler and more consistent model,
      where we:
      * Project the chroma sample into luma coordinates, taking
        the chroma sample to be co-located with the top-left luma
        sample in its (2x2, or 2x1, or 1x2) subsampling block
        (this is done for simplicity; we don't expect the exact
         position to make much difference to the output quality)
      * Apply the transformation in luma coordinates
      * Project the resulting luma sample back into chroma coordinates
      
      Change to software speed is in the noise, but this approach
      should be simpler in hardware, and should slightly improve
      quality for 4:2:2 and 4:4:0 videos.
      
      Change-Id: Idd455fdd3897594ca7d4edff5b85b78961d1638d
      a60dc9d6
    • Rupert Swarbrick's avatar
      Round up subsampled frame size in av1_loop_restoration_corners_in_sb · 7380b25e
      Rupert Swarbrick authored
      The previous code converted a frame_w (say) of 1 to zero for a plane
      where subsampling was enabled, causing a division by zero in
      av1_get_rest_ntiles. This doesn't match the spec, which says
      subsampling rounds up.
      
      The patch adds the rounding, and also adds an assertion to
      av1_get_rest_ntiles to help diagnose any other broken callsites.
      
      Change-Id: Ia6c249fa935c3a16d122ba6e7b450fe99f412fde
      7380b25e
    • Debargha Mukherjee's avatar
      Make loop-restoration use 64x64 processing units · 7a5587a8
      Debargha Mukherjee authored
      Changes loop-restoration to use processing unit size that is
      64x64 for luma; for chroma the processing unit is coupled to
      64x64 support region for luma.
      Thus for chroma the processing unit size is 32x32 for 4:2:0,
      32x64 for 4:2:2 and 64x64 for 4:4:4, etc.
      
      While the Wiener filter output should not change with this patch,
      the sgr filter will change since the boundary pixel handling in
      sgr is internal within the filter.
      
      Change-Id: I65a9e2df88927a19445420ce400acb1fcf7afa93
      7a5587a8
    • Cheng Chen's avatar
      Make search filter level function static · 1545bdb3
      Cheng Chen authored
      This is a legacy function but not used outside of the file.
      Make it static.
      
      Change-Id: I1d32c26aaf243202a7fa72056f5e74cf25bbb62a
      1545bdb3
    • Zoe Liu's avatar
      Remove hard-coded value for MAX_EXT_ARFS · 43486e7b
      Zoe Liu authored
      Change-Id: If44394e363cc443e46c31d91c8e03a85d91b1a92
      43486e7b
    • Yushin Cho's avatar
      Add missed change for commit 55104335 · 3d429dc3
      Yushin Cho authored
      One of the changed files has been mistakenly missed
      for the commit 55104335
      
      https://aomedia-review.googlesource.com/#/c/aom/+/18261/
      
      Change-Id: Ie47f882a25e650bb4d74d5675f2306adc9e654a7
      3d429dc3
    • Yushin Cho's avatar
      Fix compile warnings for av1_dist_8x8() · fcddadf3
      Yushin Cho authored
      Change-Id: I3f3df7acc79f770e42fe65b52f383ee8dfe2702a
      fcddadf3
  4. 05 Sep, 2017 5 commits