1. 17 Nov, 2015 1 commit
    • hui su's avatar
      Merge MISC_FIXES · 66f2f65e
      hui su authored
      Remove MISC_FIXES flags except for the changes on MV precision, which
      has a 0.1% performance drop.
      
      On derflr, the impact is -0.012%.
      
      Change-Id: I0a74e5a212dd0cb827192a318c92a714c9681e45
      66f2f65e
  2. 09 Nov, 2015 1 commit
    • Johann's avatar
      Release v1.5.0 · cbecf57f
      Johann authored
      Javan Whistling Duck release.
      
      Change-Id: If44c9ca16a8188b68759325fbacc771365cb4af8
      cbecf57f
  3. 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
  4. 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
  5. 12 Oct, 2015 1 commit
  6. 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
  7. 13 Aug, 2015 2 commits
  8. 12 Aug, 2015 2 commits
  9. 22 Jun, 2015 1 commit
  10. 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
  11. 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
  12. 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
  13. 23 Jan, 2015 1 commit
  14. 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
  15. 21 Oct, 2014 1 commit
  16. 12 Aug, 2014 1 commit
  17. 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
  18. 10 Mar, 2014 1 commit
  19. 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
  20. 10 Feb, 2014 1 commit
  21. 24 Jan, 2014 1 commit
  22. 21 Jan, 2014 1 commit
    • hkuang's avatar
      Seperate the border size for encoder and decoder. · 437004c7
      hkuang authored
      Encoder's boarder is still 160, while decoder's boarder will be 32.
      With on demand and separate boarder buffer for boarder extension.
      The decoder's boarder does not need to to 160 anymore.
      
      Change-Id: I93d5aaff15a33a2213e9761eaa37c5f2870747db
      437004c7
  23. 20 Dec, 2013 1 commit
  24. 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
  25. 23 Aug, 2013 1 commit
    • Dmitry Kovalev's avatar
      Cleanup in mvref_common.{h, c}. · 21d8e859
      Dmitry Kovalev authored
      Making code more compact, adding consts, removing redundant arguments,
      adding do/while(0) for macros.
      
      Change-Id: Ic9ec0bc58cee0910a5450b7fb8cfbf35fa9d0d16
      21d8e859
  26. 04 Aug, 2013 1 commit
    • Jim Bankoski's avatar
      reworked find_mv_ref · f703f987
      Jim Bankoski authored
      This is an attempt at rewriting vp9_find_mv_refs_idx.   I believe that it gains
      about 1-2% decode speed
      
      Change-Id: Ia5359c94ce9bb43b32652890e605e9a385485c1b
      f703f987
  27. 31 Jul, 2013 1 commit
    • Dmitry Kovalev's avatar
      Removing get_mi_{row, col} functions. · 9239e965
      Dmitry Kovalev authored
      Passing mi_row and mi_col parameters to functions explicitly. Removing
      unused xd argument from scale_mv function.
      
      Change-Id: Icb4c495ec72d26fb066c14470d3ae0b741fbf18a
      9239e965
  28. 26 May, 2013 1 commit
    • Ronald S. Bultje's avatar
      Remove splitmv. · 5cac6607
      Ronald S. Bultje authored
      Also do per-partition motion vector referencing in <sb8x8 partitions,
      and adjust mvref finding for sub8x8 partitions.
      
      Change-Id: Id3ed1ed4d2a8910d11d327db6cc63b8eb79f941f
      5cac6607
  29. 05 Feb, 2013 1 commit
    • Ronald S. Bultje's avatar
      [WIP] Add column-based tiling. · 1407bdc2
      Ronald S. Bultje authored
      This patch adds column-based tiling. The idea is to make each tile
      independently decodable (after reading the common frame header) and
      also independendly encodable (minus within-frame cost adjustments in
      the RD loop) to speed-up hardware & software en/decoders if they used
      multi-threading. Column-based tiling has the added advantage (over
      other tiling methods) that it minimizes realtime use-case latency,
      since all threads can start encoding data as soon as the first SB-row
      worth of data is available to the encoder.
      
      There is some test code that does random tile ordering in the decoder,
      to confirm that each tile is indeed independently decodable from other
      tiles in the same frame. At tile edges, all contexts assume default
      values (i.e. 0, 0 motion vector, no coefficients, DC intra4x4 mode),
      and motion vector search and ordering do not cross tiles in the same
      frame.
      t log
      
      Tile independence is not maintained between frames ATM, i.e. tile 0 of
      frame 1 is free to use motion vectors that point into any tile of frame
      0. We support 1 (i.e. no tiling), 2 or 4 column-tiles.
      
      The loopfilter crosses tile boundaries. I discussed this briefly with Aki
      and he says that's OK. An in-loop loopfilter would need to do some sync
      between tile threads, but that shouldn't be a big issue.
      
      Resuls: with tiling disabled, we go up slightly because of improved edge
      use in the intra4x4 prediction. With 2 tiles, we lose about ~1% on derf,
      ~0.35% on HD and ~0.55% on STD/HD. With 4 tiles, we lose another ~1.5%
      on derf ~0.77% on HD and ~0.85% on STD/HD. Most of this loss is
      concentrated in the low-bitrate end of clips, and most of it is because
      of the loss of edges at tile boundaries and the resulting loss of intra
      predictors.
      
      TODO:
      - more tiles (perhaps allow row-based tiling also, and max. 8 tiles)?
      - maybe optionally (for EC purposes), motion vectors themselves
        should not cross tile edges, or we should emulate such borders as
        if they were off-frame, to limit error propagation to within one
        tile only. This doesn't have to be the default behaviour but could
        be an optional bitstream flag.
      
      Change-Id: I5951c3a0742a767b20bc9fb5af685d9892c2c96f
      1407bdc2
  30. 18 Dec, 2012 1 commit
  31. 30 Nov, 2012 1 commit
  32. 28 Nov, 2012 1 commit
  33. 27 Nov, 2012 1 commit
    • John Koleszar's avatar
      Add vp9_ prefix to all vp9 files · fcccbcbb
      John Koleszar authored
      Support for gyp which doesn't support multiple objects in the same
      static library having the same basename.
      
      Change-Id: Ib947eefbaf68f8b177a796d23f875ccdfa6bc9dc
      fcccbcbb
  34. 07 Nov, 2012 1 commit
  35. 01 Nov, 2012 1 commit
  36. 29 Oct, 2012 1 commit
    • Paul Wilkins's avatar
      Name space clean up. · a99a2c36
      Paul Wilkins authored
      Preparation for project restructuring.
      Added vp9_ prefix on some function names that have global scope.
      Added static declaration on some that dont.
      
      Change-Id: If072f78b4300e8c17cfeed82c5d17b59946dcc5e
      a99a2c36
  37. 07 Sep, 2012 2 commits
    • Paul Wilkins's avatar
      Partial merge of NEWBESTREFMV and NEW_MVREF. · 778ec421
      Paul Wilkins authored
      This commit merges those parts of the CONFIG_NEW_MVREF
      that specifically relate to choosing a better set of candidate
      MV references into the NEWBESTREFMV experiment.
      
      CONFIG_NEW_MVREF will then be used for changes relating
      to the explicit coding of a cost optimized MV reference in the
      bitstream as part of MV coding.
      
      Change-Id: Ied982c0ad72093eab29e38b8cd74d5c3d7458b10
      778ec421
    • Paul Wilkins's avatar
      MV reference changes · 38e1c791
      Paul Wilkins authored
      Extend experiment to use both vectors from MBs
      coded using compound prediction as candidates.
      
      In final sort only consider best 4 candidates
      for now but make sure 0,0 is always one of them.
      
      Other minor changes to new MV reference code.
      Pass in Mv list to vp8_find_best_ref_mvs().
      
      Change-Id: Ib96220c33c6b80bd1d5e0fbe8b68121be7997095
      38e1c791