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 Grunau and Jean-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 Grunau and Jean-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 Grunau and Jean-Baptiste Kempf
ac1cb28d1e
fuzzer: parse '--cpumask X' command line argument
2020-09-27 15:38:45 +02:00
Janne Grunau and Jean-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 Grunau and Henrik Gramner
d0e50cacea
CI: compare x86inc.asm with upstream
2020-08-21 15:13:49 +02:00
Janne Grunau and Henrik 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 Grunau and Henrik 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 Grunau and Jean-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 Grunau and Jean-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 Grunau and Jean-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 Grunau and Henrik 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 Grunau and Martin 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 Grunau and Jean-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 Grunau and Jean-Baptiste Kempf
3680b11a60
tools/dav1d/md5: bswap big endian high bit depth pixel data
2019-03-14 11:23:47 +01:00
Janne Grunau and Jean-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 Grunau and Jean-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 Grunau and Jean-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 Grunau and Henrik 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 Grunau and Ronald S. Bultje
a1fb266463
doc: extend dav1d_flush Doxygen
2018-11-29 00:05:11 +01:00
Janne Grunau and Ronald 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 Grunau and Jean-Baptiste Kempf
f16ffc830c
CI: use the sanitizer test setup to prevent timeouts
2018-11-28 19:32:12 +01:00
Janne Grunau and Jean-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 Grunau and Jean-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