1. 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
  2. 12 Apr, 2017 1 commit
  3. 04 Apr, 2017 1 commit
  4. 30 Mar, 2017 1 commit
    • Yi Luo's avatar
      High bit depth inter prediction filter AVX2 · 9d247355
      Yi Luo authored
      On i7-6700:
      - Function level speed improvement: 23%-29%
      - User level speed improvement:
         decoder: ~%2-%4.
         encoder: <1%.
      
      Change-Id: I02937a72304c3b356ca41e580352790df391f0a2
      9d247355
  5. 27 Mar, 2017 1 commit
    • Debargha Mukherjee's avatar
      Adds binary code lib for coding various symbols · 47748b56
      Debargha Mukherjee authored
      Adds a variable length binary code library for
      coding various symbols for typical use in headers.
      
      The main codes implemented are:
      1. Coding a symbol from an n-ary alphabet using a
      quasi-uniform code.
      2. A bilevel code for coding symbols from an n-ary
      alphabet based on a reference value for the symbol
      also taken from the same alphabet.
      The code has two steps. If the symbol is close to
      the reference a shorter code is used, while if it is
      farther away a longer code is used.
      3. A finite (terminated) subexponential code that codes
      a symbol from an n-ary alphabet using subexp parameter k.
      4. A finite (terminated) subexponential code that codes
      a symbol from an n-ary alphabet using subexp parameter k,
      based on a given reference also taken from the same
      alphabet. This code essentially reorders the values
      before using the same code as 3.
      
      Also adds corresponding encoder side functions to count
      the number of bits used.
      
      These codes will be subsequently used for more efficient
      encoding of loop-restoration parameters and global motion
      parameters.
      
      Change-Id: I28c82b611925c1ab17f544c48c4b1287930764b7
      47748b56
  6. 03 Mar, 2017 1 commit
  7. 01 Feb, 2017 1 commit
    • Alex Converse's avatar
      ans: Remove some dead code. · e8b34bb1
      Alex Converse authored
      This was part of the old ans zero token handling. It has been replaced
      by the new ec_multisymbol zero token handling.
      
      Change-Id: I9c1fcb42ac0d214178cf4fbf8755ad68dcbbc11f
      e8b34bb1
  8. 13 Dec, 2016 1 commit
  9. 09 Dec, 2016 1 commit
    • Yi Luo's avatar
      High bit depth motion search SAD optimization on avx2 · e9832584
      Yi Luo authored
      - For all blocks with width >= 16.
      - Add test_count to make the unit tests harder to pass.
      - Speed testing on 1080p, 100 frames, 5 Mbps, CPU, i7-6700
        User level time reduction:
         baseline:                  3.68%
         baseline + ext-partition: 36.12%
      
      Change-Id: I78c5d9ca216f0fd91f1a360dca2190b11fd54a08
      e9832584
  10. 23 Nov, 2016 1 commit
  11. 16 Nov, 2016 1 commit
  12. 10 Nov, 2016 1 commit
  13. 07 Nov, 2016 1 commit
    • Yushin Cho's avatar
      New experiment: Perceptual Vector Quantization from Daala · 77bba8d3
      Yushin Cho authored
      PVQ replaces the scalar quantizer and coefficient coding with a new
      design originally developed in Daala. It currently depends on the
      Daala entropy coder although it could be adapted to work with another
      entropy coder if needed:
      ./configure --enable-experimental --enable-daala_ec --enable-pvq
      
      The version of PVQ in this commit is adapted from the following
      revision of Daala:
      https://github.com/xiph/daala/commit/fb51c1ade6a31b668a0157d89de8f0a4493162a8
      
      More information about PVQ:
      - https://people.xiph.org/~jm/daala/pvq_demo/
      - https://jmvalin.ca/papers/spie_pvq.pdf
      
      The following files are copied as-is from Daala with minimal
      adaptations, therefore we disable clang-format on those files
      to make it easier to synchronize the AV1 and Daala codebases in the future:
       av1/common/generic_code.c
       av1/common/generic_code.h
       av1/common/laplace_tables.c
       av1/common/partition.c
       av1/common/partition.h
       av1/common/pvq.c
       av1/common/pvq.h
       av1/common/state.c
       av1/common/state.h
       av1/common/zigzag.h
       av1/common/zigzag16.c
       av1/common/zigzag32.c
       av1/common/zigzag4.c
       av1/common/zigzag64.c
       av1/common/zigzag8.c
       av1/decoder/decint.h
       av1/decoder/generic_decoder.c
       av1/decoder/laplace_decoder.c
       av1/decoder/pvq_decoder.c
       av1/decoder/pvq_decoder.h
       av1/encoder/daala_compat_enc.c
       av1/encoder/encint.h
       av1/encoder/generic_encoder.c
       av1/encoder/laplace_encoder.c
       av1/encoder/pvq_encoder.c
       av1/encoder/pvq_encoder.h
      
      Known issues:
      - Lossless mode is not supported, '--lossless=1' will give the same result as
      '--end-usage=q --cq-level=1'.
      - High bit depth is not supported by PVQ.
      
      Change-Id: I1ae0d6517b87f4c1ccea944b2e12dc906979f25e
      77bba8d3
  14. 04 Nov, 2016 1 commit
    • Yushin Cho's avatar
      New experiment: Perceptual Vector Quantization from Daala · 09705fe7
      Yushin Cho authored
      PVQ replaces the scalar quantizer and coefficient coding with a new
      design originally developed in Daala. It currently depends on the
      Daala entropy coder although it could be adapted to work with another
      entropy coder if needed:
      ./configure --enable-experimental --enable-daala_ec --enable-pvq
      
      The version of PVQ in this commit is adapted from the following
      revision of Daala:
      https://github.com/xiph/daala/commit/fb51c1ade6a31b668a0157d89de8f0a4493162a8
      
      More information about PVQ:
      - https://people.xiph.org/~jm/daala/pvq_demo/
      - https://jmvalin.ca/papers/spie_pvq.pdf
      
      The following files are copied as-is from Daala with minimal
      adaptations, therefore we disable clang-format on those files
      to make it easier to synchronize the AV1 and Daala codebases in the future:
       av1/common/generic_code.c
       av1/common/generic_code.h
       av1/common/laplace_tables.c
       av1/common/partition.c
       av1/common/partition.h
       av1/common/pvq.c
       av1/common/pvq.h
       av1/common/state.c
       av1/common/state.h
       av1/common/zigzag.h
       av1/common/zigzag16.c
       av1/common/zigzag32.c
       av1/common/zigzag4.c
       av1/common/zigzag64.c
       av1/common/zigzag8.c
       av1/decoder/decint.h
       av1/decoder/generic_decoder.c
       av1/decoder/laplace_decoder.c
       av1/decoder/pvq_decoder.c
       av1/decoder/pvq_decoder.h
       av1/encoder/daala_compat_enc.c
       av1/encoder/encint.h
       av1/encoder/generic_encoder.c
       av1/encoder/laplace_encoder.c
       av1/encoder/pvq_encoder.c
       av1/encoder/pvq_encoder.h
      
      Known issues:
      - Lossless mode is not supported, '--lossless=1' will give the same result as
      '--end-usage=q --cq-level=1'.
      - High bit depth is not supported by PVQ.
      
      Change-Id: I1ae0d6517b87f4c1ccea944b2e12dc906979f25e
      09705fe7
  15. 25 Oct, 2016 1 commit
  16. 21 Oct, 2016 2 commits
  17. 20 Oct, 2016 1 commit
  18. 19 Oct, 2016 1 commit
  19. 18 Oct, 2016 1 commit
  20. 14 Oct, 2016 2 commits
    • Nathan E. Egge's avatar
      Use Daala entropy coder to code bits. · 8043cc40
      Nathan E. Egge authored
      When building with --enable-daala_ec, calls to aom_write() and aom_read()
       use the daala entropy coder to write and read bits.
      When the probability is exactly 0.5 (128), then raw bits are used.
      
      ntt-short-1:
      
                MEDIUM (%) HIGH (%)
          PSNR -0.027556  -0.020114
       PSNRHVS -0.027401  -0.020169
          SSIM -0.027587  -0.020151
      FASTSSIM -0.027592  -0.020102
      
      subset1:
      
               RATE (%)  DSNR (dB)
          PSNR 0.03296  -0.00210
       PSNRHVS 0.03537  -0.00281
          SSIM 0.03299  -0.00161
      FASTSSIM 0.03458  -0.00111
      
      Change-Id: I48ad8eb40fc895d62d6e241ea8abc02820d573f7
      8043cc40
    • Nathan E. Egge's avatar
      Add Daala entropy coder. · 1078dee5
      Nathan E. Egge authored
      Change-Id: I2849a50163268d58cc5d80aacfec1fd02299ca43
      1078dee5
  21. 13 Oct, 2016 2 commits
  22. 12 Oct, 2016 2 commits
    • Yaowu Xu's avatar
      port changes on lpf from libvpx/nextgenv2 · 57ad0a05
      Yaowu Xu authored
      Manually cherry-picked the following commits:
      4b5e462d Upgrade vpx_lpf_{vertical,horizontal}_4 mmx to sse2
      3ea537c0 lpf_8_test: remove unneeded function wrapper
      110d3778 remove loopfilter 'count' param TODOs
      9b44d9d0 split vpx_highbd_lpf_horizontal_16 in two
      1b519fb6 split vpx_lpf_horizontal_16 in two
      e7a23d70 vpx_highbd_lpf_horizontal_4: remove unused count param
      51718573 vpx_highbd_lpf_horizontal_8: remove unused count param
      3c1019e4 vpx_highbd_lpf_vertical_4: remove unused count param
      72a9f06a vpx_highbd_lpf_vertical_8: remove unused count param
      b1e97c6a vpx_lpf_horizontal_4: remove unused count param
       ab25e46pgrade vpx_lpf_{vertical,horizontal}_4 mmx to sse2
      bd5a5bb5 vpx_lpf_horizontal_8: remove unused count param
      109a47b3 vpx_lpf_vertical_4: remove unused count param
      37225744 vpx_lpf_vertical_8: remove unused count param
      47dee375 lpf_8_test: add missing dspr2 tests
      4fec4a8e lpf_8_test: add missing vpx_lpf_horizontal_4 tests
      c3f2c8ad lpf_8_test: add missing vpx_lpf_vertical_4 tests
      45a7b5eb lpf_8_test: simplify function wrapper generation
      
      Change-Id: I0e9212497bbf30de37b19cd2d6ea63b505abe06d
      57ad0a05
    • Yaowu Xu's avatar
      minor updates · f36d0b46
      Yaowu Xu authored
      1. vp8->aom
      2. removed no-effect statements and spaces
      
      Change-Id: I367d05ff9bf1b9f3c71c517c45d8049d9d4236ec
      f36d0b46
  23. 11 Oct, 2016 1 commit
  24. 10 Oct, 2016 1 commit
  25. 06 Oct, 2016 1 commit
    • Yi Luo's avatar
      Hybrid forward transforms 16x16 AVX2 optimization · e8e8cd8f
      Yi Luo authored
      - Unit tests are added for AVX2 SIMD.
      - Encoder speed improvement:
        AV1 baseline and EXT_TX, three 1080p sequences at bitrate:
        800 Kbps, 2 Mbps, 6 Mbps, on i7-6700 CPU, average
        user level time reduction: 3.86%.
      
      Change-Id: Ibbd7837ee3a831c6b1e4e471bf6c8d3fa3a19ff4
      e8e8cd8f
  26. 28 Sep, 2016 1 commit
  27. 27 Sep, 2016 1 commit
  28. 19 Sep, 2016 1 commit
    • Alex Converse's avatar
      Move ANS to aom_dsp. · 1ac1ae73
      Alex Converse authored
      That's where it lives in aom/master.
      
      Change-Id: I38f405827d9c2d0b06ef5f3bfd7cadc35d5991ef
      1ac1ae73
  29. 17 Sep, 2016 1 commit
  30. 02 Sep, 2016 1 commit
  31. 01 Sep, 2016 2 commits
  32. 03 Aug, 2016 1 commit
  33. 29 Jul, 2016 1 commit
  34. 28 Jul, 2016 1 commit
  35. 18 Jul, 2016 1 commit
    • Johann's avatar
      Merge changes from libvpx/master by cherry-pick · 2967bf35
      Johann authored
      This commit bring all up-to-date changes from master that are
      applicable to nextgenv2. Due to the remove VP10 code in master,
      we had to cherry pick the following commits to get those changes:
      
      Add default flags for arm64/armv8 builds
      
      Allows building simple targets with sane default flags.
      
      For example, using the Android arm64 toolchain from the NDK:
      https://developer.android.com/ndk/guides/standalone_toolchain.html
      ./build/tools/make-standalone-toolchain.sh --arch=arm64 \
        --platform=android-24 --install-dir=/tmp/arm64
      CROSS=/tmp/arm64/bin/aarch64-linux-android- \
        ~/libvpx/configure --target=arm64-linux-gcc --disable-multithread
      
      BUG=webm:1143
      
      vpx_lpf_horizontal_4_sse2: Remove dead load.
      
      Change-Id: I51026c52baa1f0881fcd5b68e1fdf08a2dc0916e
      
      Fail early when android target does not include --sdk-path
      
      Change-Id: I07e7e63476a2e32e3aae123abdee8b7bbbdc6a8c
      
      configure: clean up var style and set_all usage
      
      Use quotes whenever possible and {} always for variables.
      
      Replace multiple set_all calls with *able_feature().
      
      Conflicts:
      	build/make/configure.sh
      
      vp9-svc: Remove some unneeded code/comment.
      
      datarate_test,DatarateTestLarge: normalize bits type
      
      quiets a msvc warning:
      conversion from 'const int64_t' to 'size_t', possible loss of data
      
      mips added p6600 cpu support
      
      Removed -funroll-loops
      
      psnr.c: use int64_t for sum of differences
      
      Since the values can be negative.
      
      *.asm: normalize label format
      
      add a trailing ':', though it's optional with the tools we support, it's
      more common to use it to mark a label. this also quiets the
      orphan-labels warning with nasm/yasm.
      
      BUG=b/29583530
      
      Prevent negative variance
      
      Due to rounding, hbd variance may become negative. This commit put in
      check and clamp of negative values to 0.
      
      configure: remove old visual studio support (<2010)
      
      BUG=b/29583530
      
      Conflicts:
      	configure
      
      configure: restore vs_version variable
      
      inadvertently lost in the final patchset of:
      078dff7 configure: remove old visual studio support (<2010)
      
      this prevents an empty CONFIG_VS_VERSION and avoids make failure
      
      Require x86inc.asm
      
      Force enable x86inc.asm when building for x86. Previously there were
      compatibility issues so a flag was added to simplify disabling this
      code.
      
      The known issues have been resolved and x86inc.asm is the preferred
      abstraction layer (over x86_abi_support.asm).
      
      BUG=b:29583530
      
      convolve_test: fix byte offsets in hbd build
      
      CONVERT_TO_BYTEPTR(x) was corrected in:
      003a9d2 Port metric computation changes from nextgenv2
      to use the more common (x) within the expansion. offsets should occur
      after converting the pointer to the desired type.
      
      + factorized some common expressions
      
      Conflicts:
      	test/convolve_test.cc
      
      vpx_dsp: remove x86inc.asm distinction
      
      BUG=b:29583530
      
      Conflicts:
      	vpx_dsp/vpx_dsp.mk
      	vpx_dsp/vpx_dsp_rtcd_defs.pl
      	vpx_dsp/x86/highbd_variance_sse2.c
      	vpx_dsp/x86/variance_sse2.c
      
      test: remove x86inc.asm distinction
      
      BUG=b:29583530
      
      Conflicts:
      	test/vp9_subtract_test.cc
      
      configure: remove x86inc.asm distinction
      
      BUG=b:29583530
      
      Change-Id: I59a1192142e89a6a36b906f65a491a734e603617
      
      Update vpx subpixel 1d filter ssse3 asm
      
      Speed test shows the new vertical filters have degradation on Celeron
      Chromebook. Added "X86_SUBPIX_VFILTER_PREFER_SLOW_CELERON" to control
      the vertical filters activated code. Now just simply active the code
      without degradation on Celeron. Later there should be 2 set of vertical
      filters ssse3 functions, and let jump table to choose based on CPU type.
      
      improve vpx_filter_block1d* based on replace paddsw+psrlw to pmulhrsw
      
      Make set_reference control API work in VP9
      
      Moved the API patch from NextGenv2. An example was included.
      To try it, for example, run the following command:
      $ examples/vpx_cx_set_ref vp9 352 288 in.yuv out.ivf 4 30
      
      Conflicts:
      	examples.mk
      	examples/vpx_cx_set_ref.c
      	test/cx_set_ref.sh
      	vp9/decoder/vp9_decoder.c
      
      deblock filter : moved from vp8 code branch
      
      The deblocking filters used in vp8 have been moved to vpx_dsp for
      use by both vp8 and vp9.
      
      vpx_thread.[hc]: update webp source reference
      
      + drop the blob hash, the updated reference will be updated in the
      commit message
      
      BUG=b/29583578
      
      vpx_thread: use native windows cond var if available
      
      BUG=b/29583578
      
      original webp change:
      
      commit 110ad5835ecd66995d0e7f66dca1b90dea595f5a
      Author: James Zern <jzern@google.com>
      Date:   Mon Nov 23 19:49:58 2015 -0800
      
          thread: use native windows cond var if available
      
          Vista / Server 2008 and up. no speed difference observed.
      
      100644 blob 4fc372b7bc6980a9ed3618c8cce5b67ed7b0f412 src/utils/thread.c
      100644 blob 840831185502d42a3246e4b7ff870121c8064791 src/utils/thread.h
      
      vpx_thread: use InitializeCriticalSectionEx if available
      
      BUG=b/29583578
      
      original webp change:
      
      commit 63fadc9ffacc77d4617526a50c696d21d558a70b
      Author: James Zern <jzern@google.com>
      Date:   Mon Nov 23 20:38:46 2015 -0800
      
          thread: use InitializeCriticalSectionEx if available
      
          Windows Vista / Server 2008 and up
      
      100644 blob f84207d89b3a6bb98bfe8f3fa55cad72dfd061ff src/utils/thread.c
      100644 blob 840831185502d42a3246e4b7ff870121c8064791 src/utils/thread.h
      
      vpx_thread: use WaitForSingleObjectEx if available
      
      BUG=b/29583578
      
      original webp change:
      
      commit 0fd0e12bfe83f16ce4f1c038b251ccbc13c62ac2
      Author: James Zern <jzern@google.com>
      Date:   Mon Nov 23 20:40:26 2015 -0800
      
          thread: use WaitForSingleObjectEx if available
      
          Windows XP and up
      
      100644 blob d58f74e5523dbc985fc531cf5f0833f1e9157cf0 src/utils/thread.c
      100644 blob 840831185502d42a3246e4b7ff870121c8064791 src/utils/thread.h
      
      vpx_thread: use CreateThread for windows phone
      
      BUG=b/29583578
      
      original webp change:
      
      commit d2afe974f9d751de144ef09d31255aea13b442c0
      Author: James Zern <jzern@google.com>
      Date:   Mon Nov 23 20:41:26 2015 -0800
      
          thread: use CreateThread for windows phone
      
          _beginthreadex is unavailable for winrt/uwp
      
          Change-Id: Ie7412a568278ac67f0047f1764e2521193d74d4d
      
      100644 blob 93f7622797f05f6acc1126e8296c481d276e4047 src/utils/thread.c
      100644 blob 840831185502d42a3246e4b7ff870121c8064791 src/utils/thread.h
      
      vp9_postproc.c missing extern.
      
      BUG=webm:1256
      
      deblock: missing const on extern const.
      
      postproc - move filling of noise buffer to vpx_dsp.
      
      Fix encoder crashes for odd size input
      
      clean-up vp9_intrapred_test
      
      remove tuple and overkill VP9IntraPredBase class.
      
      postproc: noise style fixes.
      
      gtest-all.cc: quiet an unused variable warning
      
      under windows / mingw builds
      
      vp9_intrapred_test: follow-up cleanup
      
      address few comments from ce050afaf3e288895c3bee4160336e2d2133b6ea
      
      Change-Id: I3eece7efa9335f4210303993ef6c1857ad5c29c8
      2967bf35