1. 20 Jun, 2014 1 commit
  2. 13 Jun, 2014 1 commit
    • hkuang's avatar
      Delay decreasing reference count in frame-parallel decoding. · e4c5f7e2
      hkuang authored
      The current decoding scheme will decrease the reference count
      of the output frame when finish decoding. Then the application
      could copy the frame from the decoder buffer to application buffer.
      In frame-parallel decoding, a decoded frame will not be outputted
      until several frames later which depends on thread numbers. So
      the decoded frame's reference count should be decreased only
      after application finish copying the frame out. But due to the
      limitation of vpx_codec_get_frame, decoder could not know when
      application finish decoding. So use a index last_show_frame to
      release the last output frame's reference count.
      
      Change-Id: I403ee0d01148ac1182e5a2d87cf7dcc302b51e63
      e4c5f7e2
  3. 21 May, 2014 1 commit
  4. 20 May, 2014 1 commit
    • hkuang's avatar
      Refactor decode_tiles and loopfilter code. · 20c1edf6
      hkuang authored
      The current decode_tiles decodes the frame one tile by one tile
      and then loopfilter the whole frame or use another worker thread to
      do loopfiltering.
      
      |------|------|------|------|
      |Tile1-|Tile2-|Tile3-|Tile4-|
      |------|------|------|------|
      
      For example, if a tile video has one row and four cols, decode_tiles
      will decode the Tile1, then Tile2, then Tile3, then Tile4.
      And during decode each tile, decode_tile will decode row by row in
      each tile.
      
      For frame parallel decoding, decode_tiles will decode video in row order
      across the tiles. So the order will be:
      "Decode 1st row of Tile1" -> "Decode 1st row of Tile2"
      -> "Decode 1st row of Tile3" -> "Decode 1st row of Tile4"
      -> "Decode 2nd row of Tile1" -> "Decode 2nd row of Tile2"
      -> "Decode 2nd row of Tile3" -> "Decode 2nd row of Tile4"-> "loopfilter 1st row"
      
      Change-Id: I2211f9adc6d142fbf411d491031203cb8a6dbf6b
      20c1edf6
  5. 15 May, 2014 1 commit
  6. 14 May, 2014 2 commits
  7. 12 May, 2014 1 commit
  8. 08 May, 2014 1 commit
    • Dmitry Kovalev's avatar
      Removing VP9DecoderConfig. · 0dacecaf
      Dmitry Kovalev authored
      We only used two members from that struct: max_threads and inv_tile_order.
      Moving them directly to VP9Decoder struct.
      
      Change-Id: If696a4e5b5b41868a55f3cc971e1d7c1dd9d5f69
      0dacecaf
  9. 29 Apr, 2014 1 commit
  10. 25 Apr, 2014 1 commit
  11. 11 Apr, 2014 1 commit
  12. 10 Apr, 2014 1 commit
  13. 08 Apr, 2014 1 commit
  14. 07 Apr, 2014 1 commit
  15. 03 Apr, 2014 1 commit
    • hkuang's avatar
      Code clean up. · 272e030f
      hkuang authored
      No need to check pbi->common.frame_to_show again.
      
      Change-Id: I572ea4afd0d8b6000c0bb7575b7023d75cad5a4e
      272e030f
  16. 01 Apr, 2014 1 commit
  17. 28 Mar, 2014 1 commit
  18. 25 Mar, 2014 2 commits
  19. 24 Mar, 2014 1 commit
  20. 21 Mar, 2014 1 commit
  21. 20 Mar, 2014 2 commits
  22. 19 Mar, 2014 1 commit
  23. 13 Mar, 2014 1 commit
  24. 10 Mar, 2014 1 commit
  25. 06 Mar, 2014 1 commit
  26. 05 Mar, 2014 1 commit
  27. 01 Mar, 2014 1 commit
    • Yaowu Xu's avatar
      Remove vp9_create_common() · 2f4eb5f0
      Yaowu Xu authored
      The function has evolved over time, now only calls vp9_rtcd(), so this
      commit removes the function and changes to call vp9_rtcd() directly.
      
      Change-Id: I8cfa6190daa4b28f6f3d1e11bb3a07f9c95322bf
      2f4eb5f0
  28. 28 Feb, 2014 1 commit
  29. 12 Feb, 2014 1 commit
  30. 10 Feb, 2014 1 commit
    • Frank Galligan's avatar
      Add get release decoder frame buffer functions. · e8e15279
      Frank Galligan authored
      This CL changes libvpx to call a function when a frame buffer
      is needed for decode. Libvpx will call a release callback when
      no other frames reference the frame buffer. This CL adds a
      default implementation of the frame buffer callbacks. Currently
      only VP9 is supported. A future CL will add support for
      applications to supply their own frame buffer callbacks.
      
      Change-Id: I1405a320118f1cdd95f80c670d52b085a62cb10d
      e8e15279
  31. 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
  32. 29 Jan, 2014 1 commit
  33. 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
  34. 10 Dec, 2013 1 commit
  35. 06 Dec, 2013 1 commit
    • Dmitry Kovalev's avatar
      Renaming constants. · 0d4b8d7e
      Dmitry Kovalev authored
      NUM_YV12_BUFFERS        => FRAME_BUFFERS
      ALLOWED_REFS_PER_FRAME  => REFS_PER_FRAME
      NUM_REF_FRAMES_LOG2     => REF_FRAMES_LOG2
      NUM_REF_FRAMES          => REF_FRAMES
      NUM_FRAME_CONTEXTS_LOG2 => FRAME_CONTEXTS_LOG2
      NUM_FRAME_CONTEXTS      => FRAME_CONTEXTS
      
      Change-Id: I4e1ada08f25d8fa30fdf03aebe1b1c9df0f87e63
      0d4b8d7e
  36. 05 Dec, 2013 1 commit
    • 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