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-10-31ref: don't leave dangling pointers around when freeing Dav1dRefJames Almer
Signed-off-by: James Almer <jamrial@gmail.com>
2018-10-31dav1d: add --verify option to verify decoding resultsJanne Grunau
Will be used for regression tests.
2018-10-31Remove dav1d_sgr_one_by_xLuc Trudeau
Since n equals either 25 or 9, the dav1d_sgr_one_by_x table can be replaced with a ternary operation.
2018-10-31fuzzing: avoid a undefined left shift for lossless coded blocksJanne Grunau
Test case: clusterfuzz-testcase-minimized-dav1d_fuzzer-5733716937146368, credits to oss-fuzz.
2018-10-31Rewrite msac.cRostislav Pehlivanov
This rewrites msac.c to the point of there being no libaom project code left, hence changing the license of the file to the dav1d project's license. The rewrite much simplifies and optimizes entropy decoding. Some encoder specific code also remained, such as tell_offs, to tell the fractional amount of bits left, which the decoder does not need. ctx_refill is much simpler and has a tighter loop with less instructions, which on some CPUs can actually be ran in one cycle. The old mechanism which checked to see if the buffer reached the end to disable calling ctx_refill is gone, as all it saved was a mostly well predicted branch. The optimizations regarading this function enabled us to use an ec_win of 64 bits whilst improving performance. This was not possible with the old needlessly robust system. Some msac-specific API changes were made - msac_decode_bool now takes a scaled value directly rather than doing scaling itself. This saves a shift in most use cases as the function is mainly used to read equiprobable bools rather than ones with specific probabilities. There's still room for optimizations, mainly in that update_cdf could be SIMD'd. This commit prepares for some of them by moving the init function at the bottom of the file. Overall decoder speedup seems to be around 3%-5%, specific on bitrate and encoder as expected.
2018-10-31CI: add testdata based regression testsJanne Grunau
Fix #102
2018-10-31fuzzing: limit maximum frame size to 4kx4kJanne Grunau
Avoid out of memory (2Gb) or time out (25s) issues in oss-fuzz.
2018-10-31decode: clean up properly after frame allocation errorJanne Grunau
2018-10-31meson: Simplify the name of the checkasm test targetMartin Storsjö
This simplifies running specifically this test by "meson test checkasm".
2018-10-30Readme: Add info how to run testsMarvin Scholz
2018-10-30Do not run other tests parallel with checkasm testMarvin Scholz
This would result in weird output, as checkasm outputs several lines.
2018-10-30Add option to include extra testdata testsMarvin Scholz
2018-10-30obu: fix parsing film_grain_present and num_operating_points in Sequence HeadersJames Almer
Fixes a regression since d8996b181d2013abd01a2e9f5dceae5e09b3afda, where the relevant fields started being written to and read from the wrong struct.
2018-10-30Don't use msac_decode_bool() for edge partition parsingRonald S. Bultje
This is identical to what libaom does, and fixes #119. After gather_left/top_partition_prob(), probabilities *can* overlap, and in extreme cases the output CDF[0] can therefore be 0, which will cause an assert failure when used with msac_decode_bool().
2018-10-29API: constify Dav1dData and dav1d_data_wrap()Janne Grunau
Fix #120.
2018-10-29unref reference pictures after decoding errorsJanne Grunau
Fix #115. Fix 'assert(seg_id < 8)' in clusterfuzz-testcase-minimized-dav1d_fuzzer-5740590025670656 due to decoding error in the primary reference picture. Credits to oss-fuzz.
2018-10-29Add a 4x4 cdef_filter AVX2 implementationRonald S. Bultje
cdef_filter_4x4_8bpc_c: 2273.6 cdef_filter_4x4_8bpc_avx2: 113.6 Decoding time reduces to 15.51s for first 1000 frames of chimera 1080p, from 23.1 before cdef_filter SIMD or 17.86 with only 8x8 cdef_filter SIMD.
2018-10-29Add 8x8 cdef_filter AVX2 implementationRonald S. Bultje
cdef_filter_8x8_8bpc_c: 7913.0 cdef_filter_8x8_8bpc_avx2: 309.9 First 1000 frames of Chimera 1080p: before: 0m23.100s after: 0m17.863s
2018-10-29Add CDEF filter checkasm unit testRonald S. Bultje
2018-10-29Simplify/rewrite cdef filtering codeRonald S. Bultje
2018-10-29dav1d: Fix theoretical invalid pointer dereferenceMarvin Scholz
Fix a theoretical bug found by the clang static analyzer: In theory num_muxers could be smaller than res, never evaluating the loop (as the condition would be false) but not satisfying the i == num_muxers case, so proceeding and dereferencing the never initialized impl pointer. Fixing this is simple: Changed the num_muxers and index variables to unsigned so num_muxers can never be smaller than i.
2018-10-29Clear reference state upon sequence header changeRonald S. Bultje
Fixes #123.
2018-10-28libfuzzer: build oss-fuzz fuzzer binaries with mesonJanne Grunau
oss-fuzz's FuzzingEngine requires libc++.
2018-10-28picture: make poc the first field in Dav1dPictureJames Almer
This prevents warnings on some old compilers that don't like structs that start with an array being initialized with { 0 }.
2018-10-28Backup extra 8 pixels at bottom of frameRonald S. Bultje
Fixes #112.
2018-10-28Cast masks to unsigned before upshiftingRonald S. Bultje
Fixes #111.
2018-10-28parse_obu: reset have_{seq,frame}_hdr on new OBU_{SEQ,FRAME}_HDRJanne Grunau
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.
2018-10-28Require bits/component to match between picture and referencesRonald S. Bultje
Fixes #116.
2018-10-28Add AVX2 SIMD implementation for cdef_dirRonald S. Bultje
cdef_dir_8bpc_c: 629.3 cdef_dir_8bpc_avx2: 82.4 First 1000 frames of Chimera 1080p: before: 0m23.084s after: 0m21.860s
2018-10-28Add CDEF unit testRonald S. Bultje
2018-10-28Rewrite cdef_dir C codeRonald S. Bultje
2018-10-27fix hang in dav1d_close() with more than 31 tile threadsJanne Grunau
Fix 122.
2018-10-27tools/dav1d: don't call write_header and write_trailer when it's not neededJames Almer
2018-10-27Add a null muxer which will just drop the packet.Thierry Foucu
This is similar to --noblit of libaom
2018-10-26libfuzzer: unbreak oss-fuzz buildJanne Grunau
oss-fuzz builds the fuzzing binary out of meson. Local (quoted) includes should be preferred for headers located in the same directory.
2018-10-25arm: reverse jump tablesJanne Grunau
Instead of bit reverting the register subtract 24 from clz. This avoids two empty filler values in the jump table with the same instruction count.
2018-10-25rename arch specific bitdepth template filesJanne Grunau
Missed in 46e2a2d0cc. Arm asm will be hard to template so move them to the plain source list. Fix #96.
2018-10-25Build: Add suffix to templated BITDEPTH filesMarvin Scholz
Fix #96
2018-10-25meson: add "-Werror=missing-prototypes" to the list of optional argumentsJames Almer
Add duplicate prototypes to ref_mvs.c for now, since ref_mvs.h can't be included. Signed-off-by: James Almer <jamrial@gmail.com>
2018-10-25attributes: Don't align to more than what assembly needs/benefits fromMartin Storsjö
For arm/arm64, there's no need to align any buffer to 32 bytes as the assembly doesn't need it and doesn't benefit from it. This would be much more elegant if defined like this: #define MAX_ALIGN 16 #define ALIGN(align) __attribute__((aligned(MIN(align, MAX_ALIGN)))) This works for GCC and Clang, but the MSVC alignment __declspec needs a literal alignment value, it can't handle an expression.
2018-10-25fix unwanted integer promotion in tile data size parsing.Janne Grunau
Fixes an undefined left shift in clusterfuzz-testcase-minimized-dav1d_fuzzer-5717082881130496. Credits to oss-fuzz. Fixes #110
2018-10-25loop restoration: maximal stripe height is 128 + 8Janne Grunau
Due to the stripe offset of 8 rows the last stripe can have a height of 128 + 8 rows if the resolution is a multiple of 128. Fixes a stack-buffer-overflow in clusterfuzz-testcase-minimized-dav1d_fuzzer-5731418676658176. Credits to oss-fuzz.
2018-10-25Don't call mask_edges_chroma when !bw4 or !bh4Luc Trudeau
Fix issue #70
2018-10-25attributes: Fix leftover mismatched else/endif commentsMartin Storsjö
These went out of sync in 227b7eae7a.
2018-10-25arm/mc: Add 8 bit neon asm for avg, w_avg and maskMartin Storsjö
checkasm --bench numbers from a Snapdragon 835: nop: 23.0 avg_w4_8bpc_c: 385.0 avg_w4_8bpc_neon: 34.0 avg_w8_8bpc_c: 590.5 avg_w8_8bpc_neon: 65.5 avg_w16_8bpc_c: 1304.4 avg_w16_8bpc_neon: 161.3 avg_w32_8bpc_c: 4098.4 avg_w32_8bpc_neon: 589.2 avg_w64_8bpc_c: 8405.0 avg_w64_8bpc_neon: 1367.1 avg_w128_8bpc_c: 19667.9 avg_w128_8bpc_neon: 3409.0 w_avg_w4_8bpc_c: 453.8 w_avg_w4_8bpc_neon: 50.0 w_avg_w8_8bpc_c: 749.0 w_avg_w8_8bpc_neon: 105.7 w_avg_w16_8bpc_c: 1851.2 w_avg_w16_8bpc_neon: 283.7 w_avg_w32_8bpc_c: 5991.5 w_avg_w32_8bpc_neon: 1080.9 w_avg_w64_8bpc_c: 12763.5 w_avg_w64_8bpc_neon: 2544.4 w_avg_w128_8bpc_c: 30311.3 w_avg_w128_8bpc_neon: 6350.5 mask_w4_8bpc_c: 492.9 mask_w4_8bpc_neon: 57.7 mask_w8_8bpc_c: 1108.5 mask_w8_8bpc_neon: 123.0 mask_w16_8bpc_c: 2880.3 mask_w16_8bpc_neon: 349.2 mask_w32_8bpc_c: 8996.4 mask_w32_8bpc_neon: 1368.1 mask_w64_8bpc_c: 19570.3 mask_w64_8bpc_neon: 3263.5 mask_w128_8bpc_c: 46757.4 mask_w128_8bpc_neon: 8743.1
2018-10-25Make access into loopfilter masks safe across sb64 tile threadsRonald S. Bultje
Fixes #100.
2018-10-25Make access into noskip_mask safe across sb64 tile threadsRonald S. Bultje
2018-10-24Make symbols shared with libaom static.Thomas Daede
Fixes #104.
2018-10-24Convert PATENTS file from CP1252 to UTF-8.Thomas Daede
2018-10-24Prevent right-shift by 32Ronald S. Bultje
Fixes #93.