1. 13 May, 2015 1 commit
    • Johann's avatar
      Relocate memory operations for common code · 1d7ccd53
      Johann authored
      With the sad functions, and hopefully the variance functions soon,
      moving to the vpx_dsp location, place the defines used in the
      reference C code in a common location.
      
      Change-Id: I4c8ce7778eb38a0a3ee674d2f1c488eda01cfeca
      1d7ccd53
  2. 08 May, 2015 1 commit
    • paulwilkins's avatar
      Skip the last frame update for some frame repeats. · e5112b3a
      paulwilkins authored
      Where a frame appears to be a repeat of an earlier
      frame or frame buffer,  but the first pass code
      does not anticipate this (usually because it is matching
      the GF or ARF buffer not the last frame buffer), do not
      update the last frame buffer.
      
      This helps ensure that the content of the last frame buffer
      is kept "different" where possible, and not updated to
      match the GF or ARF. This is particularly helpful in some
      animated sequences where there are groups of repeating
      frames. Here it has quite a big impact. However, in most
      of our standard test clips it has little or no impact.
      
      Change-Id: I77332ee1a69f9ffc0c6080bfeb811c43fd8828e6
      e5112b3a
  3. 06 May, 2015 1 commit
    • Johann's avatar
      Move shared SAD code to vpx_dsp · d5d92898
      Johann authored
      Create a new component, vpx_dsp, for code that can be shared
      between codecs. Move the SAD code into the component.
      
      This reduces the size of vpxenc/dec by 36k on x86_64 builds.
      
      Change-Id: I73f837ddaecac6b350bf757af0cfe19c4ab9327a
      d5d92898
  4. 29 Apr, 2015 2 commits
    • James Zern's avatar
      vpx_mem: remove vpx_memset · f58011ad
      James Zern authored
      vestigial. replace instances with memset() which they already were being
      defined to.
      
      Change-Id: Ie030cfaaa3e890dd92cf1a995fcb1927ba175201
      f58011ad
    • James Zern's avatar
      vpx_mem: remove vpx_memcpy · f274c219
      James Zern authored
      vestigial. replace instances with memcpy() which they already were being
      defined to.
      
      Change-Id: Icfd1b0bc5d95b70efab91b9ae777ace1e81d2d7c
      f274c219
  5. 22 Apr, 2015 1 commit
  6. 21 Apr, 2015 2 commits
  7. 17 Apr, 2015 3 commits
  8. 16 Apr, 2015 1 commit
  9. 15 Apr, 2015 2 commits
  10. 02 Apr, 2015 1 commit
    • Yunqing Wang's avatar
      Set vbp thresholds for aq3 boosted blocks · cae03a7e
      Yunqing Wang authored
      The vbp thresholds are set seperately for boosted/non-boosted
      superblocks according to their segment_id. This way we don't
      have to force the boosted blocks to split to 32x32.
      
      Speed 6 RTC set borg test result showed some quality gains.
      Overall PSNR: +0.199%; Avg PSNR: +0.245%; SSIM: +0.802%.
      No speed change was observed.
      
      Change-Id: I37c6643a3e2da59c4b7dc10ebe05abc8abf4026a
      cae03a7e
  11. 24 Mar, 2015 1 commit
  12. 20 Mar, 2015 2 commits
  13. 19 Mar, 2015 1 commit
  14. 18 Mar, 2015 1 commit
  15. 16 Mar, 2015 1 commit
  16. 12 Mar, 2015 1 commit
  17. 10 Mar, 2015 1 commit
  18. 04 Mar, 2015 1 commit
    • Adrian Grange's avatar
      Make encoder buffer allocation dynamic · 3807dd82
      Adrian Grange authored
      Frame buffers are now allocated dynamically on-demand.
      
      Entries in the reference frame map, cm->ref_frame_map,
      may now be set to -1 (INVALID_IDX) to indicate that
      there is not a valid reference buffer in that "slot".
      
      All slots in the reference frame map are now initialized
      to the empty state (-1) and each buffer is initialized
      to have a reference count of 0.
      
      Change-Id: Id1afe98de98db4ae8b2dfefed7889c3b28c68582
      3807dd82
  19. 27 Feb, 2015 1 commit
    • Adrian Grange's avatar
      Fix calc_highbd_psnr · 54293ee3
      Adrian Grange authored
      Should use the crop dimensions of the frame rather
      than the extended size.
      
      Change-Id: I49ed041a46ff0753d43e074020857b7ff2f95e17
      54293ee3
  20. 26 Feb, 2015 2 commits
  21. 12 Feb, 2015 1 commit
    • Marco's avatar
      Add skin detection. · 56435bb7
      Marco authored
      Simple skin detection, from vp8; works reasonable on most of the
      RTC clips, but could miss sometimes.
      
      Added debug flag to write out skin map over source input.
      
      Change-Id: I2caea7592f1c459047aac46627eeb24a94946464
      56435bb7
  22. 10 Feb, 2015 2 commits
    • Yaowu Xu's avatar
      Move computation up to frame level · ee5d7999
      Yaowu Xu authored
      This is to avoid redo the same calculation repeatly, and also allow
      easier adjustments for further experiments.
      
      This commit shall have no effect on quality/compression.
      
      Change-Id: I4460acf5c808ff5518da18d21e002c5da58af857
      ee5d7999
    • Adrian Grange's avatar
      Auto-adaptive encoder frame resizing logic · 23ebacdb
      Adrian Grange authored
      Note: This feature is still in development.
      
      Add an option for the encoder to decide the resolution
      at which to encode each frame.
      
      Each KF/GF/ARF goup is tested to see if it would be
      better encoded at a lower resolution. At present, each
      KF/GF/ARF is coded first at full-size and if the coded
      size exceeds a threshold (twice target data rate) at
      the maximum active Q then the entire group is encoded
      at lower resolution.
      
      This feature is enabled in vpxenc by setting:
        --resize-allowed=1
      
      In addition, if the vpxenc command line also specifies
      valid frame dimensions using:
        --resize-width=XXXX & --resize_height=YYYY
      then *all* frames will be encoded at this resolution.
      
      Change-Id: I13f341e0a82512f9e84e144e0f3b5aed8a65402b
      23ebacdb
  23. 31 Jan, 2015 1 commit
    • hkuang's avatar
      Try again to merge branch 'frame-parallel' into master branch. · be6aeada
      hkuang authored
      In frame parallel decode, libvpx decoder decodes several frames on all
      cpus in parallel fashion. If not being flushed, it will only return frame
      when all the cpus are busy. If getting flushed, it will return all the
      frames in the decoder. Compare with current serial decode mode in which
      libvpx decoder is idle between decode calls, libvpx decoder is busy
      between decode calls.
      
      Current frame parallel decode will only speed up the decoding for frame
      parallel encoded videos. For non frame parallel encoded videos, frame
      parallel decode is slower than serial decode due to lack of loopfilter
      worker thread.
      
      There are still some known issues that need to be addressed. For example:
      decode frame parallel videos with segmentation enabled is not right sometimes.
      
      * frame-parallel:
        Add error handling for frame parallel decode and unit test for that.
        Fix a bug in frame parallel decode and add a unit test for that.
        Add two test vectors to test frame parallel decode.
        Add key frame seeking to webmdec and webm_video_source.
        Implement frame parallel decode for VP9.
        Increase the thread test range to cover 5, 6, 7, 8 threads.
        Fix a bug in adding frame parallel unit test.
        Add VP9 frame-parallel unit test.
        Manually pick "Make the api behavior conform to api spec." from master branch.
        Move vp9_dec_build_inter_predictors_* to decoder folder.
        Add segmentation map array for current and last frame segmentation.
        Include the right header for VP9 worker thread.
        Move vp9_thread.* to common.
        ctrl_get_reference does not need user_priv.
        Seperate the frame buffers from VP9 encoder/decoder structure.
        Revert "Revert "Revert "Revert 3 patches from Hangyu to get Chrome to build:"""
       Conflicts:
             test/codec_factory.h
             test/decode_test_driver.cc
             test/decode_test_driver.h
             test/invalid_file_test.cc
             test/test-data.sha1
             test/test.mk
             test/test_vectors.cc
             vp8/vp8_dx_iface.c
             vp9/common/vp9_alloccommon.c
             vp9/common/vp9_entropymode.c
             vp9/common/vp9_loopfilter_thread.c
             vp9/common/vp9_loopfilter_thread.h
             vp9/common/vp9_mvref_common.c
             vp9/common/vp9_onyxc_int.h
             vp9/common/vp9_reconinter.c
             vp9/decoder/vp9_decodeframe.c
             vp9/decoder/vp9_decodeframe.h
             vp9/decoder/vp9_decodemv.c
             vp9/decoder/vp9_decoder.c
             vp9/decoder/vp9_decoder.h
             vp9/encoder/vp9_encoder.c
             vp9/encoder/vp9_pickmode.c
             vp9/encoder/vp9_rdopt.c
             vp9/vp9_cx_iface.c
             vp9/vp9_dx_iface.c
      
      This reverts commit a18da976.
      
      Change-Id: I361442ffec1586d036ea2e0ee97ce4f077585f02
      be6aeada
  24. 29 Jan, 2015 1 commit
  25. 28 Jan, 2015 1 commit
  26. 23 Jan, 2015 1 commit
  27. 21 Jan, 2015 1 commit
  28. 17 Jan, 2015 1 commit
    • Yunqing Wang's avatar
      vp9_ethread: add parallel loopfilter · e76eaf05
      Yunqing Wang authored
      1. Added row-based loopfilter in encoder;
      2. Moved common multi-threaded loopfilter functions from decoder
         to common;
      3. Merged multi-threaded loopfilter code, and made encoder/
         decoder call same function to reduce code duplication.
      
      Encoder tests showed that 1% - 2% speedup was seen for good-quality
      2-pass mode(at speed 3); 1% - 3% speedup using 2 threads and 4% - 6%
      speedup using 4 threads were seen for real-time mode(at speed 7).
      
      Change-Id: I8a4ac51c2ad9bab9fa7b864e90743931c53ec1c4
      e76eaf05
  29. 14 Jan, 2015 1 commit
    • Yaowu Xu's avatar
      Add encoder control for setting color space · e94b415c
      Yaowu Xu authored
      This commit adds encoder side control for vp9 to set color space info
      in the output compressed bitstream.
      
      It also amends the "vp9_encoder_params_get_to_decoder" test to verify
      the correct color space information is passed from the encoder end to
      decoder end.
      
      Change-Id: Ibf5fba2edcb2a8dc37557f6fae5c7816efa52650
      e94b415c
  30. 09 Jan, 2015 2 commits
    • Yaowu Xu's avatar
      Added plumbing for setting color space · ce52b0f8
      Yaowu Xu authored
      Change-Id: If64052cc6e404abc8a64a889f42930d14fad21d3
      ce52b0f8
    • Yaowu Xu's avatar
      Fix comments and color format · ecbca31a
      Yaowu Xu authored
      Replaced "color space" with "color format" in comments where color
      sampling format is concerned, so to differentiate from the concept
      defined in COLOR_SPACE.
      
      Change-Id: I8c935034c166b24307a99352dab1686531276bb8
      ecbca31a
  31. 07 Jan, 2015 1 commit
    • Jingning Han's avatar
      Always check and free denoiser buffer memory space · ce080069
      Jingning Han authored
      The vp9_denoiser_free() function will internally check if the
      buffer pointers are NULL. This commit makes the encoder always
      call vp9_denoiser_free() after finishing encoding. It protects the
      case where noise_sensitivity_level is changed during encoding
      process and happen to be turned off towards the end of sequence,
      which could result memory space allocated to denoiser not being
      released.
      
      Change-Id: Ie20dc2f2e6e5fb6333fbab3356bc153978a6a0f8
      ce080069