1. 08 Aug, 2014 1 commit
  2. 08 Jul, 2014 1 commit
  3. 07 Jul, 2014 1 commit
    • hkuang's avatar
      Move vp9_thread.* to common. · 337e8015
      hkuang authored
      Prepare for frame parallel decoding, the reference count buffers
      need to be protected by mutex. Move vp9_thread.* to common
      folder so that those buffers could use cross-platform mutex
      from vp9_thread.*.
      
      Change-Id: I541277cf15eefed6641555944f67f4a0bcdc8154
      337e8015
  4. 12 Jun, 2014 1 commit
    • hkuang's avatar
      Initially add frame_parallel_decode flag. · 537cb060
      hkuang authored
      Stub flag temporarily set to 0 until frame parallel
      decoding implementations are finished.
      
      Change-Id: I8ab768138e8f8f8eb809875703b2502ea0fe7cea
      537cb060
  5. 21 May, 2014 1 commit
  6. 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
  7. 14 May, 2014 2 commits
  8. 12 May, 2014 1 commit
  9. 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
  10. 23 Apr, 2014 1 commit
  11. 11 Apr, 2014 1 commit
  12. 09 Apr, 2014 1 commit
  13. 08 Apr, 2014 1 commit
  14. 07 Apr, 2014 1 commit
  15. 28 Mar, 2014 1 commit
  16. 25 Mar, 2014 1 commit
  17. 21 Mar, 2014 2 commits
  18. 20 Mar, 2014 2 commits
  19. 19 Mar, 2014 1 commit
  20. 10 Mar, 2014 1 commit
  21. 06 Mar, 2014 1 commit
  22. 05 Mar, 2014 1 commit
  23. 28 Feb, 2014 1 commit
  24. 24 Jan, 2014 1 commit
  25. 29 Sep, 2013 1 commit
  26. 24 Sep, 2013 1 commit
  27. 02 Apr, 2013 1 commit
  28. 14 Mar, 2013 1 commit
    • John Koleszar's avatar
      Add VP9_GET_REFERENCE control · b3c350a1
      John Koleszar authored
      This is like VP8_COPY_REFERENCE, but returns a pointer to the reference
      frame rather than a copy of it. This is useful when the application
      doesn't know what the size of the reference is, as is the case when
      scaling is in effect.
      
      Change-Id: I63667109f65510364d0e397ebe56217140772085
      b3c350a1
  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. 17 Dec, 2012 1 commit
  32. 30 Nov, 2012 1 commit
  33. 28 Nov, 2012 1 commit
  34. 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
  35. 15 Nov, 2012 1 commit
    • John Koleszar's avatar
      Pack invisible frames without lengths · 64bcffc1
      John Koleszar authored
      Modify the decoder to return the ending position of the bool decoder and
      use that as the starting position for the next frame.
      
      The constant-space algorithm for parsing the appended frame lengths is
      O(n^2), which is a potential DoS concern if n is unbounded. Revisit
      the appended lengths for use as partition lengths when multipartition
      support is added.
      
      In addition, this allows decoding of raw streams outside of a container
      without additional framing information, though it's insufficient to
      be able to remux said stream into a container.
      
      Change-Id: I71e801a9c3e37abe559a56a597635b0cbae1934b
      64bcffc1
  36. 01 Nov, 2012 2 commits