1. 04 Aug, 2017 1 commit
  2. 14 Jul, 2017 1 commit
  3. 13 Jul, 2017 1 commit
    • Peter de Rivaz's avatar
      Prevent negative variance in 10/12-bit. · e0794b51
      Peter de Rivaz authored
      Due to rounding the variance can become negative.
      Similar behaviour has been fixed in commit b7e7c044.
      I have made the corresponding changes to the masked_variance code.
      
      BUG=aomedia:646
      
      Change-Id: I21ed5a3f58080def08ac7ab9a77cbcad90318c99
      e0794b51
  4. 12 Jul, 2017 1 commit
    • Rupert Swarbrick's avatar
      ext-partition-types: Add 4:1 partitions · 93c39e91
      Rupert Swarbrick authored
      This patch adds support for 4:1 rectangular blocks to various common
      data arrays, and adds new partition types to the EXT_PARTITION_TYPES
      experiment which will use them.
      
      This patch has the following restrictions, which can be lifted in
      future patches:
      
        * ext-partition-types is incompatible with fp_mb_stats and supertx
          for the moment
      
        * Currently only 32x32 superblocks can use the new partition types
      
      There's a slightly odd restriction about when we allow
      PARTITION_HORZ_4 or PARTITION_VERT_4. Since these both live in the
      EXT_PARTITION_TYPES CDF, read_partition() can only return them if both
      has_rows and has_cols is true. This means that at least half of the
      width and height of the block must be visible. It might be nice to
      relax that restriction but that would imply a change to how we encode
      partition types, which seems already to be in a state of flux, so
      maybe it's better to wait until that has settled down.
      
      Change-Id: Id7fc3fd0f762f35f63b3d3e3bf4e07c245c7b4fa
      93c39e91
  5. 11 Jul, 2017 1 commit
  6. 29 Jun, 2017 1 commit
  7. 28 Jun, 2017 3 commits
  8. 27 Jun, 2017 1 commit
    • Yi Luo's avatar
      Fix inv txfm low/high bitdepth selection logic · 51281095
      Yi Luo authored
      We are going to have several commits to setup new low/high
      bitdepth data path selection logic. This patch is for inverse
      transform. Let me summarize the ideas as following.
      
      - For low/high bitdepth selection, encoder depends on
        input configuration, e.g., video sequence bitdepth,
        profile. Decoder depends on input bitstream. This has
        nothing to do with compiler/build  configuration.
      
      - Typical encoder usage for sampling format 4:2:0.
        1) 8-bit video sequence:
         a) --profile=0
         Fastest encoding/decoding pipeline on speedup.
      
         b) --profile=2 --bit-depth=10
         Image pixels are left shifted by 2 bits. It
         employs 16-bit reference frame buffer and has high
         calculation precision. It usually enjoys higher
         compression performance.
      
        2) 10/12-bit video sequence (HDR):
         --profile=2 --bit-depth=10/12
      
      - Transform coefficient type:
        Lowbitdepth:  int16_t
        Highbitdepth: int32_t
      
      - The type, tran_low_t is still used in codebase,
        Which is int32_t, defining the data path capacity.
        Naturally, it is high bitdepth.
      
      Eventually we shall remove the configuration flags,
      CONFIG_HIGHBITDEPTH/CONFIG_LOWBITDEPTH, and seperate
      low and high bitdepth data path. Two data paths co-exist
      in the same build environment.
      
      Change-Id: I35c06d4d4f19ebf80d909168fdddbae57c3cc884
      51281095
  9. 22 Jun, 2017 1 commit
    • Yi Luo's avatar
      Add avx2 highbd_quantize_b · 193422e7
      Yi Luo authored
      - First pass encoding time reduces ~10.9% on i7-6700
        at 100 frames, 1080p.
      - avx2 works for coeff number >= 8 cases; coeff number < 8
        case will be implemented by sse2.
      - Unit test is added type B/FP/DC.
      
      Change-Id: Ibe5b7807c64e6dfc2d59c470ed50a6e8ca94ef7c
      193422e7
  10. 19 Jun, 2017 1 commit
    • Timothy B. Terriberry's avatar
      encoder: Remove 64x upsampled reference buffers · 5d24b6f0
      Timothy B. Terriberry authored
      They do not handle border extension correctly (interpolation and
      border extension do not commute unless you upsample into the
      border), nor do they handle crop dimensions that are not a multiple
      of 8 (the upsampled version is not sufficiently large), in addition
      to using massive amounts of memory and being a criminal waste of
      cache (1 byte used for every 8 bytes fetched).
      
      This commit reimplements use_upsampled_references by computing the
      subpixel samples on the fly. This implementation not only corrects
      the border handling, but is also faster, while maintaining the
      same quality.
      
      HL AWCY results are basically noise:
          PSNR | PSNR HVS |   SSIM | MS SSIM | CIEDE 2000
        0.0188 |   0.0187 | 0.0045 |  0.0063 |     0.0228
      
      Change-Id: I7527db9f83b87a7bb8b35342f7e6457cd0bef9cd
      5d24b6f0
  11. 09 Jun, 2017 1 commit
    • David Barker's avatar
      Fix Windows x86 build with --enable-ext-inter · dab3e99b
      David Barker authored and James Zern's avatar James Zern committed
      The Windows calling convention pushes any __m128i type arguments
      after the 3rd (4th on x86-64) onto the stack. But on x86,
      stack-allocated arguments are not guaranteed to be aligned to
      a multiple of their natural alignment, leading to compile errors.
      
      We fix this by making the functions which take >3 __m128i arguments
      instead take pointers. Since the functions are marked INLINE, the
      extra memory operations should optimize out.
      
      BUG=aomedia:587
      
      Change-Id: I0cb2831fd12aded6f2821c037365386e6183ba5c
      dab3e99b
  12. 08 Jun, 2017 2 commits
    • Frederic Barbier's avatar
      Cleanup dead fwd transform functions · d405f8a6
      Frederic Barbier authored
      Cleanup related wrappers and unit-tests.
      
      Change-Id: I2d37a8c80de63dbeaef584e3d5fa842c0b2ee6db
      d405f8a6
    • Sarah Parker's avatar
      Remove deprecated high-bitdepth functions · 31c66502
      Sarah Parker authored
      This unifies the codepath for high-bitdepth transforms and deletes
      all calls to the old deprecated versions. This required reworking
      the way 1d configurations are combined in order to support rectangular
      transforms.
      
      There is one remaining codepath that calls the deprecated 4x4 hbd
      transform from encoder/encodemb.c. I need to take a closer look
      at what is happening there and will leave that for a followup
      since this change has already gotten so large.
      
      lowres 10 bit: -0.035%
      lowres 12 bit: 0.021%
      
      BUG=aomedia:524
      
      Change-Id: I34cdeaed2461ed7942364147cef10d7d21e3779c
      31c66502
  13. 30 May, 2017 1 commit
  14. 27 May, 2017 1 commit
    • Debargha Mukherjee's avatar
      High precision Wiener filter rework · 11cf46f4
      Debargha Mukherjee authored
      Implements the high precision Wiener filter with an offset
      to reduce the error due to saturation without increasing
      the number of bits needed for intermediate precision.
      
      Also turns the high precision filter on.
      
      Change-Id: I34037a5746a6a89c5fce67753c1b027749085edf
      11cf46f4
  15. 26 May, 2017 1 commit
    • David Barker's avatar
      ext-inter: Vectorize new masked SAD/SSE functions · 0aa39ff0
      David Barker authored
      We would expect that these new functions would be slower than
      the old masked SAD/SSE functions, as they do additional work
      (blending two inputs and comparing to a third, rather than
      just comparing two inputs).
      
      This is true for the SAD functions, which are about 50% slower
      (depending on block size and bit depth). However, the sub-pixel
      SSE functions are comparable to the old speed for the accelerated
      special cases (xoffset or yoffset = 0 or 4), and are
      between 40-90% faster for the generic case.
      
      Change-Id: I1a296ed8fc9e3edc313a6add516ff76b17cd3e9f
      0aa39ff0
  16. 23 May, 2017 2 commits
    • David Barker's avatar
      Vectorize high-precision convolve filter · 5d34e6a7
      David Barker authored
      Add SSE2 lowbd and SSSE3 highbd versions of the filters
      introduced in https://aomedia-review.googlesource.com/c/11962/ .
      
      These filters are equivalent in speed to the SSE2 implementations
      of the regular convolve filter. The average time to filter a
      64x64 block is:
      
      lowbd C: 52us
      lowbd SSE2: 5.6us
      highbd C: 53us
      highbd SSSE3: 5.8us
      
      Also add a correctness test based on the warp filter tests.
      
      Change-Id: Ia0d81100e8a414bbfc2b5f664d751cf24765299e
      5d34e6a7
    • David Barker's avatar
      ext-inter: Delete dead code · 0f3c94e1
      David Barker authored
      Patches https://aomedia-review.googlesource.com/c/11987/
      and https://aomedia-review.googlesource.com/c/11988/
      replaced the old masked motion search pipeline with
      a new one which uses different SAD/SSE functions.
      This resulted in a lot of dead code.
      
      This patch removes the now-dead code. Note that this
      includes vectorized SAD/SSE functions, which will need
      to be rewritten at some point for the new pipeline. It
      also includes the masked_compound_variance_* functions
      since these turned out not to be used by the new pipeline.
      
      To help with the later addition of vectorized functions, the
      masked_sad/variance_test.cc files are kept but are modified
      to work with the new functions. The tests are then disabled
      until we actually have the vectorized functions.
      
      Change-Id: I61b686abd14bba5280bed94e1be62eb74ea23d89
      0f3c94e1
  17. 16 May, 2017 1 commit
  18. 12 May, 2017 1 commit
  19. 11 May, 2017 1 commit
    • Yi Luo's avatar
      Partial IDCT 32x32 avx2 · 40f22ef8
      Yi Luo authored
      - Function level improvement (ms):
      Functions       ssse3  avx2   Percentage
      idct32x32_1024  794    374    52.9%
      idct32x32_135   354    169    52.2%
      idct32x32_34    197    142    27.9%
      idct32x32_1     n/a     26    n/a
      
      - Integrating in default scan order.
      
      Change-Id: I84815112b26b8a8cb800281a1cfb1706342af57d
      40f22ef8
  20. 09 May, 2017 1 commit
  21. 08 May, 2017 1 commit
    • Yi Luo's avatar
      Partial IDCT 16x16 avx2 · f6176abb
      Yi Luo authored
      - Function level improvement:
      functions      sse2  avx2  percentage
      idct16x16_256  365   226   38%
      idct16x16_38   n/a   136   n/a
      idct16x16_10   171   110   35%
      idct16x16_1     34    26   23%
      
      - Integrated in AV1 for default scan order.
      
      Change-Id: Ieb1a8e730bea9c371ebc0e5f4a748640d8f5e921
      f6176abb
  22. 05 May, 2017 1 commit
  23. 04 May, 2017 2 commits
  24. 02 May, 2017 1 commit
  25. 28 Apr, 2017 2 commits
    • James Zern's avatar
      Resolve -Wshorten-64-to-32 in highbd obmc/ext-inter variance. · b7e7c044
      James Zern authored
      For 8-bit the subtrahend is small enough to fit into uint32_t.
      Prevent negative variance in 10/12-bit.
      Previously:
      51e0c54e Resolve -Wshorten-64-to-32 in highbd variance.
      
      BUG=aomedia:445
      
      Change-Id: Ibb9bfc5e926de354bbab80127012e5e1861348a3
      b7e7c044
    • James Zern's avatar
      Resolve -Wshorten-64-to-32 in highbd variance. · 51e0c54e
      James Zern authored
      For 8-bit the subtrahend is small enough to fit into uint32_t.
      
      cherry-picked from libvpx:
      47b9a0912 Resolve -Wshorten-64-to-32 in highbd variance.
      
      This is the same that was done for:
      c0241664a Resolve -Wshorten-64-to-32 in variance.
      
      For 10/12-bit apply:
      63a37d16f Prevent negative variance
      
      BUG=aomedia:445
      
      Change-Id: Iab35e3f3f269035e17c711bd6cc01272c3137e1d
      51e0c54e
  26. 27 Apr, 2017 2 commits
    • Yue Chen's avatar
      Clear test failures and compiler warnings of MOTION_VAR · dead17d2
      Yue Chen authored
      (1) Properly set params to default values to clear a unit test
      failure when seg feature and motion_var are both on.
      (2) Silenced compiling warnings in obmc variance functions.
      
      Change-Id: Iaf4ee47c9941a228638d6046bcd1206f4a4f566a
      dead17d2
    • Frederic Barbier's avatar
      Cleanup dead high-bitdepth inverse-tx functions · 4fc8df67
      Frederic Barbier authored
      This patch removes dead code and prevents future implementations
      to rely on obsolete transforms. Future optimizations and tests should
      be based on latest C-functions (av1/common/av1_inv_txfm1d.c)
      
      Cleanup related last unit-test callers.
      BUG=aomedia:442
      
      Change-Id: I24953cc1baf30dd7b720df8a72dd91b356b74cad
      4fc8df67
  27. 26 Apr, 2017 1 commit
    • Yi Luo's avatar
      Update partial inverse DCT according to VP9 · 3fcb356e
      Yi Luo authored
      - Partial inverse DCT unit tests have been enhanced.
      - IDCT x86_64 assembly code has been removed.
      
      Change-Id: Ic3bed2c0e70abdfd642a4f74fa969cc672d4795f
      3fcb356e
  28. 25 Apr, 2017 2 commits
    • James Zern's avatar
      remove remaining refs to aom_highbd_idct8x8_64_add · 4a2e3b2d
      James Zern authored
      fixes high-bitdepth build:
      ./libaom.a(aom_dsp_rtcd.c.o): In function `setup_rtcd_internal':
        ./aom_dsp_rtcd.h:2614: undefined reference to
        `aom_highbd_idct8x8_64_add_c'
      
      missed in:
      c756e4d0 Cleanup dead high-bitdepth inverse-tx functions
      
      BUG=aomedia:442
      
      Change-Id: I63ee6fc5dbf85fd48efd9ff721868df6fb05eb09
      4a2e3b2d
    • Urvang Joshi's avatar
      Intra prediction: Remove unused variants. · c3bcf3be
      Urvang Joshi authored
      Directional predictors for 45, 63 and 207 angle had 2 or 3 variants
      each, and only one of them was actually being used. So, removed the
      C, sse2, ssse3 and neon versions of the unused ones.
      
      Updates to the test:
      - test_intra_pred_speed was testing the unused versions, so changed
        it to use the version actually used by code. This meant updating
        some golden MD5 values.
      - test_intra_pred_speed was NOT filling up bottom-left and top-right
        pixels randomly, so the predictors using these pixels weren't tested
        properly. This was fixed.
      
      BUG=aomedia:442
      
      Change-Id: I09725d593408b81e0cd636e70a88c28eea5f2222
      c3bcf3be
  29. 24 Apr, 2017 1 commit
  30. 21 Apr, 2017 1 commit
  31. 20 Apr, 2017 1 commit
  32. 18 Apr, 2017 1 commit
    • Yi Luo's avatar
      Move width branch out of height loop · a4d87992
      Yi Luo authored
      - AVX2 Copy and average functions are faster,
        Copy function: ~4%-57%
        Avg function:  ~17%-54%
      
      Change-Id: Ib1732cd90eb353379ef50ecbb1e207860969f1c3
      a4d87992