- 15 Nov, 2018 2 commits
-
-
A new coded video sequence (see page 193; section 7.5 of the spec) begins when we see a sequence header that isn't bit identical to previous ones. This is the point at which we can throw away previous frames etc.
-
Janne Grunau authored
The number of read bits can be equal to the size of the packet. Fixes a triggered assert in clusterfuzz-testcase-minimized-dav1d_fuzzer-5746175664193536. Credits to oss-fuzz.
-
- 14 Nov, 2018 5 commits
-
-
Rupert Swarbrick authored
This code originally looked like "assert (init_bit_pos % 8 == 0)" and I changed it to use "& 7" to match the prevaling style. Unfortunately, "&" binds more weakly than "==". Oops!
-
This fixes failures when an OBU has more than a byte's worth of trailing zeros. As part of this work, it also rejigs the dav1d_flush_get_bits function slightly. This worked before, but it wasn't very obvious why (it worked because bits_left was never more than 7). This patch renames it to dav1d_bytealign_get_bits, which makes it clearer what it does and adds a comment explaining why it works properly. The new dav1d_bytealign_get_bits is also now void (rather than returning the next byte to read). The patch defines dav1d_get_bits_pos, which returns the current bit position. This feels a little easier to reason about. We also add a new check to make sure that we haven't fallen off the end of the OBU. This can happen when a byte buffer contains more than one OBU: the GetBits might not have got to EOF, but we might now be half-way through the next OBU.
-
See section 5.9.12 of the AV1 spec. The flag controlling U and V share a quantization level wasn't being read.
-
The first memset is dead code: if primary_ref_frame is PRIMARY_REF_NONE then segmentation.update_data is always true. The patch removes this memset and explains why the copy in the other branch is correct. The second memset should always fire: if segmentation is not enabled for this frame, the seg_data structure should be set to zero rather than copied from a reference frame (see section 5.9.14 of the AV1 spec).
-
Ronald S. Bultje authored
-
- 13 Nov, 2018 1 commit
-
-
Ronald S. Bultje authored
Fixes decoding of keyframe in #121.
-
- 12 Nov, 2018 1 commit
-
-
Ronald S. Bultje authored
-
- 09 Nov, 2018 1 commit
-
-
Janne Grunau authored
Take the maximal number of tile rows and columns (each 64) into account. Reduces size of Av1FrameHeader from 9588 to 1648 bytes on x86_64 according to pahole. Refs #156.
-
- 08 Nov, 2018 1 commit
-
-
Ronald S. Bultje authored
Also clear refpoc[] for intrabc frames. Fixes #146. This changes sequence header parsing so that we no longer reset c->have_seq_hdr to 0 if parsing of the most recent sequence header failed. Rather, we will just continue with the old sequence header and test any future sequence headers against this. This may help error resilience in streams that periodically re-send their sequence header.
-
- 01 Nov, 2018 2 commits
-
-
Janne Grunau authored
Fixes #134.
-
Janne Grunau authored
This reverts commit aeb5a5ef.
-
- 31 Oct, 2018 2 commits
-
-
James Almer authored
Partially reverts b7d2b7d2, fixing a regression introduced by it.
-
James Almer authored
Signed-off-by:
James Almer <jamrial@gmail.com>
-
- 29 Oct, 2018 1 commit
-
-
James Almer authored
Fixes a regression since d8996b18, where the relevant fields started being written to and read from the wrong struct.
-
- 28 Oct, 2018 2 commits
-
-
Fixes #123.
-
Janne Grunau authored
Prevent decoding a frame with inconsistent sequence and frame headers. Fix #124, #125. Fix negative size param in pixel_copy due to inconsistent sb128 state between frame header (parsed with sb128 == 0) and sequence header and frame decoding with sb128 == 1. Fix clusterfuzz-testcase-minimized-dav1d_fuzzer-5707479116152832. Credits to oss-fuzz.
-
- 24 Oct, 2018 4 commits
-
-
James Almer authored
Parse and use it instead. Signed-off-by:
James Almer <jamrial@gmail.com>
-
James Almer authored
This is more in line with the behavior from libaom. Signed-off-by:
James Almer <jamrial@gmail.com>
-
This is identical to what libaom does for such OBUs. It prevents us from doing block decoding, which doesn't make sense for such OBUs, and would result in using an uninitialized frame header during the decoding process. Fixes #94.
-
Fixes #89.
-
- 23 Oct, 2018 4 commits
-
-
James Almer authored
-
James Almer authored
Working only for the first Operating Point for now.
-
Luc Trudeau authored
Calling get_uniform(max=1) results in a read_bits(n=0), In get_uniform, the n param is renamed to max to clarify the semantics. Asserts are added to detect calls to get_uniform() and get_bits() that don't actually read anything. Closes #76
-
This is identical to what libaom does. Fixes #65.
-
- 21 Oct, 2018 1 commit
-
-
James Almer authored
-
- 20 Oct, 2018 1 commit
- 18 Oct, 2018 2 commits
-
-
Fix following ubsan error in #68: ../src/env.h:296:24: runtime error: shift exponent -1 is negative [Detaching after fork from child process 22253] #0 0x7ffff76ad6f9 in get_poc_diff /home/janne/src/dav1d/build-usan/../src/env.h:296:24 #1 0x7ffff76ad6f9 in parse_frame_hdr /home/janne/src/dav1d/build-usan/../src/obu.c:757 #2 0x7ffff7696491 in dav1d_parse_obus /home/janne/src/dav1d/build-usan/../src/obu.c:1023:20 #3 0x7ffff7921c7d in dav1d_decode /home/janne/src/dav1d/build-usan/../src/lib.c:193:20 #4 0x424869 in main /home/janne/src/dav1d/build-usan/../tools/dav1d.c:108:20 #5 0x7ffff63dfae6 in __libc_start_main (/lib64/libc.so.6+0x21ae6) #6 0x403489 in _start (/home/janne/src/dav1d/build-usan/tools/dav1d+0x403489) I can't reproduce the ubsan error in the issue.
-
Reject out of range values as errors and avoid undefined shifts. Fixes #67.
-
- 13 Oct, 2018 1 commit
-
-
Makes the tile parsing code simpler. Fixes a heap buffer overflow with clusterfuzz-testcase-minimized-dav1d_fuzzer-5726018392817664. Credit to oss-fuzz.
-
- 11 Oct, 2018 1 commit
-
-
Janne Grunau authored
Seen with clusterfuzz-testcase-minimized-dav1d_fuzzer-5749222154960896, Credit to OSS-Fuzz.
-
- 08 Oct, 2018 1 commit
-
-
Ronald S. Bultje authored
Fixes #48.
-
- 07 Oct, 2018 1 commit
-
-
Janne Grunau authored
Avoids a triggered assert with david-fuzzing-data:artifacts/crash-f448caf378e250b7eea4fa2d1c3cd7ef4a3211ce.
-
- 05 Oct, 2018 2 commits
-
-
James Almer authored
Signed-off-by:
James Almer <jamrial@gmail.com>
-
James Almer authored
Fixes parsing of some error_resilient_mode files.
-
- 04 Oct, 2018 3 commits
-
-
"comparison between signed and unsigned integer expressions"
-
Janne Grunau authored
Replaces an assert with a check and return error. Fixes an assert fail with crash-ea35702b18cd8c17da7505126eb0e6aa6914f09d.
-
Henrik Gramner authored
-
- 03 Oct, 2018 1 commit
-
-
Janne Grunau authored
Fixes a fuzzing crash with crash-96e2d10fd8effbbcb0c8eedcbe05de50b1582fd2.
-