100 Commits
Author SHA1 Message Date
Janne Grunau a67124703f ci: update aarch64/armv7a/ppc64le docker images
Exchange clang-7 with clang in build-debian-werror as clang-7 is only
available in buster.
2021-10-04 22:50:39 +02:00
Janne Grunau c6a08b3aa1 build: avoid meson's symbols_have_underscore_prefix
Meson's dynamic check is unreliable when additional compiler flags are
passed via CFLAGS. For example '-fprofile-instr-generate' in oss-fuzz'
coverage build. Fixes #370.
2021-09-21 09:41:51 +02:00
Janne GrunauandJean-Baptiste Kempf e616852536 tools: add optional xxh3 based muxer
The required 'xxhash.h' header can either be in system include directory
or can be copied to 'tools/output'.

The xxh3_128bits based muxer shows no significant slowdown compared to
the null muxer. Decoding times Chimera-AV1-8bit-1920x1080-6736kbps.ivf
with 4 frame and 4 tile threads on a core i7-8550U (disabled turbo boost):

null:  72.5 s
md5:   99.8 s
xxh3:  73.8 s

Decoding Chimera-AV1-10bit-1920x1080-6191kbps.ivf with 6 frame and 4 tile
threads on a m1 mc mini:

null:  27.8 s
md5:  105.9 s
xxh3:  28.3 s
2021-02-08 10:31:54 +01:00
Janne Grunau 93319cefed tools: fix '--verify' with muxer explicitly set 2021-02-06 20:13:05 +01:00
Janne Grunau dd32acea9d build: unbreak '-Denable_tools=false' build and add CI
oss-fuzz uses '-Denable_tools=false'.
2021-01-20 21:15:40 +01:00
Janne Grunau 6ed5fafb42 Update NEWS for 0.8.1 2021-01-01 21:36:25 +01:00
Janne GrunauandJean-Baptiste Kempf 0243c3ffb6 CI/test-debian-asan: run address sanitizer tests both with and without asm 2020-09-27 15:38:45 +02:00
Janne GrunauandJean-Baptiste Kempf ac1cb28d1e fuzzer: parse '--cpumask X' command line argument 2020-09-27 15:38:45 +02:00
Janne GrunauandJean-Baptiste Kempf f90ada0d08 tests: avoid using sed in header test
Makes !1078 redundant.
2020-09-20 16:02:57 +02:00
Janne Grunau d85fdf524d build: increase minimal meson to 0.49
Fixes #350.
2020-09-20 12:19:10 +02:00
Janne Grunau 1bcc5ecd8a tests: test stand alone API header compilation
Errors on C11 features like anonymous strucs/unions.
2020-08-23 00:32:43 +02:00
Janne Grunau 791c469721 dav1d/headers.h: add missing stdint.h include 2020-08-23 00:32:43 +02:00
Janne Grunau 6f3a8fb971 contributing: document the allowed internal use of anonymous structs/unions 2020-08-23 00:32:39 +02:00
Janne Grunau e2d22c0187 bump soname for API changes 2020-08-23 00:31:41 +02:00
Janne Grunau 89c57ce3eb API: move reserved space in Dav1dSettings to the end
Also changes the type intptr_t to make adding variable size members more
convenient.
2020-08-23 00:31:28 +02:00
Janne Grunau acc92406ac API: remove anonymous struct and union from Dav1dWarpedMotionParams 2020-08-21 19:14:11 +02:00
Janne GrunauandHenrik Gramner d0e50cacea CI: compare x86inc.asm with upstream 2020-08-21 15:13:49 +02:00
Janne GrunauandHenrik Gramner 9a2d165892 x86inc.asm: remove private_prefix define and config.asm include
Makes using unmodified upstream x86inc.asm possible.
2020-08-21 15:13:49 +02:00
Janne GrunauandHenrik Gramner 4cd2f82d2a x86inc.asm: use standalone x86inc.asm as upstream 2020-08-21 15:13:48 +02:00
Janne Grunau 725f37684d meson: disable asm for x32 ABI
Fixes #345.
2020-07-09 23:06:08 +02:00
Janne Grunau ef990c9d82 memory sanitizer: mask all CPU flags
Memory sanitizer depends on compiler instrumentation which makes it
inherently incompatible with asm DSP functions. Refs #336
2020-04-10 22:07:20 +02:00
Janne Grunau 7cd946937a meson/x86: add option to disable AVX-512 asm
Allows building with nasm < 2.14.
2020-03-27 20:28:28 +01:00
Janne GrunauandJean-Baptiste Kempf 227b4d38ae meson/android: undefine _FILE_OFFSET_BITS if fseeko is not available 2020-03-21 18:32:34 +01:00
Janne Grunau e8e92d358d android/arm: do not use fseeko in library code
Availability is sketchy if _FILE_OFFSET_BITS is defined to 64 which
meson does by default.
See https://android.googlesource.com/platform/bionic/+/master/docs/32-bit-abi.md#32_bit-and
2020-03-21 11:30:13 +01:00
Janne Grunau bce8fae96e CI: run a selection of jobs on a node with avx2
Switches build-debian (for avx2 checkasm coverage) and test-win64 and
test-debian-unaligned-stack (for testing asm '%if's).
Refs #330, #333
2020-03-05 13:36:20 +01:00
Janne Grunau abaad816ad CI/armv7: use linux32 meson ... to allow running on aarch64 2020-03-03 07:36:11 +01:00
Janne GrunauandJean-Baptiste Kempf d398da88c0 fuzzing: link the fuzzing binaries as C++
Requires meson 0.51 for oss-fuzz and 0.49 for the fuzzing binaries in
general due to the use of the 'kwargs' keyword argument.
2020-02-25 10:26:26 +01:00
Janne GrunauandJean-Baptiste Kempf 7675eb16b9 fuzzing: split the fuzzing targets to their own meson.build file 2020-02-25 10:26:26 +01:00
Janne Grunau bf56afde17 CI: update aarch64 docker image to buster with meson 0.49 2020-02-18 21:47:54 +01:00
Janne GrunauandHenrik Gramner 2e5e05b767 build: do not error out if clock_gettime is not found on darwin
Also prefer clock_gettime over mach_absolute_time on darwin.
clock_gettime is only available in darwin 10.12 and later.

Hopefully fixes #283.
2019-11-26 22:54:34 +01:00
Janne GrunauandMartin Storsjö e65abadff6 arm: Fix assembling with older binutils
This large constant needs a movw instruction, which newer binutils can
figure out, but older versions need stated explicitly.

This fixes #296.
2019-09-04 15:10:54 +03:00
Janne Grunau 863c3731dc TileContext: reorder scratch buffer to avoid conflicts
The chroma part of pal_idx potentially conflicts during intra
reconstruction with edge_{8,16}bpc. Fixes out of range pixel values
caused by invalid palette indices in
clusterfuzz-testcase-minimized-dav1d_fuzzer_mt-5076736684851200.
Fixes #294. Reported as integer overflows in boxsum5sqr with undefined
behavior sanitizer. Credits to oss-fuzz.
2019-09-03 08:24:45 +02:00
Janne Grunau bfc9f72ad5 CI: use "needs:" to break the static build, test stage dependency 2019-09-01 19:02:57 +02:00
Janne GrunauandJean-Baptiste Kempf fcb6a6da12 ci: add test stage for clang armv7a build 2019-06-27 11:28:14 +02:00
Janne Grunau 79e4a5f7c1 cli: use mach_absolute_time as fallback for clock_gettime on darwin. Fixes #283
clock_gettime() is only available since MacOS X 10.12 (Sierra).
2019-06-19 08:31:20 +02:00
Janne Grunau 785f00fecc build: add option for fuzzer specific LDFLAGS
Needed for oss-fuzz after switching to '-fsanitize=fuzzer' for the
libfuzzer based build. Adding '-fsanitize=fuzzer' for all oss-fuzz based
build breaks afl.
2019-05-24 22:16:29 +02:00
Janne Grunau a2cb9f50b3 fuzzer: fix oss-fuzz undefined behavior sanitizer build 2019-05-09 08:12:08 +02:00
Janne Grunau 94e30ef935 arm64: remove invalid macro argument delimiter 2019-05-08 21:14:03 +02:00
Janne GrunauandJean-Baptiste Kempf 3680b11a60 tools/dav1d/md5: bswap big endian high bit depth pixel data 2019-03-14 11:23:47 +01:00
Janne GrunauandJean-Baptiste Kempf d9a911a4fb tools/dav1d: make the md5 muxer endian-aware
Fixes tests on big endian architectures.
2019-03-14 11:23:47 +01:00
Janne Grunau 7f7b558638 build: add "api" to api/soname related versions
Refs #241, Closes #255.
2019-03-09 11:24:40 +01:00
Janne GrunauandJean-Baptiste Kempf 754487c05d let dav1d_version() return the project version
Increments the soname revision number for this behavior change.
Removes the DAV1D_VERSION and DAV1D_VERSION_INT defines and
dav1d_version_vcs() and dav1d_version_int().
Also cleans up the version usage in dav1d CLI.
Refs #241, #255.
2019-03-08 17:09:59 +01:00
Janne Grunau 2abc436e7e obu: ignore operating_parameter_info in new sequence check
The operating_parameter_info is allowed to change in a single sequence.
Reorder Dav1dSequenceHeader so the check for new sequence can still be
done with memcmp and pffsetof.
2019-02-26 18:57:16 +01:00
Janne GrunauandJean-Baptiste Kempf ada9231c20 fix dav1d spelling 2019-02-26 08:17:36 +01:00
Janne Grunau e811c4767d bump version to 0.2.0 and soname to 1.0.0
The soname bump is required due to API changes since the 0.1.0 release.
Fixes #247.
2019-02-25 22:22:53 +01:00
Janne Grunau 8d3bc55c32 build: change include_directories order
Listing 'include/dav1d' before 'include' prefers the generated version.h
in include/dav1d/ over the previous one in include/. This allows the use
of '#include "version.h"' in dav1d.h. See !592.
2019-02-18 23:52:56 +01:00
Janne Grunau 7acf1360d6 arm64/ios: use prefixed dav1d_mc_warp_filter symbol 2019-02-14 00:00:16 +01:00
Janne Grunau d1c56da1d1 build: generate a installed version header for semantic versioning
Renames the current version function and define to dav1d_version_vcs()
and DAV1D_VERSION_VCS. Fixes #241.
The generated version.h is included as "dav1d/version.h" to avoid errors
with a stale include/version.h in a build dir.
2019-02-13 21:41:22 +01:00
Janne Grunau 2bc9ba828f dav1d_fuzzer_mem: test random pthread_* errors 2019-02-09 10:18:22 +01:00
Janne Grunau 50a2da6d6d clean up threads on dav1d_open failures 2019-02-09 10:18:22 +01:00
Janne Grunau 95cd440a99 arm: fix movrel macro for thumb 2019-02-02 14:47:25 +01:00
Janne Grunau a2bda8844f intrabc: adjust right border to multiple of the block size
This fixes an overlapping memcpy with
clusterfuzz-testcase-minimized-dav1d_fuzzer_mt-5734069753610240. This is
a regression introduced by "intrabc: use visible width/height in mv
correction".

This reverts commit 7677c12018.
2018-12-20 20:10:53 +01:00
Janne Grunau 763f64ccf2 memory sanitizer: check all blocks for fully initialized pixel data 2018-12-18 19:39:10 +01:00
Janne Grunau 727fff1ae4 CI: update debian32 image to treat text relocations as error 2018-12-18 15:03:48 +01:00
Janne Grunau b53a99b97f arm: define PIC if the compiler uses pic by default
Necessary for the way fedora enables `-fPIE` by default for package
builds. Fixes #221.
2018-12-16 15:58:17 +01:00
Janne Grunau 7677c12018 intrabc: use visible width/height in mv correction
Prevents adjusting intra block copy motion vectors to values pointing
out of the current tile. This happens with not entirely visible blocks in
a one super block wide/high tile. Fixes an use of uninitilized value in
inv_txfm_add_c() with
clusterfuzz-testcase-minimized-dav1d_fuzzer_mt-5746740678885376. Credits
to oss-fuzz.
2018-12-15 15:49:23 +01:00
Janne Grunau e5bca59c7b itx: cancel 16 out of '(x * 2896) >> 12' to avoid integer overflows
Fixes an integer overflow in inv_dct4_1d with
clusterfuzz-testcase-dav1d_fuzzer-5634807321591808 and in inv_adst16_1d
with clusterfuzz-testcase-dav1d_fuzzer-5761827623927808. Credits to oss-fuzz.
2018-12-12 23:49:48 +01:00
Janne Grunau 1d3f6364fe inv_identity: avoid signed int overflow for 12-bit files
Fixes #220.
2018-12-12 23:44:50 +01:00
Janne Grunau 73067e5c9a allocation fail fuzzer: use a static library and objcopy
oss-fuzz can not handle shared libraries. Do not build it by default.
2018-12-11 21:46:39 +01:00
Janne Grunau a32171340e do not build the allocation fail fuzzer when lto is enabled
Link time optimization and '--wrap' seems to not work together.
Fixes #219.
2018-12-11 13:48:28 +00:00
Janne Grunau 8bc73da355 fuzzing: add memory allocation fail fuzzer
Depends on posix_memalign and a linker supporting '--wrap' to wrap
arbitrary symbols.
2018-12-10 22:27:05 +01:00
Janne Grunau 00d1f4d501 cdf: fix memleak in dav1d_cdf_thread_unref
Observed with
clusterfuzz-testcase-minimized-dav1d_fuzzer_mt-5700224002031616. Credits
to oss-fuzz.
2018-12-10 08:47:53 +01:00
Janne Grunau 6bc4acf43c svc: move spatial layer check out of output_picture
Prevents unnecessary returns from get_picture and fixes wrong return
value when a lower spatial level was dropped from output_picture()
(0 without a valid picture instead of -EAGAIN).
2018-12-09 11:21:25 +01:00
Janne Grunau a0fb010fd0 picture: free pic_ctx on dav1d_ref_wrap error 2018-12-08 20:42:28 +01:00
Janne Grunau 488374c79e output_picture: unref pictures on allocation errors 2018-12-08 20:42:28 +01:00
Janne Grunau 3746b6e128 memory allocation error checks 2018-12-08 20:42:28 +01:00
Janne Grunau a5afcbe6f3 decode_frame: use goto error after allocation errors
Fixes memory leaks and triggered asserts after random memory allocation
errors.
2018-12-08 20:42:28 +01:00
Janne Grunau c49680e629 checkasm: replace rand() with xorshift xor128
Reduces the aarch64 checkasm run time from 22s to 2.4s.
2018-12-08 19:35:35 +01:00
Janne Grunau c82cf102fc fix mvs_ref NULL ptr dererence after allocation error 2018-12-08 17:12:21 +01:00
Janne Grunau 52b575c826 cdf: make CdfThreadContext allocation failure safe 2018-12-08 17:12:21 +01:00
Janne Grunau e72bec43b1 dav1d_open: free context completely on allocation errors 2018-12-08 14:10:32 +01:00
Janne GrunauandHenrik Gramner ceb6175d66 CI: set empty dependecies for the tests jobs
Prevents unneeded downloading of the windows build artifacts.
2018-12-07 21:15:04 +01:00
Janne Grunau 7718c4644e frame-mt: drain delayed pictures fully before returning -EAGAIN
Fixes #211, dav1d_get_picture starts draining delayed pictures when it
gets called multiple times without dav1d_send_data call in between.
2018-12-04 23:52:02 +01:00
Janne Grunau b735b80b74 frame-mt: output delayed frames as soon as possible
c->out can hold a valid picture on bitstream errors after 4903d87b73
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.
2018-12-04 23:05:51 +01:00
Janne Grunau 1e9c428ae4 film_grain: limit overlapped pixels to block boundaries
Fixes #210.
2018-12-03 23:05:33 +01:00
Janne Grunau 62dd32c474 film_grain: copy unmodified planes before applying noise
Luma output plane is used during chroma film grain. Fixes an use of
uninitialized value in iclip/apply_to_row_uv with
clusterfuzz-testcase-minimized-dav1d_fuzzer_mt-5636143299690496. Credits
to oss-fuzz.
2018-12-03 22:33:21 +01:00
Janne Grunau 4903d87b73 frame-mt: output only fully decoded frames
Fixes use of uninitialized vaue in apply_to_row_y() with
clusterfuzz-testcase-minimized-dav1d_fuzzer_mt-5753369222709248. Credits
to oss-fuzz.
2018-12-03 20:15:40 +01:00
Janne Grunau 327b7de054 backup_lpf: increment row by the correct stripe_h
Fixes #200.
2018-11-29 23:25:47 +01:00
Janne Grunau be15be3533 build: use join_paths() for doxygen paths 2018-11-29 00:36:15 +01:00
Janne Grunau 9587e70590 tile-mt: reset tile tasks when the number of tile rows changes
Fixes an assert in dav1d_prepare_intra_edges_16bpc() with
clusterfuzz-testcase-minimized-dav1d_fuzzer_mt-5640098964570112. Credits
to oss-fuzz.
2018-11-29 00:17:16 +01:00
Janne GrunauandRonald S. Bultje a1fb266463 doc: extend dav1d_flush Doxygen 2018-11-29 00:05:11 +01:00
Janne GrunauandRonald S. Bultje eb31119d07 add a Doxygen html target 2018-11-29 00:05:11 +01:00
Janne Grunau a408309589 obu/film grain: check ref frame frame_hdr before use
Fixes NULL dereference with
clusterfuzz-testcase-minimized-dav1d_fuzzer_mt-5649526686220288. Credits
to oss-fuzz.
2018-11-28 21:08:05 +01:00
Janne Grunau aee656d763 clean state in dav1d_flush() 2018-11-28 20:53:28 +01:00
Janne GrunauandJean-Baptiste Kempf f16ffc830c CI: use the sanitizer test setup to prevent timeouts 2018-11-28 19:32:12 +01:00
Janne GrunauandJean-Baptiste Kempf fcc6f66cf5 CI: make sure MSAN and UBSAN warnings are errors 2018-11-28 19:32:12 +01:00
Janne Grunau 06331de10c mc/svc: adjust frame-mt wait scanline for 8-tap filter
Fixes use of uninitialized values in
clusterfuzz-testcase-minimized-dav1d_fuzzer_mt-5767052292259840. Credits
to oss-fuzz.
2018-11-26 23:56:07 +01:00
Janne Grunau 77bbf721e7 obu: error out on missing frame_hdrs in ref frames with frame_ref_short_signaling
Fixes a NULL derefence with
clusterfuzz-testcase-minimized-dav1d_fuzzer-5724731362246656. Credits to
oss-fuzz.
2018-11-26 21:15:32 +01:00
Janne Grunau a90a691dd2 dav1d/md5: avoid unaligned 32-bit reads 2018-11-26 20:31:55 +01:00
Janne Grunau 197a19ad70 dav1d/cli: start decoding on a sequence header after '--skip' 2018-11-26 13:15:41 +01:00
Janne Grunau bbcaf41155 fuzzer: use dav1d_parse_sequence_header()
Should increase function coverage in oss-fuzz to 100%.
2018-11-26 12:51:30 +01:00
Janne GrunauandJean-Baptiste Kempf b7c64ad691 fix memleaks with ref counted sequence and frame headers 2018-11-26 11:50:44 +01:00
Janne Grunau 9ce4b734ce memset frame_hdr to fix use of uninitilized value regressions 2018-11-26 11:26:32 +01:00
Janne Grunau c1b0808c40 backup_lpf: do not store 4 pixels rows at the bottom edge of the picture
Fixes #192, an use-of-uninitialized-value in resize_c with
clusterfuzz-testcase-minimized-dav1d_fuzzer-5657755306688512. Credits to
oss-fuzz.
2018-11-24 12:44:38 +01:00
Janne Grunau 70dc7bd5a4 align tl_edge on stack for interintra prediction 2018-11-23 23:58:57 +01:00
Janne Grunau 951b0c9803 scalable: output only frames of the highest selected spatial layer
Fixes #188.
2018-11-23 22:51:29 +01:00
Janne Grunau 3a4445bd11 API/scalable: add all_layers Dav1dSettings
Refs #188, adds a dav1d CLI option. Defaults to 1 to allow adjustment of the
tests of scalable bitstreams.
2018-11-23 22:51:29 +01:00
Janne Grunau 0eafb6f5ab API/scalable: add operating point Dav1dSetting
Refs #188, adds a corrosponding dav1d CLI option and skips not required
temporal and spatial layers based on the selected operating point.
2018-11-23 22:01:22 +01:00
Janne Grunau f8e1a621f9 frame-mt: check delayed pics for decoding errors
Also mark all planes broken after tile error.
Fixes an use-of-uninitialized-value in apply_to_row_y() with
clusterfuzz-testcase-minimized-dav1d_fuzzer_mt-5652400153559040. Credits
to oss-fuzz.
2018-11-22 23:31:53 +01:00
Janne Grunau 27860ee5c4 CI: move test-debian-msan to amd64 to avoid timeouts 2018-11-22 21:19:37 +01:00