1. 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
  2. 23 Jan, 2015 1 commit
  3. 19 Dec, 2014 1 commit
  4. 12 Dec, 2014 1 commit
  5. 09 Dec, 2014 1 commit
  6. 06 Nov, 2014 1 commit
    • Yunqing Wang's avatar
      Modify the frame context memory deallocation · 12284334
      Yunqing Wang authored
      This patch was to fix the vpxdec fuzzing3 test failure. When an
      error occurs, setjmp() is invoked, which calls the decoder
      removing routine. In multiple thread situation, other threads
      could try to access the frame context memory that is already
      deallocated, thus causing a segfault.
      
      An invalid unit test was added for this issue.
      
      Change-Id: Ida7442154f3d89759483f0f4fe0324041fffb952
      12284334
  7. 21 Oct, 2014 1 commit
  8. 16 Oct, 2014 1 commit
    • Deb Mukherjee's avatar
      Adds a set of end-to-end encode tests · 50c59cda
      Deb Mukherjee authored
      Covers all profiles and input formats. The tests check if the
      encode succeeds and if the psnr is sane.
      
      Change-Id: I195a5330debf92562846121819b6eaf961e27c01
      50c59cda
  9. 13 Oct, 2014 1 commit
    • Alex Converse's avatar
      Add a seg map preservation test vector. · 99a132f5
      Alex Converse authored
      Add a test vector to show the cases where segmentation map is preserved
      from frome to frame as outlined in the inquiry in issue 761.
      
      Change-Id: I630c6aba27d0d0b109cc7fd7c6fcd008222a0cf3
      99a132f5
  10. 09 Oct, 2014 2 commits
  11. 08 Oct, 2014 1 commit
    • JackyChen's avatar
      Add unit test for VP8 denoiser. · 09fbe886
      JackyChen authored
      The unit test is to check the bitexactness of SSE2 code with C code.
      
      Change-Id: I13cc08a557b02357e5d6c2db7a49e93ce0d8e16f
      09fbe886
  12. 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
  13. 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
  14. 23 Sep, 2014 1 commit
  15. 22 Sep, 2014 1 commit
  16. 16 Sep, 2014 1 commit
  17. 10 Sep, 2014 1 commit
  18. 08 Sep, 2014 1 commit
  19. 05 Sep, 2014 2 commits
    • James Zern's avatar
      vp9: correct context buffer resize check · bb4950df
      James Zern authored
      allocations within vp9_alloc_context_buffers() rely on mi_rows/mi_cols
      individually, use those to determine whether to realloc rather than
      stride and stride * rows. this fixes a crash with some fuzzed files for
      invalid accesses into last_frame_seg_map and above_context.
      
      Change-Id: I7b9f40dcf170d443890f3bd2acd285507943c7d4
      bb4950df
    • James Zern's avatar
      vp9: fail decode if block/frame refs are corrupt · 440f5097
      James Zern authored
      proceeding using a corrupt (incompletely decoded) frame reference may
      lead to incorrect assumptions about allocation sizes leading to a crash.
      
      Change-Id: I76e74f2e1be127c2e2c7e1174bb3307497dfd23d
      440f5097
  20. 03 Sep, 2014 1 commit
  21. 02 Sep, 2014 1 commit
  22. 29 Aug, 2014 1 commit
    • James Zern's avatar
      vp9: fix m/t loop filter invalid free · fec40f92
      James Zern authored
      store the number of allocated rows in VP9LfSync, the calculated values
      can not be relied on when dealing with corrupt material.
      
      Change-Id: I13b8bcec9738c299a71df726772ab7ac05511e5b
      fec40f92
  23. 27 Aug, 2014 2 commits
    • James Zern's avatar
      vp9: fix crash in inline loopfilter w/corrupt file · cde790c3
      James Zern authored
      attempting to decode a frame after the previous frame failed has the
      potential of interrupting an earlier loop filter task
      
      Change-Id: I6f2b1ddcdf5b89c3e2ee8caf5289dada2a087d66
      cde790c3
    • James Zern's avatar
      vp9: fix crash in mt loopfilter w/corrupt file · 4f27202d
      James Zern authored
      if the first frame was corrupt and loop filter not called, the next call
      would assume the necessary allocations had been done and segfault when
      accessing a NULL pointer
      
      Change-Id: Ib6ef505e5c594e6f0fe65ab0700172bcf06b92a6
      4f27202d
  24. 11 Aug, 2014 1 commit
    • James Zern's avatar
      vpx_codec_decode: check data size · 6a2e9ef2
      James Zern authored
      When a valid data pointer is given make sure the size is greater than
      zero.
      A previous check for vp9 was incorrectly removed in:
      70500747 Make the api behavior conform to api spec.
      
      No semantics for valid pointers + 0-sized frames are defined for VPx
      codecs, so move the check to vpx_codec_decode(). This avoids an assert
      in vp9.
      
      + add some basic invalid param testing for decoder init/decode/destroy
      
      Change-Id: I99f9cef6076d15874fd72ac973f2685d8a2353c3
      6a2e9ef2
  25. 28 Jul, 2014 1 commit
    • Jim Bankoski's avatar
      Fix reference frame size restrictions. · 899585eb
      Jim Bankoski authored
      The issue was introduced by commit g9f37d149 with adding explicit
      restrictions on reference-frame scale factors. The restriction
      is checked against aligned-by-8 frame dimensions, not against
      original ones. So, for example, frame of 35×35 actually can refer
      to frame of 70×70, but the new check won't allow this. It will
      compare 35 vs 72 (not 70), so 2x downscale limit will be exceeded.
      
      Change-Id: Ic663693034440f64ac8312cbff9e1e773a921060
      899585eb
  26. 26 Jul, 2014 1 commit
  27. 25 Jul, 2014 2 commits
  28. 18 Jul, 2014 1 commit
  29. 17 Jul, 2014 1 commit
  30. 16 Jul, 2014 1 commit
  31. 15 Jul, 2014 1 commit
  32. 11 Jul, 2014 1 commit
  33. 08 Jul, 2014 1 commit
  34. 05 Jul, 2014 1 commit
    • Deb Mukherjee's avatar
      Adds support for reading and writing 10/12-bit y4m · 5820c5d6
      Deb Mukherjee authored
      The y4m extension used is the same as the one used in ffmpeg/x264.
      The patch is adapted from the highbitdepth branch.
      
      Also adds unit tests for y4m header parsing and md5 check
      of the raw frame data, as well as y4m writing.
      
      [build fix for Mac/VS by not using tuples with strings]
      
      Change-Id: I40897ee37d289e4b6cea6fedc67047d692b8cb46
      5820c5d6
  35. 03 Jul, 2014 1 commit
  36. 02 Jul, 2014 1 commit
    • Deb Mukherjee's avatar
      Adds support for reading and writing 10/12-bit y4m · 82dc1332
      Deb Mukherjee authored
      The y4m extension used is the same as the one used in ffmpeg/x264.
      The patch is adapted from the highbitdepth branch.
      
      Also adds unit tests for y4m header parsing and md5 check
      of the raw frame data, as well as y4m writing.
      
      Change-Id: Ie2794daf6dbafd2f128464f9b9da520fc54c0dd6
      82dc1332