1. 20 Oct, 2015 1 commit
    • Ronald S. Bultje's avatar
      vp10: clip MVs before adding to find_ref_mvs() list. · 293e20df
      Ronald S. Bultje authored
      This causes the output of find_ref_mvs() to always be unique or zero.
      A nice side-effect of this is that it also causes the output of
      find_ref_mvs_sub8x8() to be unique-or-zero, and it will not ignore
      available candidate MVs under certain conditions.
      
      See issue 1012.
      
      Change-Id: If4792789cb7885dbc9db420001d95f9b91b63bfa
      293e20df
  2. 16 Oct, 2015 1 commit
    • Ronald S. Bultje's avatar
      vp10: allow MV refs to point outside visible image. · dea99899
      Ronald S. Bultje authored
      In VP9, the ref MV had to point to a block that itself fully resided
      within the visible image, i.e. all borders of the image had to be
      within the visible borders of the coded frame. This is somewhat
      illogical, and had obscure side effects, e.g. clamping of fairly
      reasonable motion vectors such as 0,0 were clipped to negative values
      if the block was overhanging on frame edges (such as the last rows
      on 1080p content), which makes no sense whatsoever.
      
      Instead, relax clamping constraints such that the ref MVs are allowed
      to point to blocks exactly outside the visible edges in both Y as well
      as UV planes, including the 8tap filter edges (that's why the offset is
      8 pixels + block size).
      
      See issue 1037.
      
      Change-Id: I2683eb2a18b24955e4dcce36c2940aa2ba3a1061
      dea99899
  3. 12 Oct, 2015 1 commit
  4. 16 Sep, 2015 1 commit
    • Ronald S. Bultje's avatar
      vp10: remove double MV value check. · 43be86db
      Ronald S. Bultje authored
      This has virtually no effect on coding efficiency, but it is more
      logical from a theoretical perspective (since it makes no sense to
      me that you would exclude a MV from a list just because it's sign-
      inversed value is identical to a value already in a list), and it
      also makes the code simpler (it removes a duplicate value check in
      cases where signbias is equal between the two MVs being compared).
      
      See issue 662.
      
      Change-Id: I23e607c6de150b9f11d1372fb2868b813c322d37
      43be86db
  5. 13 Aug, 2015 1 commit
  6. 12 Aug, 2015 2 commits
  7. 22 Jun, 2015 1 commit
  8. 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
  9. 20 May, 2015 1 commit
  10. 29 Apr, 2015 1 commit
    • James Zern's avatar
      vpx_mem: remove vpx_memset · f58011ad
      James Zern authored
      vestigial. replace instances with memset() which they already were being
      defined to.
      
      Change-Id: Ie030cfaaa3e890dd92cf1a995fcb1927ba175201
      f58011ad
  11. 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
  12. 06 Mar, 2015 1 commit
  13. 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
  14. 30 Jan, 2015 1 commit
    • James Zern's avatar
      vp9: rename 'near' parameters · f6c2a6c5
      James Zern authored
      + nearest for consistency
      
      near is a reserved word in windows builds so using it as a parameter
      name may cause build failures with some configurations
      
      Change-Id: Iddf1d4ecdb39843f14e95dbfd9dca55f07f81403
      f6c2a6c5
  15. 23 Jan, 2015 1 commit
  16. 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
  17. 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
      9ce3a7d7
  18. 21 Oct, 2014 1 commit
  19. 10 Oct, 2014 2 commits
  20. 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
  21. 08 Aug, 2014 1 commit
  22. 26 Jun, 2014 1 commit
    • Jingning Han's avatar
      Enable real-time version reference motion vector search · 46ea9ec7
      Jingning Han authored
      This commit enables a fast reference motion vector search scheme.
      It checks the nearest top and left neighboring blocks to decide the
      most probable predicted motion vector. If it finds the two have
      the same motion vectors, it then skip finding exterior range for
      the second most probable motion vector, and correspondingly skips
      the check for NEARMV.
      
      The runtime of speed -5 goes down
      pedestrian at 1080p 29377 ms -> 27783 ms
      vidyo at 720p       11830 ms -> 10990 ms
      i.e., 6%-8% speed-up.
      
      For rtc set, the compression performance
      goes down by about -1.3% for both speed -5 and -6.
      
      Change-Id: I2a7794fa99734f739f8b30519ad4dfd511ab91a5
      46ea9ec7
  23. 09 Apr, 2014 1 commit
  24. 07 Apr, 2014 1 commit
  25. 02 Apr, 2014 1 commit
  26. 28 Mar, 2014 1 commit
  27. 26 Mar, 2014 1 commit
  28. 10 Mar, 2014 1 commit
  29. 28 Feb, 2014 1 commit
    • Dmitry Kovalev's avatar
      Cleaning up vp9_mvref_common.c. · d689f2ad
      Dmitry Kovalev authored
      different_ref_found is always equal to one (if calculated) because
      ref_frame[0] != ref_frame[1] for each mi-block.
      
      Change-Id: Ibd7625b7b29dec2fd3c40edbc3de1169abb78585
      d689f2ad
  30. 19 Feb, 2014 1 commit
    • Dmitry Kovalev's avatar
      Cleaning up vp9_mvref_common.{h, c}. · d43c5cc5
      Dmitry Kovalev authored
      Hiding vp9_find_mv_refs_idx() inside vp9_mvref_common.c, moving definition
      of vp9_find_mv_refs() to vp9_mvref_common.c.
      
      Change-Id: I0c9f34b03648785a7d18edf6d4fddd34e55dfcc5
      d43c5cc5
  31. 13 Feb, 2014 1 commit
    • Yaowu Xu's avatar
      Removed the reset of mode_info from previous frame · 896d79a5
      Yaowu Xu authored
      Prior to this commit, both encoder and decoder reset mode/mv info from
      previous frame in error resilient mode to ensure bitstreams are able to
      decode when there is loss of frame in decoder side. However, this is
      not necessary. This commit changed to remove the reset, so encoder can
      continue to use mode/mv/partition information from previously encoded
      frame without affecting decodeablilty under loss of frame.
      
      Change-Id: I0279f862900dc647fb471ae3389770bb1b9f454f
      896d79a5
  32. 20 Dec, 2013 1 commit
  33. 17 Dec, 2013 1 commit
    • Yaowu Xu's avatar
      Define POSITION to differentiate from MV · 3cce4643
      Yaowu Xu authored
      MV struct was ussed to indicate the postition of a MI_BLOCK with row
      and col components. The expression was confusing, this commit added a
      new stucture "POSITION" with row and col component to better describe
      the position of a mi_block.
      
      Change-Id: I59fdd4b45010fe7d85a8db22a55503265c4f5b2b
      3cce4643
  34. 28 Oct, 2013 1 commit
    • James Zern's avatar
      vp9: add TileInfo · 58a0f6db
      James Zern authored
      replaces use of cur_tile_mi_(row|col)_(start|end) by VP9_COMMON, making
      it less stateful and more reusable for parallel tile decoding
      
      Change-Id: I1df09382b4567a0e5f4434825d47c79afe2399be
      58a0f6db
  35. 30 Sep, 2013 1 commit
  36. 17 Sep, 2013 1 commit
  37. 11 Sep, 2013 1 commit
    • Scott LaVarnway's avatar
      New mode_info_context storage -- undo revert · ac6093d1
      Scott LaVarnway authored
      mode_info_context was stored as a grid of MODE_INFO structs.
      The grid now constists of pointers to MODE_INFO structs.  The
      MODE_INFO structs are now stored as a stream (decoder only),
      eliminating unnecessary copies and is a little more cache
      friendly.
      
      Change-Id: I031d376284c6eb98a38ad5595b797f048a6cfc0d
      ac6093d1
  38. 09 Sep, 2013 1 commit