Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/videolan/dav1d.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2018-11-17Fix calculation of unit_idx to identify Av1RestorationUnitRonald S. Bultje
ruy and rux are in unit_size dimensions, whereas lr_mask are in sb128 dimensions, and unit_idx is in sb64 dimensions, so one can't be derived from the other. Instead, remove ruy/rux and derive unit_idx and sb_idx directly from the block positions aligned to the unit_size.
2018-11-17If Y/AC is 0 (but lossless=0), only allow coding DCT_DCTRonald S. Bultje
This is consistent with what libaom does. Should fix #175.
2018-11-16Add support for super-resRonald S. Bultje
Fixes #172.
2018-11-16Clip unscaled output pixels in put_8tap_scaled_c()Ronald S. Bultje
2018-11-16call dav1d_get_picture() until it returns -EAGAIN for drainingJanne Grunau
With the decoupled decoding data there might be remaining input data during draining which can cause bitstream parsing errors.
2018-11-16frame mt: fix memleak caused by race between dav1d_close and dav1d_decode_frameJanne Grunau
The race is exposed by not draining the decoder correctly after 026069693ef (decoupled decoding api). Fixes a memleak with clusterfuzz-testcase-minimized-dav1d_fuzzer_mt-5728508249112576. Credits to oss-fuzz.
2018-11-16Disable warped motion for invalid warped global motion parametersRonald S. Bultje
But don't abort decoding; instead, simply force translational motion.
2018-11-16Use seg->globalmv/skip in determining is_compRonald S. Bultje
2018-11-15Don't clip in prep_8tap_scaled_cRonald S. Bultje
2018-11-15obu: add support for OBUs with no size fieldJames Almer
2018-11-15Only do intra edge filtering/upsampling if enable_intra_edge setBoyuan Xiao
See section 7.11.2.4 in AV1 spec. Because frame contexts are not passed into the ipred_z*_c functions the flag is set as a bit inside the 'angle' function argument.
2018-11-15Correct the condition for freeing references in dav1d_parse_obusBoyuan Xiao
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.
2018-11-15obu: tile_group and frame OBUs do not have trailing bitsJanne Grunau
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.
2018-11-14meson: fix disabling asm for arm/arm64Janne Grunau
2018-11-14CI: bump the dav1d-debian-unstable image version.Konstantin Pavlov
This version now includes clang.
2018-11-14Fix operator order in obu.cRupert Swarbrick
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!
2018-11-14dav1d_fuzzer: skip empty frames to avoid assertions after 026069693efJanne Grunau
2018-11-14Correctly flush at the end of OBUsRupert Swarbrick
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.
2018-11-14Fix how we read the UV quantization levelRupert Swarbrick
See section 5.9.12 of the AV1 spec. The flag controlling U and V share a quantization level wasn't being read.
2018-11-14Segmentation map reference logicBoyuan Xiao
The previous code raised an error if !segmentation.update_map but the reference frame didn't yield any segmentation data. (The first "goto error" that the patch removes happens if the reference frame was the right size but had no segmentation data; the second happens if the reference frame was the wrong size). This doesn't match the logic in the description of load_previous_segment_ids in section 6.8.2 of the spec. This patch allows such streams, allocating and zeroing cur_segmap in this case. It is still an error for a stream to signal a temporal update but not to have valid segmentation data from the ref frame - that's the error case that the patch puts back in.
2018-11-14Fix parsing segmentation data in parse_frame_hdrBoyuan Xiao
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).
2018-11-14Fix segmentation map size checkRonald S. Bultje
Fixes #166.
2018-11-14mc: use width/height of reference frame in warp_affineJanne Grunau
Fixes a heap buffer overflow in emu_edge_c with clusterfuzz-testcase-minimized-dav1d_fuzzer_mt-5089954858795008 if the reference frame is smaller than the current frame. Credits to oss-fuzz.
2018-11-14mc: ensure order of evaluation of macro arguments in FILTER_BILINJanne Grunau
Fixes undefined shifts in put_bilin_scaled_c with clusterfuzz-testcase-minimized-dav1d_fuzzer_mt-5732654503165952. Credits to oss-fuzz.
2018-11-14Support skip/globalmv/ref segmentation featuresRonald S. Bultje
2018-11-14mc: use PXSTRIDE consistently in {put,prep}_8tap_scaled_cJanne Grunau
Fixes a heap buffer overflow with high bit depth scaled reference frames in clusterfuzz-testcase-minimized-dav1d_fuzzer_mt-5652139771166720. Credits to oss-fuzz.
2018-11-14implement a decoupled decode APIJames Almer
2018-11-14Add support for scaled referencesRonald S. Bultje
Fixes #121.
2018-11-14Pass dimensions to cfl_ac and derive log2szDavid Michael Barr
2018-11-13Fix parsing of render sizeRonald S. Bultje
Fixes decoding of keyframe in #121.
2018-11-13Align block size to bw/bh for z2 filter extensionRonald S. Bultje
2018-11-13intra_pred: fix ubsan issues with max_width/height in 2f251bd11528Janne Grunau
Seen with clusterfuzz-testcase-minimized-dav1d_fuzzer-5712042518904832.
2018-11-13Add missing .data suffix so we don't overwrite in memset()Ronald S. Bultje
2018-11-12Fix dav1d CLI tool skip short optionNicolas Frattaroli
2018-11-12Add a max_width/height argument to angular_ipred_fnRonald S. Bultje
This is used in z2 to limit the number of pixels over which the filter is applied, as per "numPx" in 7.11.2.4 point 4 in the AV1 specification. This only applies to z2, because in z1/3, the edge filter is (incomprehensibly) lengtened by the opposite side's edge length, which undoes the limit on the filter length (like a bug undoing another bug). I admit the code is getting rather complex, so we may want to redesign this to make writing SIMD easier.
2018-11-12Re-add imax(v, 0) in SGR calculationRonald S. Bultje
Apparently this can happen for bitdepth > 8. I haven't seen it happen for bitdepth==8. Fixes #161.
2018-11-12Fix type mismatch (int32_t vs. int)Ronald S. Bultje
2018-11-12Use prev_frame seg_map if temporal=0,update=0 alsoRonald S. Bultje
2018-11-12Use negative return value in case of segmentation setup errorsRonald S. Bultje
2018-11-12do not try to build the windows .rc file if we're building for a static targetSteve Lhomme
2018-11-12include errno.h in the public headersSteve Lhomme
Since we return EAGAIN it's better if include the file that has it.
2018-11-10Split MC blendHenrik Gramner
The mstride == 0, mstride == 1, and mstride == w cases are very different from each other, and splitting them into separate functions makes it easier top optimize them. Also add some further optimizations to the AVX2 asm that became possible after this change.
2018-11-09lf mask: calculate vertical mask correctlyJanne Grunau
Fixes an error introduced in 22d3b6d9807 (!294). Fixes an use of uninitialized value in loop_filter_v_sb128y_c with clusterfuzz-testcase-minimized-dav1d_fuzzer-5682084585144320. The original sample in 22d3b6d9807 clusterfuzz-testcase-minimized-dav1d_fuzzer-5691087507685376 shows no regression. Credits to oss-fuzz.
2018-11-09MSVC Compat: Move stdatomic fallback to its own directoryDerek Buitenhuis
Mirrors what we do for GCC. Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
2018-11-09Add stdatomic fallback for GCC 4.7/4.8Derek Buitenhuis
This compiler version is still shipped with the latest version of some distros, like RHEL/CentOS, sadly. This implementation requires on the __atomic functions. Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
2018-11-09frame-mt: do not derive_warpmv intrabc blocksJanne Grunau
Fixes an use-of-uninitialized-value in decode_b() with clusterfuzz-testcase-minimized-dav1d_fuzzer_mt-5674585370918912. Credits to oss-fuzz.
2018-11-09reduce size of Av1FrameHeader by 7940 bytesJanne Grunau
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.
2018-11-09frame-mt: set b->filter2d for intra bc blocksJanne Grunau
Fixes #154, index out of bounds in decode_b() with clusterfuzz-testcase-minimized-dav1d_fuzzer_mt-5750775674830848. Credits to oss-fuzz.
2018-11-09Always free references upon sequence header refreshRonald S. Bultje
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.
2018-11-08fix backup of t->l.tx_lpf_uv at tile boundaries for 4:2:2 and 4:4:4Janne Grunau
Fixes #132, use of uninitilized value in dav1d_loopfilter_sbrow_16bpc with clusterfuzz-testcase-minimized-dav1d_fuzzer-5734861545930752. Credits to oss-fuzz and Tyson Smith.