1. 05 Dec, 2018 2 commits
  2. 04 Dec, 2018 2 commits
    • Janne Grunau's avatar
      frame-mt: drain delayed pictures fully before returning -EAGAIN · 7718c464
      Janne Grunau authored
      Fixes #211, dav1d_get_picture starts draining delayed pictures when it
      gets called multiple times without dav1d_send_data call in between.
      7718c464
    • Janne Grunau's avatar
      frame-mt: output delayed frames as soon as possible · b735b80b
      Janne Grunau authored
      c->out can hold a valid picture on bitstream errors after 4903d87b
      when frame multi-threading is used. Output this picture instead of
      returning the return value of dav1d_parse_obus().
      
      Fixes `assert(dst->data[0] == ((void*)0));` in dav1d_picture_ref with
      clusterfuzz-testcase-minimized-dav1d_fuzzer_mt-5743306491822080. Also
      fixes a memory leak of frames with
      clusterfuzz-testcase-minimized-dav1d_fuzzer_mt-5655593017147392. Credits
      to oss-fuzz.
      b735b80b
  3. 28 Nov, 2018 3 commits
  4. 26 Nov, 2018 3 commits
  5. 25 Nov, 2018 4 commits
    • Ronald S. Bultje's avatar
      Move Dav1dPictureParameters-related entries to top of Dav1dSeqHdr · 3e95d8ed
      Ronald S. Bultje authored
      Also remove redundant entries from Dav1dPictureParameters, and move
      documentation of these fields into Dav1dFrame/SequenceHeader instead.
      3e95d8ed
    • Ronald S. Bultje's avatar
      Make frame_hdr a referenced object · 03d4ede0
      Ronald S. Bultje authored
      03d4ede0
    • Ronald S. Bultje's avatar
      Make frame_hdr a pointer · c371907f
      Ronald S. Bultje authored
      c371907f
    • Ronald S. Bultje's avatar
      Rewrite flushing logic · 3f410fd9
      Ronald S. Bultje authored
      The old flushing logic would simply leave frame threads (and tile
      threads) running without caring how much latency that might impose
      in the post-seek time-to-first-frame. This commit adds a 'flush'
      state that will abort all running frame/tile threads from decoding
      their current frame, as well as dispose of all frames in the output
      queue.
      
      Then, we use dav1d_flush() in dav1d_close() to abort running threads
      on exit, instead of signaling their respective dependents to prevent
      deadlocks. The advantage of this approach is that we don't signal on
      objects we don't have ownership over, and thus this should prevent
      race conditions where the owning thread could dispose of the object
      just as we're signaling it, which I believe is what causes #193.
      3f410fd9
  6. 23 Nov, 2018 3 commits
  7. 22 Nov, 2018 1 commit
  8. 21 Nov, 2018 1 commit
  9. 20 Nov, 2018 1 commit
  10. 19 Nov, 2018 2 commits
    • Janne Grunau's avatar
      frame mt: mark frame as failed in dav1d_close() · acee4345
      Janne Grunau authored
      Fixes a deadlock on teardown with
      clusterfuzz-testcase-minimized-dav1d_fuzzer_mt-5636065151418368. Credits
      to oss-fuzz.
      acee4345
    • Niklas Haas's avatar
      film_grain: implement film grain synthesis · cfa986fe
      Niklas Haas authored
      This is using a slightly adapted version of my GPU-based algorithm. The
      major difference to the algorithm suggested by the spec (and implemented
      in libaom) is that instead of using a line buffer to hold the previous
      row's film grain blocks, we compute each row/block fully independently.
      
      This opens up the door to exploit parallelism in the future, since we
      don't have any left->right or top->down dependency except for the PRNG
      state. (Which we could pre-compute for a massively parallel / GPU
      implementation)
      
      That being said, it's probably somewhat slower than using a line buffer
      for the serial / single CPU case, although most likely not by much
      (since the areas with the most redundant work get progressively smaller,
      down to a single 2x2 square for the worst case).
      cfa986fe
  11. 16 Nov, 2018 1 commit
  12. 15 Nov, 2018 1 commit
  13. 14 Nov, 2018 1 commit
  14. 13 Nov, 2018 1 commit
  15. 07 Nov, 2018 2 commits
  16. 31 Oct, 2018 1 commit
  17. 27 Oct, 2018 1 commit
  18. 19 Oct, 2018 1 commit
  19. 18 Oct, 2018 1 commit
  20. 13 Oct, 2018 1 commit
  21. 04 Oct, 2018 3 commits
  22. 03 Oct, 2018 1 commit
  23. 02 Oct, 2018 3 commits