1. 12 Mar, 2015 1 commit
  2. 10 Mar, 2015 1 commit
  3. 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
  4. 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
  5. 26 Feb, 2015 2 commits
  6. 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
  7. 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
  8. 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
  9. 29 Jan, 2015 1 commit
  10. 28 Jan, 2015 1 commit
  11. 23 Jan, 2015 1 commit
  12. 21 Jan, 2015 1 commit
  13. 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
  14. 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
  15. 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
  16. 07 Jan, 2015 3 commits
    • 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
    • Jingning Han's avatar
      Skip duplicate denoiser frame buffer allocation · 27582e57
      Jingning Han authored
      Allocate the frame buffer allocation for denoiser once during the
      encoder initialization. This avoids allocating frame buffer
      multiple times and overwriting the buffer pointer without proper
      releasing.
      
      Change-Id: I9b3baa6283449d86fd164534d344c036bb035700
      27582e57
    • Paul Wilkins's avatar
      Use 64 bit to accumulate frame sse. · a3c1a9b4
      Paul Wilkins authored
      When testing frame sse to choose a loop filter value and
      when checking ambient error in kf Q selection, use 64 bit
      values for accumulating the sse, to avoid risk of overflow
      for large image formats.
      
      Change-Id: I03765d16c843d0ade61a45b0cd46312472697e57
      a3c1a9b4
  17. 04 Jan, 2015 1 commit
    • Jingning Han's avatar
      Fix denoised video output function · 21c03061
      Jingning Han authored
      This commit fixes the buffer alignment control in denoised video
      output function. The encoder is now able to properly store the
      denoised input video into provided file when enabled.
      
      Change-Id: I258e272c8d4a9b52592e16d6d09976c6f5c21728
      21c03061
  18. 23 Dec, 2014 2 commits
    • Jim Bankoski's avatar
      WIP: Remove giant value cost table · b3c66f8a
      Jim Bankoski authored
      Change-Id: Iabe8a8868a747626c24bb13f1796f4c7827af367
      b3c66f8a
    • James Zern's avatar
      vp9: fix -Wclobbered (longjmp + local variables) · 59d63e61
      James Zern authored
      Local variables used at the setjmp() site need to be marked volatile.
      Relevant excerpt from the 'man longjmp':
      
      ===============
      The values of automatic variables are unspecified after a call to
      longjmp() if they meet all the following criteria:
      ·  they are local to the function that made the corresponding setjmp(3) call;
      ·  their values are changed between the calls to setjmp(3) and longjmp(); and
      ·  they are not declared as volatile.
      ===============
      
      Change-Id: I093e6eeeedbf5f781d202248ca701ba2c29d3064
      59d63e61
  19. 22 Dec, 2014 1 commit
  20. 19 Dec, 2014 1 commit
  21. 18 Dec, 2014 2 commits
  22. 17 Dec, 2014 1 commit
  23. 15 Dec, 2014 2 commits
  24. 12 Dec, 2014 1 commit
    • Frank Galligan's avatar
      Add support for setting byte alignment. · 399823b6
      Frank Galligan authored
      Add support for setting byte alignment on the Y, U, and V plane of the
      reference buffers. The byte alignment must be a power of 2, from 32 to
      1024. A value of 0 sets legacy alignment.
      
      Change-Id: I7c1399622f7aa68e123646369216b32047dda73d
      399823b6
  25. 09 Dec, 2014 1 commit
    • Paul Wilkins's avatar
      Substantial restructuring of AQ mode 2. · e68c8dcf
      Paul Wilkins authored
      The restructure moves the decision into the rd pick
      modes loop and makes a decision based at the 16x16
      block level instead of only the 64x64 level.
      
      This gives finer granularity and better visual results
      on the clips I have tested. Metrics results are worse
      than the old AQ2 especially for PSNR and this mode
      now falls between AQ0 and AQ1 in terms of visual
      impact and metrics results.
      
      Further tuning of this to follow.
      
      It should be noted that if there are multiple iterations
      of the recode loop the segment for a MB could change
      in each loop if the previous loop causes a change in the
      complexity / variance bin of the block. Also where a block
      gets a delta Q this will alter the rd multiplier for this block
      in subsequent recode iterations and frames where the
      segmentation is applied.
      
      Change-Id: I20256c125daa14734c16f7cc9aefab656ab808f7
      e68c8dcf
  26. 06 Dec, 2014 1 commit
    • James Zern's avatar
      vp9: fix frame-parallel encoding · 6db81fd6
      James Zern authored
      the flag in the header wasn't being set based on the encoder
      configuration in non-intra only mode
      
      broken since:
      fbc2fbf4 Adding oxcf temp variable.
      
      Change-Id: Ib4cff9901889824bc4e68d7f0f6deb1e41df2f53
      6db81fd6
  27. 05 Dec, 2014 1 commit
  28. 04 Dec, 2014 2 commits
    • Yunqing Wang's avatar
      vp9_ethread: the tile-based multi-threaded encoder · eba9c762
      Yunqing Wang authored
      Currently, VP9 supports column-tile encoding, which allows a frame
      to be encoded in multiple column tiles independently. The number of
      column tiles are set by encoder option "--tile-columns". This
      provides a way to encode a frame in parallel.
      
      Based on previous set of patches, this patch implemented the tile-
      based multi-threaded encoder. Each thread processes one or more
      tiles.
      
      Usage:
      For HD clips:
      --tile-columns=2 --threads=1/2/3/4
      
      While using 4 threads, tests showed that the encoder achieved
      2.3X - 2.5X speedup at good-quality speed 3, and 2X speedup at
      realtime speed 5.
      
      Change-Id: Ied987f8f2618b1283a8643ad255e88341733c9d4
      eba9c762
    • Adrian Grange's avatar
      Free motion vector array before re-allocating · 979ee6e4
      Adrian Grange authored
      Change-Id: I0c39136d67e1e83020d61f86b062a04182ec9b00
      979ee6e4
  29. 03 Dec, 2014 1 commit
  30. 02 Dec, 2014 1 commit
  31. 26 Nov, 2014 1 commit