1. 31 Jan, 2014 2 commits
    • Yunqing Wang's avatar
      vp9 decoder: row-based multi-threaded loopfilter · 903801f1
      Yunqing Wang authored
      Implemented parallel loopfiltering, which uses existing tile-
      decoding threads. Each thread works on one row, and when that row
      is loopfiltered, it moves to next unattended row. To ensure the
      correct filtering order, threads are synchronized and one
      superblock is filtered only if the superblocks it depends on are
      filtered already.
      
      To reduce synchronization overhead and speed up the decoder, we use
      nsync > 1 for high resolution.
      
      Performance tests:
      1. on desktop:
      8-tile 4k video using 8 threads, speedup: 70% - 80%
      4-tile HD video using 4 threads, speedup: ~35%
      2. on mobile device(Nexus 7):
      4-tile 1080p video using 4 threads, speedup: 18% - 25%
      4-tile 1080p video using 2 threads, speedup: 10% - 15%
      
      Change-Id: If54b4a11960dd706c22d5ad145ad94156031f36a
      903801f1
    • Adrian Grange's avatar
      Disable update of last_show_frame for existing frame · 64e25974
      Adrian Grange authored
      When showing a previously decoded frame, i.e. when
      show_existing_frame=1, the update of the
      last_show_frame flag must be disabled.
      
      This is to ensure that the last_show_frame flag
      reflects the state of the flag for the immediately
      previously decoded frame rather then the value that
      was forced to ensure that a previously decoded frame
      would be displayed.
      
      This patch also adds a test vector to verify that the
      display_existing_frame flag works as expected. Code
      for generating the test vector can be found in this
      patch:
      https://gerrit.chromium.org/gerrit/#/c/68581/
      
      (Bug originally reported by Alexander Voronov
      <ru.xalba@gmail.com>).
      
      Change-Id: I731d288fba02088959f7fcc87707137fffc6acf5
      64e25974
  2. 25 Jan, 2014 1 commit
    • Dmitry Kovalev's avatar
      Removing subpix_fn_table struct. · 86915654
      Dmitry Kovalev authored
      We don't use different filter kernels for x and y, it is always one kernel
      for both directions.
      
      Change-Id: Iefcbb02ec74bf46ea20d9dca672a3efd5d631517
      86915654
  3. 24 Jan, 2014 3 commits
    • Dmitry Kovalev's avatar
      Renaming INTERPOLATION_TYPE to INTERP_FILTER. · 4264c938
      Dmitry Kovalev authored
      Corresponding renames:
        subpel_kernel              => interp_kernel
        vp9_get_filter_kernel()    => vp9_get_interp_kernel()
        pred_filter_type           => pred_interp_filter
        adaptive_pred_filter_type  => adaptive_pred_interp_filter
        mcomp_filter_type          => interp_filter
        read_interp_filter_type()  => read_interp_filter()
        write_interp_filter_type() => write_interp_filter()
        fix_mcomp_filter_type()    => fix_interp_filter()
      
      Change-Id: I1fa61fa1dc81ebbf043457c3ee2d8d4515bee6d3
      4264c938
    • Frank Galligan's avatar
      Revert external frame buffer code. · b1c72b63
      Frank Galligan authored
      A future CL will add external frame buffers
      differently.
      
      Squash commit of four revert commits:
      Revert "Increase required number of external frame buffers"
      
      This reverts commit 9e41d569.
      
      Revert "Add external constants."
      
      This reverts commit bbf53047.
      
      Revert "Add frame buffer lru cache."
      
      This reverts commit fbada948.
      
      Conflicts:
      	vpxdec.c
      
      Change-Id: I76fe42419923a6ea6c75d9997cbbf941d73d3005
      
      Revert "Add support to pass in external frame buffers."
      
      This reverts commit 10f89169.
      
      Conflicts:
      	test/external_frame_buffer_test.cc
      	vp9/common/vp9_alloccommon.c
      	vp9/common/vp9_reconinter.c
      	vp9/decoder/vp9_decodeframe.c
      	vp9/encoder/vp9_onyx_if.c
      	vp9/vp9_dx_iface.c
      	vpx/vpx_decoder.h
      	vpx/vpx_external_frame_buffer.h
      	vpx_scale/generic/yv12config.c
      	vpxdec.c
      
      Change-Id: I7434cf590f1c852b38569980e4247fad0d939c2e
      b1c72b63
    • James Zern's avatar
      vp9/decoder: add extern "C" to headers · 40aa910c
      James Zern authored
      Change-Id: I0e6aa00f220280e22d30d098545265835d0c1079
      40aa910c
  4. 23 Jan, 2014 1 commit
    • Yaowu Xu's avatar
      Changed to prevent decoder crash · 10b0813a
      Yaowu Xu authored
      The change prevent a decoder crash for invalid stream with negative
      size.
      
      Change-Id: I7411765f3524c783058fa3d436549be4e75d8969
      10b0813a
  5. 21 Jan, 2014 2 commits
  6. 17 Jan, 2014 1 commit
    • Jingning Han's avatar
      Deprecate the use of best_mv in decoding process · 318e177f
      Jingning Han authored
      This commit removes the use of best_mv in the decoding process. This
      variable can be replaced with nearest_mv. It saves a few cycles on
      assigning the values for best_mv.
      
      Change-Id: Ic183f9c1fb615c54efd7e6ccfedcf09d493435e4
      318e177f
  7. 04 Jan, 2014 1 commit
  8. 03 Jan, 2014 1 commit
    • Dmitry Kovalev's avatar
      Adding RefBuffer struct. · ba41e9d4
      Dmitry Kovalev authored
      Adding RefBuffer to simplify reference buffer management. The struct has a
      pointer to image data and scale factors relative to the current frame.
      
      Change-Id: If38eb1491ff687cc11428aee339f3e052e2c5d9e
      ba41e9d4
  9. 20 Dec, 2013 3 commits
  10. 18 Dec, 2013 2 commits
    • Johann's avatar
      Cast away Windows warning · dc2c62eb
      Johann authored
      Subtracting the pointers promoted to a signed type.
      
      Change-Id: Ied0e822a1756ed7b2f514efafcb6dce4efb9b9d6
      dc2c62eb
    • Johann's avatar
      Fix incorrect size reading · 85770264
      Johann authored
      Guard against incorrect size values moving *data past data_end.
      
      Check read length against the difference of the buffers.
      
      Change-Id: Ie0b54e2db517fd41a0f3ceb23402ee44839a4739
      85770264
  11. 16 Dec, 2013 4 commits
  12. 13 Dec, 2013 2 commits
  13. 11 Dec, 2013 2 commits
    • James Zern's avatar
      vp9 mt decode: reorder tile decode · 345fbfef
      James Zern authored
      reorder the tiles based on size and their presumed complexity. this
      minimizes the cases where the main thread is waiting on a worker to
      complete.
      
      Change-Id: Ie80642c6a1d64ece884f41683d23a3708ab38e0c
      345fbfef
    • Dmitry Kovalev's avatar
      Cleaning up vp9_append_sub8x8_mvs_for_idx(). · 098d13ba
      Dmitry Kovalev authored
      Replacing if-else with switch statement, reordering function arguments.
      
      Change-Id: I4825d2ef311ba8999b6d4ceb0eef003587a13434
      098d13ba
  14. 10 Dec, 2013 2 commits
  15. 09 Dec, 2013 2 commits
  16. 06 Dec, 2013 6 commits
  17. 05 Dec, 2013 3 commits
    • Tero Rintaluoma's avatar
      Fix show existing frame · 047b0b01
      Tero Rintaluoma authored
      - Disable mode info update in case where current frame is coded
        as "show existing frame".
      - Should fix issue 676.
      
      Change-Id: Ibee681850eb307f982da6528d3e31cb94f881c08
      047b0b01
    • Dmitry Kovalev's avatar
      Cleaning up vp9_detokenize.c file. · 934e10d0
      Dmitry Kovalev authored
      Using consistent names (block_idx => block, dqcoeff_ptr => dqcoeff,
      pt => ctx), inlining get_tx_eob() call.
      
      Change-Id: I05208e57df81bbb8f25b8274684a48192e9de464
      934e10d0
    • Frank Galligan's avatar
      Fix the initial references to frame buffers. · 9ed616a5
      Frank Galligan authored
      The old code would start in a mixed state, where all the reference
      frames were pointing to frame buffer 0, but the reference counts
      were 0. This is why we needed special code for the first frame.
      
      Change-Id: I734961012917654ff8c0c8b317aac00ab75ded1a
      9ed616a5
  18. 04 Dec, 2013 2 commits
    • Dmitry Kovalev's avatar
      Moving eob array to the encoder. · f00d157c
      Dmitry Kovalev authored
      In the decoder we don't need to save eobs, we can pass eob as an argument.
      That's why removing eob arrays from VP9Decompressor and TileWorkerData,
      and moving eob pointer from macroblockd_plane to macroblock_plane.
      
      Change-Id: I8eb919acc837acfb3abdd8319af63d1bbca8217a
      f00d157c
    • Dmitry Kovalev's avatar
      Cleaning up vp9_entropy.h file. · 8e89e2f2
      Dmitry Kovalev authored
      Renaming constants for consistency:
        DCT_VAL_CATEGORY1 => CATEGORY1_TOKEN
        DCT_VAL_CATEGORY2 => CATEGORY2_TOKEN
        DCT_VAL_CATEGORY3 => CATEGORY3_TOKEN
        DCT_VAL_CATEGORY4 => CATEGORY4_TOKEN
        DCT_VAL_CATEGORY5 => CATEGORY5_TOKEN
        DCT_VAL_CATEGORY6 => CATEGORY6_TOKEN
        DCT_EOB_TOKEN     => EOB_TOKEN
        DCT_EOB_MODEL_TOKEN => EOB_MODEL_TOKEN
        MAX_ENTROPY_TOKENS => ENTROPY_TOKENS
      
      Moving constants:
        INTER_MODE_CONTEXTS from vp9_entropy.h to vp9_blockd.h.
        EOSB_TOKEN from vp9_entropy.h to vp9_tokenize.h
      
      Change-Id: I5fcbf081318e1d365792b6d290a930c6cb0f3fc2
      8e89e2f2