1. 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
  2. 28 Jul, 2014 1 commit
  3. 11 Jul, 2014 1 commit
    • hkuang's avatar
      Move vp9_thread.* to common. · 3cffa0c7
      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.*.
      
      (cherry picked from commit 337e8015)
      
      Change-Id: I0587a08447925f4554d7788686a31483c2ae3f37
      3cffa0c7
  4. 02 Jul, 2014 1 commit
    • hkuang's avatar
      Seperate the frame buffers from VP9 encoder/decoder structure. · 28a794f6
      hkuang authored
      Prepare for frame parallel decoding, the frame buffers must be
      separated from the encoder and decoder structure, while the encoder
      and decoder will hold the pointer of the BufferPool.
      
      Change-Id: I172c78f876e41fb5aea11be5f632adadf2a6f466
      28a794f6
  5. 01 Jul, 2014 2 commits
    • Jim Bankoski's avatar
      validate uv block size when reading partition · abf0df08
      Jim Bankoski authored
      Change-Id: I74fc5f1a7bab3128cdd49441b83ec3a25aee65ca
      abf0df08
    • James Zern's avatar
      update vp9_thread.[hc] · e656f44c
      James Zern authored
      pull the latest from WebP, which adds a worker interface abstraction
      allowing an application to override init/reset/sync/launch/execute/end
      
      this has the side effect of removing a harmless, but annoying, TSan
      warning.
      
      Original source:
       http://git.chromium.org/webm/libwebp.git
        100644 blob 08ad4e1fecba302bf1247645e84a7d2779956bc3 src/utils/thread.c
        100644 blob 7bd451b124ae3b81596abfbcc823e3cb129d3a38 src/utils/thread.h
      
      Local modifications:
       - s/WebP/VP9/g
       - camelcase functions -> lower with _'s
       - associate '*' with the variable, not the type
      
      Change-Id: I875ac5a74ed873cbcb19a3a100b5e0ca6fcd9aed
      e656f44c
  6. 30 Jun, 2014 1 commit
  7. 27 Jun, 2014 1 commit
    • Jim Bankoski's avatar
      Better validation of invalid files · 9f37d149
      Jim Bankoski authored
      This patch checks that a decoder never tries to reference frame that's
      outside the range of 2x to 1/16th the size of this frame.  Any attempt
      to do so causes a failure.
      
      Change-Id: I5c98fa7bb95ac4f29146f29dd92b62fe96164e4c
      9f37d149
  8. 25 Jun, 2014 1 commit
    • James Zern's avatar
      vp9: check tile column count · b2b07755
      James Zern authored
      the max is 6. there are assumptions throughout the decode regarding
      this; fixes a crash with a fuzzed bitstream
      
      $ zzuf -s 5861 -r 0.01:0.05 -b 6- \
        < vp90-2-00-quantizer-00.webm.ivf \
        | dd of=invalid-vp90-2-00-quantizer-00.webm.ivf.s5861_r01-05_b6-.ivf \
          bs=1 count=81883
      
      Change-Id: I6af41bb34252e88bc156a4c27c80d505d45f5642
      b2b07755
  9. 20 Jun, 2014 1 commit
  10. 02 Jun, 2014 1 commit
  11. 21 May, 2014 3 commits
  12. 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
  13. 16 May, 2014 1 commit
  14. 15 May, 2014 2 commits
    • Yaowu Xu's avatar
      cleanup -wextra warnings: · 04c40d3d
      Yaowu Xu authored
        vp9_decoder.c
        vp9_dthread.c
      
      Change-Id: Iaafe941545db98e9e3559096a955894646084ac2
      04c40d3d
    • hkuang's avatar
      Refactor calling loopfilter code. · bf8c58be
      hkuang authored
      This change is mainly for a follow CL that will refactor the
      decode_tiles.
      
      Change-Id: I52de6f8dbada75a64d9a94ebb5975136ed0960b4
      bf8c58be
  15. 14 May, 2014 1 commit
  16. 12 May, 2014 2 commits
  17. 09 May, 2014 1 commit
    • Adrian Grange's avatar
      Fix check of debug counts for corrupt frame · 99892e85
      Adrian Grange authored
      Fixes the idecoder in the case where:
        cm->error_resilient_mode == 0, and
        cm->frame_parallel_decoding_mode == 0, but
        new_fb->corrupted == 1.
      
      The assert in debug_check_frame_counts fails to
      take into account the case of a corrupt frame.
      
      Change-Id: Idf318a68458cc88d65d6f3f408a10d8ffe87e43f
      99892e85
  18. 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
  19. 30 Apr, 2014 1 commit
  20. 23 Apr, 2014 2 commits
  21. 09 Apr, 2014 2 commits
  22. 08 Apr, 2014 3 commits
    • Deb Mukherjee's avatar
      High-level hooks for Profile 2 (10/12 bit) · d35df2d8
      Deb Mukherjee authored
      Adds some high-level hooks for profile 2 before further
      progress on the implementation.
      
      According to the definitiion in this patch:
      1. Profile 2 only supports 10 or 12 bit color but not 8
      2. Profile 2 supports all color sampling modes: 444, 422 and 420,
      and alpha plane.
      3. Profile 3 is currently undefined.
      
      Please consider the definition carefully and suggest modifications
      to the definition as needed.
      
      Change-Id: I5b284fc679e54ac5aee171af72fa7994cfd28995
      d35df2d8
    • Frank Galligan's avatar
      Fix decoder resolution change with tiles · 6ae58931
      Frank Galligan authored
      There was a bug with the decoder that if you started the decoder
      with more threads than the first frame had tile columns. Afterwards
      tried to decode a frame with more tile columns than the first frame,
      the decoder would hang. E.g. run vpxdec --threads=4. The first frame
      had two tile columns, then the next key frame had 4 tile columns, the
      decoder would hang. If you started with 4 tiles and switched to 2
      tiles the decoder would be fine. The issue is that the worker the thread
      loop is using is stale.
      
      I added a test vector "vp90-2-14-resize-848x480-1280x720.webm" that
      exhibited the bug.
      
      Change-Id: I7bdd47241a52ac0fe1c693a609bc779257e94229
      6ae58931
    • Dmitry Kovalev's avatar
      Renaming VP9D_COMP & VP9Decompressor to VP9Decoder. · 56c2f41c
      Dmitry Kovalev authored
      Change-Id: Ieb9b455b8aaef9884391021b7f640ef24c554687
      56c2f41c
  23. 07 Apr, 2014 1 commit
  24. 03 Apr, 2014 1 commit
  25. 02 Apr, 2014 2 commits
  26. 01 Apr, 2014 1 commit
  27. 28 Mar, 2014 1 commit
  28. 26 Mar, 2014 1 commit
  29. 25 Mar, 2014 2 commits