1. 04 Mar, 2015 2 commits
    • hkuang's avatar
      Fix variable shadowing. · 31fae6ac
      hkuang authored
      Change-Id: I287c61ad4aa85654aef3c871a62131bcd0d891ac
    • 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
  2. 17 Feb, 2015 1 commit
    • hkuang's avatar
      Fix the frame parallel invalid file test failure on ARM. · 2fa9e9e2
      hkuang authored
      There is a corner case that when a frame is corrupted, the following
      inter frame decode worker will miss the previous failure. To solve
      this problem, a need_resync flag needs to be added to master thread
      to keep control of that.
      Change-Id: Iea9309b2562e7b59a83dd6b720607410286c90a6
  3. 13 Feb, 2015 2 commits
  4. 09 Feb, 2015 1 commit
    • hkuang's avatar
      Set the maximum decode threads to be 8. · dd88f482
      hkuang authored
      This will fix the frame parallel decode hang on windows
      due to not enough semaphores.
      This will also make the frame parallel decode safer as
      the number of frame buffers could only support maximum
      8 threads.
      Change-Id: Id9ef50692819dcbebbd74a0aabffbfb3f39a4309
  5. 07 Feb, 2015 1 commit
  6. 04 Feb, 2015 1 commit
    • hkuang's avatar
      Fix a thread lost bug in frame parallel decode. · b104b840
      hkuang authored
      After syncing the frame worker thread, avaiable thread count should
      increase by 1 even the worker thread does not have displayable frame
      to output.
      Change-Id: I9eeb87720fed82dfe38555286833ff88e8a8e746
  7. 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:"""
      This reverts commit a18da976.
      Change-Id: I361442ffec1586d036ea2e0ee97ce4f077585f02
  8. 23 Jan, 2015 1 commit
  9. 16 Jan, 2015 1 commit
  10. 06 Jan, 2015 1 commit
    • Yaowu Xu's avatar
      Properly validate data size · 9c061ef5
      Yaowu Xu authored
      With "show_existing_frame" frames:
      Minimum data size for profile 0 and 1 is 1 byte (8bits)
      Minimum data size for profile 2 and 3 is 2 bytes (9bits)
      Minimum data size is 8 bytes.
      This resolves the VP9 failure in fuzzing test build #56.
      Change-Id: I146d9d37688f535dd68d24aacc76d464ccffdf04
  11. 15 Dec, 2014 2 commits
  12. 12 Dec, 2014 2 commits
  13. 08 Dec, 2014 1 commit
  14. 14 Nov, 2014 1 commit
  15. 22 Oct, 2014 1 commit
    • 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
  16. 29 Sep, 2014 1 commit
  17. 04 Sep, 2014 1 commit
  18. 03 Sep, 2014 1 commit
  19. 02 Sep, 2014 1 commit
    • Deb Mukherjee's avatar
      Adds config opt for highbitdepth + misc. vpx · 5acfafb1
      Deb Mukherjee authored
      Adds config parameter vp9_highbitdepth, to support highbitdepth profiles.
      Also includes most vpx level high bit-depth functions. However
      encode/decode in the highbitdepth profiles will not work until
      the rest of the code is in place.
      Change-Id: I34c53b253c38873611057a6cbc89a1361b8985a6
  20. 28 Aug, 2014 1 commit
    • Dmitry Kovalev's avatar
      Removing alg_priv from vpx_codec_priv struct. · 73edeb03
      Dmitry Kovalev authored
      In order to understand memory layout consider the declaration of the
      following structs. The first one is a part of our API:
      struct vpx_codec_ctx {
        // ...
        struct vpx_codec_priv *priv;
      The second one is defined in vpx_codec_internal.h:
      struct vpx_codec_priv {
        // ...
      The following struct is defined 4 times for encoder/decoder VP8/VP9:
      struct vpx_codec_alg_priv {
        struct vpx_codec_priv base;
        // ... 
      Private data allocation for the given ctx:
      struct vpx_codec_ctx *ctx = <get>
      struct vpx_codec_alg_priv *alg_priv = <allocate>
      ctx->priv = (struct vpx_codec_priv *)alg_priv;
      The cast works because vpx_codec_alg_priv has a
      vpx_codec_priv instance as a first member 'base'.
      Change-Id: I10d1afc8c9a7dfda50baade8c7b0296678bdb0d0
  21. 21 Aug, 2014 1 commit
  22. 20 Aug, 2014 1 commit
  23. 18 Aug, 2014 1 commit
    • Minghai Shang's avatar
      [spatial svc]Add a few different encode frame tests. · e1b5d248
      Minghai Shang authored
      1. Clean the code for encode frame tests
      2. Add encode w/ and w/o alt reference frame test
      3. Add encode SNR layers test
      4. Add encode multiple layers but decode partial layers test
      Change-Id: Ibd2c9bc02525db584a6f931a98405f2d851b3cd6
  24. 13 Aug, 2014 1 commit
  25. 08 Aug, 2014 1 commit
  26. 07 Aug, 2014 2 commits
  27. 06 Aug, 2014 1 commit
    • Hangyu Kuang's avatar
      Make the api behavior conform to api spec. · 70500747
      Hangyu Kuang authored
      When no more data is available, vpx_codec_decode should
      be called with NULL as data and 0 as data_sz.
      vpx_codec_get_frame iterates over a list of the frames
      available for display. The iterator storage should be initialized
      to NULL to start the iteration. Iteration is complete when this
      function returns NULL.
      Also change the unit test to conform to the api spec.
      Change-Id: I4b258b309f5df3d37d10c82f01492c0394181c2a
  28. 05 Aug, 2014 1 commit
  29. 31 Jul, 2014 1 commit
  30. 21 Jul, 2014 1 commit
  31. 18 Jul, 2014 1 commit
  32. 08 Jul, 2014 1 commit
  33. 03 Jul, 2014 1 commit
    • hkuang's avatar
      ctrl_get_reference does not need user_priv. · 10aa23f7
      hkuang authored
      The relationship of the user private data at runtime
      is not preserved from decode() to this call which may
      occur at an unknown point in the future
      Change-Id: Ia7eb25365c805147614574c3af87aedbe0305fc6
  34. 02 Jul, 2014 2 commits