1. 14 Sep, 2015 1 commit
    • Ronald S. Bultje's avatar
      vp10: fix entropy counts for the hp bit. · 1e9e9ce2
      Ronald S. Bultje authored
      The counts didn't take usehp into account, which means that if the
      scope of the refmv is too large for the hp bit to be coded, the value
      (always 1) is still included in the stats. Therefore, the final
      counts will not reflect the entropy of the coded bits, but rather the
      entropy of the combination of coded bits and the implied value (which
      is always 1). Fix that by only including counts if the hp bit is
      actually coded.
      
      See issue 1060.
      
      Change-Id: I19a3adda4a8662a05f08a9e58d7e56ff979be11e
      1e9e9ce2
  2. 04 Sep, 2015 1 commit
    • Ronald S. Bultje's avatar
      Make update_map/temporal_update fields implicit for keyframes. · d88cee37
      Ronald S. Bultje authored
      These frame types cannot make bitstream parsing depend on previous
      frames, so the hypothetical combinations of e.g. keyframe=1 and
      update_map=0 or keyframe=1 and temporal_update=1 are non-sensical.
      Therefore, make it impossible to code such combinations in the vp10
      bitstream header.
      
      See issue 1044.
      
      Change-Id: I3f0a83d5c7e3989541a469a909471424a285239d
      d88cee37
  3. 31 Aug, 2015 1 commit
  4. 27 Aug, 2015 1 commit
  5. 13 Aug, 2015 2 commits
  6. 12 Aug, 2015 2 commits
  7. 06 Aug, 2015 1 commit
  8. 21 Jul, 2015 1 commit
    • Yaowu Xu's avatar
      vpx_dsp/bitreader.h: vp9_->vpx_ · bf82514b
      Yaowu Xu authored
      Replace vp9_ in names to vpx_ as they are not codec specific.
      
      Change-Id: I2e583aa63dee769353ada4b42417aa15c4074ebb
      bf82514b
  9. 17 Jul, 2015 1 commit
  10. 09 Jul, 2015 1 commit
  11. 07 Jul, 2015 1 commit
    • James Zern's avatar
      vp9_entropymv: remove vp9_get_mv_mag() · c6d90f05
      James Zern authored
      inline the code directly in read_mv_component(), the only place where it
      was being used; this removes a function call in a hot function
      
      Change-Id: I66f99c0c9ce3bc310101dbca4a470f023cc6fb55
      c6d90f05
  12. 22 Jun, 2015 1 commit
  13. 16 Jun, 2015 2 commits
  14. 11 Jun, 2015 2 commits
  15. 08 Jun, 2015 1 commit
    • Scott LaVarnway's avatar
      Update use_prev_frame_mvs flag in decoder. · c9976b32
      Scott LaVarnway authored
      Added check to see if last frame was all intra.  This will
      eliminate two checks in find_mv_refs_idx().  Also, do not
      update the frame mvs if the current frame is all intra.
      
      This improved performance on material with frequent
      intra-only frames.
      
      Change-Id: I44a4042c3670ab0d38439d565062a0e2a1ba9d1e
      c9976b32
  16. 04 Jun, 2015 1 commit
    • Scott LaVarnway's avatar
      Reducing size of MODE_INFO struct · baaaa575
      Scott LaVarnway authored
      Reduced size from 124 bytes to 104 bytes.  For decode only builds,
      it is reduced to 68 bytes.
      
      Change-Id: If9e6b92285459425fa086ab5a743d0a598a69de3
      baaaa575
  17. 02 Jun, 2015 1 commit
  18. 01 May, 2015 1 commit
  19. 21 Apr, 2015 1 commit
    • Scott LaVarnway's avatar
      Revert "Remove mi_grid_* structures." · 8b17f7f4
      Scott LaVarnway authored
      (see I3a05cf1610679fed26e0b2eadd315a9ae91afdd6)
      
      For the test clip used, the decoder performance improved by ~2%.
      This is also an intermediate step towards adding back the
      mode_info streams.
      
      Change-Id: Idddc4a3f46e4180fbebddc156c4bbf177d5c2e0d
      8b17f7f4
  20. 09 Mar, 2015 1 commit
  21. 06 Mar, 2015 1 commit
  22. 03 Feb, 2015 1 commit
    • Yunqing Wang's avatar
      vp9_dthread: pass frame counts to decoder functions · 85a9bc04
      Yunqing Wang authored
      The current multi-threaded tile decoder requires that the videoes
      are encoded with frame_parallel_decoding_mode = 1. This requirement
      is not necessary, and is better to be removed. This patch includes
      the first part of the work.
      
      Change-Id: Ic7695fb3cfe13f9022582c9f0edd2aa6e2e36d28
      85a9bc04
  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. 23 Jan, 2015 1 commit
  25. 19 Dec, 2014 1 commit
  26. 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
  27. 05 Nov, 2014 1 commit
  28. 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
  29. 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
  30. 10 Oct, 2014 1 commit
    • hkuang's avatar
      Remove extra line. · dbe91de6
      hkuang authored
      Change-Id: I5e79c276d8953ae17cd35b2846e6e40660c037c3
      dbe91de6
  31. 09 Oct, 2014 2 commits
  32. 20 Sep, 2014 1 commit
    • hkuang's avatar
      Remove mi_grid_* structures. · c70cea97
      hkuang authored
      mi_grid_* are arrays of pointer to pointer. They save the pointers that point
      to the MIs in cm->mi. But they are unnecessary and complicated. The original
      goal was to remove MODE_INFO_t copy. But with an extra MODE_INFO_t pointer
      inside MODE_INFO_t, same goal could be achieved.
      
      This commit totally removes the mi_grid_* structures. But there are still
      many dummy MODE_INFO_t inside cm->mi which are a waste of memory. Next commit
      will do on-demand MODE_INFO_t allocation in order to save these memories.
      
      Change-Id: I3a05cf1610679fed26e0b2eadd315a9ae91afdd6
      c70cea97
  33. 28 Jul, 2014 1 commit
    • hkuang's avatar
      Add segmentation map array for current and last frame segmentation. · 7eca0867
      hkuang authored
      The original implementation only allocates one segmentation map and this
      works fine for serial decode. But for frame parallel decode,  each thread
      need to have its own segmentation map and the last frame segmentation map
      should be provided from last frame decoding thread.
      
      After finishing decoding a frame, thread need to serve the old segmentation
      map that associate with the previous decoded frame. The thread also need to
      use another segmentation map for decoding the current frame.
      
      Change-Id: I442ddff36b5de9cb8a7eb59e225744c78f4492d8
      7eca0867
  34. 24 Jul, 2014 1 commit
    • Yaowu Xu's avatar
      Changed validation of reference frame size · 9261e1aa
      Yaowu Xu authored
      A previous change, https://gerrit.chromium.org/gerrit/#/c/70632,
      introduced a size validation for reference frames to insuare the
      input stream is a valid VP9 stream. However, the logic requiring
      all reference frames have valid size turned out to be too strict.
      
      In this commit, we modify the validation to require one of the
      reference frame has valid dimension. In addition, the decoder
      reports error whenever it detects the use of reference frame
      with invalid scalig ratio.
      
      Change-Id: If8efc312244087556cfe00f1fcbdff811268ebad
      9261e1aa