1. 14 Oct, 2014 1 commit
  2. 07 Oct, 2014 1 commit
    • Jim Bankoski's avatar
      experimental : partition using 1/8 x 1/8 image · 0ce51d82
      Jim Bankoski authored
      The concept:
      
      There's too much noise in source pixels for variance and at low bitrate
      the reconstructed looks nothing like the source so we have problems
      getting good partitionings with either.   This skirts the issue by using
      a box blur scaled down version for variance calculations.  To compare
      against source_var_ moved keyframe to be rd based like source_var.
      
      Change-Id: Ie3babdbfadae324b7b5a76bea192893af27f0624
      0ce51d82
  3. 06 Oct, 2014 1 commit
    • JackyChen's avatar
      Add SSE2 code and unit test for VP9 denoiser. · 80465dae
      JackyChen authored
      This SSE2 is based on VP8 denoiser's SSE2 code. In VP8, there are
      only 16x16 blocks in denoiser, while in VP9, there are 13 different
      block sizes.
      
      By adding this SSE2 code, the improvement of encoder speed is around
      20%(using C code vs using SSE2 code), vary for different clips.
      
      The unit test for VP9 denoiser is to confirm that the SSE2 code is
      bit-exact with the C code. The unit test covers all block size.
      
      Change-Id: Ic8d8ac26db4ea40a5f146b5678a065af07eaaa3d
      80465dae
  4. 06 Sep, 2014 1 commit
  5. 02 Sep, 2014 1 commit
    • Dmitry Kovalev's avatar
      Removing MMX SAD calculation code. · 318fc0c3
      Dmitry Kovalev authored
      Removed functions:
      * vp9_sad_16x16_mmx
      * vp9_sad_8x16_mmx
      * vp9_sad_16x8_mmx
      * vp9_sad_8x8_mmx
      * vp9_sad_4x4_mmx
      
      Change-Id: Ic5174b93b64d65d846f0c11e72cab149e9472bc3
      318fc0c3
  6. 29 Aug, 2014 1 commit
    • Dmitry Kovalev's avatar
      Removing variance MMX code. · 12cd6f42
      Dmitry Kovalev authored
      Removed functions:
      * vp9_mse16x16_mmx
      * vp9_get_mb_ss_mmx
      * vp9_get4x4var_mmx
      * vp9_get8x8var_mmx
      * vp9_variance4x4_mmx
      * vp9_variance8x8_mmx
      * vp9_variance16x16_mmx
      * vp9_variance16x8_mmx
      * vp9_variance8x16_mmx
      
      They all have SSE2 equivalent.
      
      Change-Id: I3796f2477c4f59b35b4828f46a300c16e62a2615
      12cd6f42
  7. 31 Jul, 2014 1 commit
  8. 30 Jul, 2014 2 commits
  9. 29 Jul, 2014 1 commit
  10. 24 Jul, 2014 1 commit
  11. 16 Jul, 2014 1 commit
  12. 02 Jul, 2014 1 commit
    • Alex Converse's avatar
      Split vp9_rdopt into vp9_rdopt and vp9_rd. · 03c276ea
      Alex Converse authored
      vp9_rdopt is for making rd optimal mode decisions. vp9_rd is for all
      other rd related routines. Anything used outside of making an rd optimal
      decision belongs in rd.
      
      Change-Id: I772a3073f7588bdf139f551fb9810b6864d8e64b
      03c276ea
  13. 25 Jun, 2014 1 commit
  14. 12 Jun, 2014 1 commit
  15. 21 May, 2014 1 commit
    • Deb Mukherjee's avatar
      Renames x86_64 specific asm files · e2722734
      Deb Mukherjee authored
      Renames all x86_64 specific assembly files to consistently
      end in _x86_64.asm. This will be useful for build systems to
      handle these files differently.
      All new 64-bit specific assembly files should use the new
      naming convention.
      
      Change-Id: I36c89584967c82ffc4088b1b5044ac15d2bb7536
      e2722734
  16. 14 May, 2014 1 commit
    • levytamar82's avatar
      AVX2 To VP9 Block Error Optimization · 1fbab853
      levytamar82 authored
      vp9_block_error_sse2 can only handle 16 bytes at a time but
      the function requires to handle a sequence of 32 bytes at a time
      so each 16 bytes is handled in a different register.
      With AVX2 optimization the 32 bytes can be handled in one register instead
      of two in the SSE2
      The vp9_block_error was optimized by 85%.
      The user level was optimized by 1.2%
      
      Change-Id: Ia8fffe60e61eff7432a5fbd538757894f6c319fd
      1fbab853
  17. 08 May, 2014 1 commit
  18. 07 May, 2014 1 commit
    • Paul Wilkins's avatar
      Revert "Add an MMX fwht4x4" · 33b1c457
      Paul Wilkins authored
      Includes changes that are not compatible with VS windows builds.
      Amongst other things stdint.h is not supported in VS.
      
      This reverts commit 89fbf3de.
      
      Change-Id: Ifa86d7df250578d1ada9b539c9ff12ed0c523cdd
      33b1c457
  19. 05 May, 2014 1 commit
    • Alex Converse's avatar
      Add an MMX fwht4x4 · 89fbf3de
      Alex Converse authored
      7% faster encoding a desktop lossless at RT speed 4.
      
      Change-Id: I41627f5b737752616b6512bb91a36ec45995bf64
      89fbf3de
  20. 30 Apr, 2014 1 commit
  21. 29 Apr, 2014 1 commit
    • Jingning Han's avatar
      Enable SSSE3 implementation of 8x8 forward 2D-DCT · 1eaa3a76
      Jingning Han authored
      Assembly implementation of ssse3 8x8 forward 2D-DCT. The current
      version is turned on only for x86_64. The average unit runtime
      goes from 157 cycles down to 136 cycles, i.e., about 12.8% faster.
      This translates into about 1.5% speed-up for pedestrian_area 1080p
      at speed 2.
      
      Change-Id: I0f12435857e9425ed7ce12541344dfa16837f4f4
      1eaa3a76
  22. 22 Apr, 2014 1 commit
    • Dmitry Kovalev's avatar
      Renaming "onyx" to "encoder". · ef003078
      Dmitry Kovalev authored
      Actual renames:
        vp9_onyx_if.c -> vp9_encoder.c
        vp9_onyx_int.h -> vp9_encoder.h
      
      Change-Id: I80532a80b118d0060518e6c6a0d640e3f411783c
      ef003078
  23. 17 Apr, 2014 1 commit
    • Jim Bankoski's avatar
      add a context tree structure to encoder · e890c257
      Jim Bankoski authored
      This patch sets up a quad_tree structure (pc_tree) for holding all of
      pick_mode_context data we use at any square block size during encoding
      or picking modes.  That includes contexts for 2 horizontal and 2 vertical
      splits, one none, and pointers to 4 sub pc_tree nodes corresponding
      to split.  It also includes a pointer to the current chosen partitioning.
      
      This replaces code that held an index for every level in the pick
      modes array including:  sb_index, mb_index,
      b_index, ab_index.
      
      These were used as stateful indexes that pointed to the current pick mode
      contexts you had at each level stored in the following arrays
      
      array ab4x4_context[][][],
      sb8x4_context[][][], sb4x8_context[][][], sb8x8_context[][][],
      sb8x16_context[][][], sb16x8_context[][][], mb_context[][], sb32x16[][],
      sb16x32[],  sb32_context[], sb32x64_context[], sb64x32_context[],
      sb64_context
      
      and the partitioning that had been stored in the following:
      b_partitioning, mb_partitioning, sb_partitioning, and sb64_partitioning.
      
      Prior to this patch before doing an encode you had to set the appropriate
      index for your block size ( switch statement),  update it ( up to 3
      lookups for the index array value) and then make your call into a recursive
      function at which point you'd have to call get_context which then
      had to do a switch statement based on the blocksize,  and then up to 3
      lookups based upon the block size to find the context to use.
      
      With the new code the context for the block size is passed around directly
      avoiding the extraneous switch statements and multi dimensional array
      look ups that were listed above.   At any level in the search all of the
      contexts are local to the pc_tree you are working on (in?).
      
      In addition in most places code that used to call sub functions and
      then check if the block size was 4x4 and index was > 0 and return
      now don't preferring instead to call the right none function on the inside.
      
      
      
      Change-Id: I06e39318269d9af2ce37961b3f95e181b57f5ed9
      e890c257
  24. 14 Apr, 2014 1 commit
    • Dmitry Kovalev's avatar
      Removing unused vp9_mcomp_x86.h file. · 2fc3a186
      Dmitry Kovalev authored
      We don't use declarations from this file. The real declarations
      (differently named) are in vp9_rtcd_defs.pl, e.g. vp9_full_search_sad.
      
      Change-Id: I73cbf064305710ba20747233cfdbe67366f069a0
      2fc3a186
  25. 08 Apr, 2014 1 commit
  26. 28 Mar, 2014 1 commit
  27. 27 Mar, 2014 1 commit
  28. 24 Mar, 2014 1 commit
  29. 21 Mar, 2014 2 commits
    • Marco Paniconi's avatar
      Rename the aq_mode files. · 03a9e5ed
      Marco Paniconi authored
      Change-Id: Id76a628495c822e23825b66a7589b4a3279680e2
      03a9e5ed
    • levytamar82's avatar
      AVX2 SAD Optimization: · 0fa8b668
      levytamar82 authored
      2 functions were optimized for avx2 by using full 256 bit register
      In order to handle 32 elements in parallel instead of only 16 in parallel:
      1. vp9_sad32x32x4d
      2. vp9_sad64x64x4d
      
      The function level gain is 66% and the user level gain is ~1%.
      
      Change-Id: I4efbb3bc7d8bc03b64b6c98f5cd5c4a9dd3212cb
      0fa8b668
  30. 18 Mar, 2014 1 commit
  31. 13 Mar, 2014 1 commit
  32. 05 Mar, 2014 1 commit
  33. 27 Feb, 2014 1 commit
    • Dmitry Kovalev's avatar
      Adding vpx_sse_to_psnr() function. · 7d5bffc4
      Dmitry Kovalev authored
      Removing all copies of identical vp8_mse2psnr/vp9_mse2psnr functions.
      Using vpx_sse_to_psnr() instead in all places.
      
      Change-Id: I15beef9834d43d8fc8a8a7a2d1fc5de3d658fed8
      7d5bffc4
  34. 14 Feb, 2014 1 commit
    • levytamar82's avatar
      AVX2 SubPixel Variance Optimization · 52dac5d1
      levytamar82 authored
      Optimizing 2 functions to process 32 elements in parallel instead of 16:
      1. vp9_sub_pixel_variance64x64
      2. vp9_sub_pixel_variance32x32
      both of those function were calling vp9_sub_pixel_variance16xh_ssse3
      instead of calling that function, it calls vp9_sub_pixel_variance32xh_avx2
      that is written in avx2 and process 32 elements in parallel.
      This Optimization gave 70% function level gain and 2% user level gain
      
      Change-Id: I4f5cb386b346ff6c878a094e1c3b37e418e50bde
      52dac5d1
  35. 06 Feb, 2014 1 commit
  36. 05 Feb, 2014 2 commits
  37. 04 Feb, 2014 1 commit