1. 03 Feb, 2015 2 commits
  2. 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
  3. 23 Jan, 2015 1 commit
  4. 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
  5. 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
  6. 13 Jan, 2015 1 commit
    • Yaowu Xu's avatar
      Enable decoder to pass through color space info · 6b223fcb
      Yaowu Xu authored
      This commit added a field to vpx_image_t for indicating color space,
      the field is also added to YUV_BUFFER_CONFIG. This allows the color
      space information pass through the decoder from input stream to the
      output buffer.
      
      The commit also updated compare_img() function with added verification
      of matching color space to ensure the color space information to be
      correctly passed from encode to decoder in compressed vp9 streams.
      
      Change-Id: I412776ec83defd8a09d76759aeb057b8fa690371
      6b223fcb
  7. 09 Jan, 2015 1 commit
    • 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
  8. 06 Jan, 2015 2 commits
  9. 30 Dec, 2014 1 commit
  10. 23 Dec, 2014 1 commit
    • 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
  11. 19 Dec, 2014 2 commits
  12. 18 Dec, 2014 1 commit
  13. 15 Dec, 2014 2 commits
  14. 12 Dec, 2014 2 commits
    • hkuang's avatar
      Optimize bit_read_buffer. · 3cecce91
      hkuang authored
      Change-Id: Iee43c34909deec9787b29c1c33672213b9f049df
      3cecce91
    • 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
  15. 11 Dec, 2014 2 commits
  16. 08 Dec, 2014 1 commit
  17. 04 Dec, 2014 1 commit
    • hkuang's avatar
      Clean up the logic of handling corrupted frame. · dde81959
      hkuang authored
      No more checking of corrupted reference frame as we skip
      decoding any non-intra frame in case of frame corrupted.
      
      Change-Id: I77d41bbb02fc5f61972740e2d411441eb6a17073
      dde81959
  18. 03 Dec, 2014 1 commit
    • James Zern's avatar
      vp9: sync threads after a longjmp · 6f7ab014
      James Zern authored
      Synchronize all threads immediately as a subsequent decode call may
      cause a resize invalidating some allocations.
      
      fixes one aspect of crbug.com/437655
      
      Change-Id: Ie993b62c2756478543206ddbe43ec6268d90a470
      6f7ab014
  19. 25 Nov, 2014 1 commit
  20. 14 Nov, 2014 1 commit
  21. 06 Nov, 2014 2 commits
    • 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
    • hkuang's avatar
      Totally remove prev_mi in VP9 decoder. · 4cc7c5a1
      hkuang authored
      This will save the memory and improve the decode speed due to
      removing unnecessary memset of big prev_mi array for
      all the key frames.
      
      Decoding a all key frames 1080p video shows speed improve around 2%.
      
      Change-Id: I6284a445c1291056e3c15135c3c20d502f791c10
      4cc7c5a1
  22. 05 Nov, 2014 1 commit
  23. 01 Nov, 2014 1 commit
    • hkuang's avatar
      Bind motion vectors with frame buffer structure. · 55577431
      hkuang authored
      This will save a lot of memory for decoder due to removing of prev_mi,
      but prev_mi is still needed in encoder. So this will increase a little bit
      memory for encoder.
      
      Change-Id: I24b2f1a423ebffa55a9bd2fcee1077dac995b2ed
      55577431
  24. 23 Oct, 2014 1 commit
  25. 22 Oct, 2014 2 commits
    • Yunqing Wang's avatar
      vp9_ethread: allocate frame contexts outside VP9_COMMON struct · 7c7e4d4e
      Yunqing Wang authored
      This patch allocated frame contexts outside VP9_COMMON. This allows
      multiple threads to share the same copy of frame contexts, and
      reduces the overhead. It also guarantees the correct update of
      these contexts during bitstream packing. This patch doesn't change
      encoding result.
      
      Change-Id: Ic181a2460b891d1d587278a6d02d8057b9dbd353
      7c7e4d4e
    • Hangyu Kuang's avatar
      Implement frame parallel decode for VP9. · 9ce3a7d7
      Hangyu Kuang authored
      Using 4 threads, frame parallel decode is ~3x faster than single thread
      decode and around 30% faster than tile parallel decode for frame parallel
      encoded video on both Android and desktop with 4 threads. Decode speed is
      scalable to threads too which means decode could be even faster with more threads.
      
      Change-Id: Ia0a549aaa3e83b5a17b31d8299aa496ea4f21e3e
      9ce3a7d7
  26. 17 Oct, 2014 1 commit
    • hkuang's avatar
      Correct the logic of ready_for_new_data. · e3bf55de
      hkuang authored
      This should be set right after decoder really start to decode frame
      instead setting at the end.
      
      Even decoder does not have a displayable frame to show and return NULL
      to application, this should be set too.
      
      Change-Id: If0313a834bc64e3b0f05a84f4459d444d9eab0d8
      e3bf55de
  27. 16 Oct, 2014 5 commits
  28. 14 Oct, 2014 1 commit