Closed Bug 1709324 Opened 5 years ago Closed 5 years ago

Update dav1d to new version a8181ebc88319e25ba6d7086b250da77e4e6748d from 2021-05-04 06:34:11

Categories

(Core :: Audio/Video: Playback, enhancement)

enhancement

Tracking

()

RESOLVED DUPLICATE of bug 1710557

People

(Reporter: update-bot, Unassigned)

References

Details

(Whiteboard: [3pl-filed])

This update covers 19 commits:


7f5759744dd3fbcc7bf34244f945551a2f25ecd6 by Martin Storsjö

https://code.videolan.org/videolan/dav1d-/commit/7f5759744dd3fbcc7bf34244f945551a2f25ecd6
Authored: 2021-03-16 08:42:30 +0200
Committed: 2021-03-16 14:01:46 +0200

checkasm: Drop one layer of macro expansion for concatenation

The usual two-layer macro expansion for concatenation isn't needed
here, as the parameters that needs expanding (PIXEL_TYPE, COEF_TYPE)
end up expanded by the intermediate checkasm_check() macro anyway.

Files Added:

  • tests/checkasm/checkasm.h

ae8958bdc7d30847158eafcec14552213708402f by Matthias Dressel

https://code.videolan.org/videolan/dav1d-/commit/ae8958bdc7d30847158eafcec14552213708402f
Authored: 2021-04-02 15:45:28 +0200
Committed: 2021-04-12 20:18:03 +0000

CI: Fix asm checks

meson 0.57.0 introduced an optimization [0] for meson test to only
rebuild test dependencies. This does not cover changing the build
configuration anymore.

[0] https://mesonbuild.com/Release-notes-for-0-57-0.html

Files Added:

  • .gitlab-ci.yml

ffb347eecdbf2d4f6b3e1c3c28966d4a779be9e1 by Martin Storsjö

https://code.videolan.org/videolan/dav1d-/commit/ffb347eecdbf2d4f6b3e1c3c28966d4a779be9e1
Authored: 2021-03-20 00:22:25 +0200
Committed: 2021-04-14 14:57:30 +0000

filmgrain: Use the BITDEPTH_MAX macro and round2 helper function

The fgy function already used the round2 helper function in this way.

Files Added:

  • src/film_grain_tmpl.c

ca29d17901db5d4ebdcac7b0832685c775e3fbef by Martin Storsjö

https://code.videolan.org/videolan/dav1d-/commit/ca29d17901db5d4ebdcac7b0832685c775e3fbef
Authored: 2021-03-21 17:09:58 +0200
Committed: 2021-04-14 14:57:30 +0000

checkasm: filmgrain: Check all overlap combinations in each run

Previously, only some combinations of overlap were tested in each run.

Also benchmark with and without overlap.

Files Added:

  • tests/checkasm/filmgrain.c

5407eaf2e69f7d17b0a14b8db390604d0f557025 by Martin Storsjö

https://code.videolan.org/videolan/dav1d-/commit/5407eaf2e69f7d17b0a14b8db390604d0f557025
Authored: 2021-03-24 14:21:37 +0200
Committed: 2021-04-14 14:57:30 +0000

attributes: Add a CHECK_OFFSET macro for verifying struct offsets

A static_assert is used if available, otherwise a custom
construct.

Files Added:

  • include/common/attributes.h

90bcb3314124d988992485aeb4bcd900904ef472 by Martin Storsjö

https://code.videolan.org/videolan/dav1d-/commit/90bcb3314124d988992485aeb4bcd900904ef472
Authored: 2021-03-15 14:26:09 +0200
Committed: 2021-04-14 14:57:30 +0000

arm64: filmgrain: Add NEON implementation of the fguv function

Relative speedup over C code:
Cortex A53 A72 A73 Apple M1
fguv_32x32xn_8bpc_420_csfl0_neon: 4.51 2.87 3.88 6.51
fguv_32x32xn_8bpc_420_csfl1_neon: 3.74 2.96 2.96 3.49
fguv_32x32xn_8bpc_422_csfl0_neon: 4.49 3.18 4.07 5.00
fguv_32x32xn_8bpc_422_csfl1_neon: 3.74 3.03 3.04 2.67
fguv_32x32xn_8bpc_444_csfl0_neon: 6.68 4.24 5.66 5.02
fguv_32x32xn_8bpc_444_csfl1_neon: 5.40 3.69 4.22 3.61

Files Added:

  • src/arm/asm-offsets.h

Files Added:

  • src/arm/64/film_grain.S
  • src/arm/film_grain_init_tmpl.c

54ad561dfa8d5b450caa2fecc741ca6c44b80e7a by Martin Storsjö

https://code.videolan.org/videolan/dav1d-/commit/54ad561dfa8d5b450caa2fecc741ca6c44b80e7a
Authored: 2021-03-22 13:18:52 +0200
Committed: 2021-04-14 14:57:30 +0000

arm64: filmgrain: Share the prologue of the fgy function

This is the same as what was done for the fguv function, to reduce
the amount of space used for it (and also simplifying the calling
code).

This gives no significant slowdown for the case currently benchmarked
by checkasm, while shrinking the code produced by film_grain.S by
320 bytes.

Files Added:

  • src/arm/64/film_grain.S
  • src/arm/film_grain_init_tmpl.c

a98f5e6056568de9125c1fbb4f63f525b95e30b1 by James Almer

https://code.videolan.org/videolan/dav1d-/commit/a98f5e6056568de9125c1fbb4f63f525b95e30b1
Authored: 2021-04-14 14:22:26 -0300
Committed: 2021-04-16 10:54:48 -0300

dav1d: add event flags to the decoding process

And a function to fetch them. Should be useful to signal changes in the
bitstream the user may want to know about.

Starting with two flags, DAV1D_EVENT_FLAG_NEW_SEQUENCE and
DAV1D_EVENT_FLAG_NEW_OP_PARAMS_INFO, which signal the presence of an updated
sequence header in the last returned (or to be returned) picture.

Files Added:

  • include/dav1d/dav1d.h
  • meson.build
  • src/decode.c
  • src/internal.h
  • src/lib.c
  • src/obu.c
  • src/picture.c
  • src/picture.h

685a73bc8b2efc948c39dcb72dfd24a5d9646811 by Martin Storsjö

https://code.videolan.org/videolan/dav1d-/commit/685a73bc8b2efc948c39dcb72dfd24a5d9646811
Authored: 2021-04-22 15:29:56 +0300
Committed: 2021-04-22 15:31:04 +0300

x86: Fix writes past the intended area in AVX2 fguv

Files Added:

  • src/x86/film_grain.asm

35d1d011fda4a92bcaf42d30ed137583b27d7f6d by Martin Storsjö

https://code.videolan.org/videolan/dav1d-/commit/35d1d011fda4a92bcaf42d30ed137583b27d7f6d
Authored: 2021-02-19 11:30:45 +0200
Committed: 2021-04-22 15:31:04 +0300

checkasm: Add macros for allocating and checking padded pixel buffers

Files Added:

  • tests/checkasm/checkasm.c
  • tests/checkasm/checkasm.h

cba53586219c5201ad56167155ec22902bbe34bf by Martin Storsjö

https://code.videolan.org/videolan/dav1d-/commit/cba53586219c5201ad56167155ec22902bbe34bf
Authored: 2021-02-19 11:31:11 +0200
Committed: 2021-04-22 15:31:04 +0300

checkasm: ipred: Use the padded pixel checking function

Files Added:

  • tests/checkasm/ipred.c

d130da9c315d5a1d3968d278bbee2238ad9051e7 by Martin Storsjö

https://code.videolan.org/videolan/dav1d-/commit/d130da9c315d5a1d3968d278bbee2238ad9051e7
Authored: 2021-03-16 14:00:12 +0200
Committed: 2021-04-22 15:31:04 +0300

checkasm: Extend the padding checker to allow for some amount of overwrite

This allows specifying that the actual buffers are allocated with some
alignment, allowing the implementations to overwrite the area between
the intended width and the aligned width, but not past that.

Files Added:

  • tests/checkasm/checkasm.c
  • tests/checkasm/checkasm.h

ee54837b0be349ac05c7806ba9df5810fb2ca693 by Martin Storsjö

https://code.videolan.org/videolan/dav1d-/commit/ee54837b0be349ac05c7806ba9df5810fb2ca693
Authored: 2021-03-16 14:01:14 +0200
Committed: 2021-04-22 15:31:04 +0300

checkasm: filmgrain: Add a padded check for fgy and fguv

This clearly specifies how much overwrite is allowed.

Files Added:

  • tests/checkasm/filmgrain.c

bd7f051168149a97867cceb8dcd5fd33d56a4957 by Martin Storsjö

https://code.videolan.org/videolan/dav1d-/commit/bd7f051168149a97867cceb8dcd5fd33d56a4957
Authored: 2021-04-27 09:13:00 +0300
Committed: 2021-04-27 09:16:50 +0300

Remove a variable that is set but not used

This fixes warnings when building with the top of tree version of
clang:

tools/input/ivf.c:69:12: warning: variable 'res' set but not used [-Wunused-but-set-variable]

Alternatively, a (void)res cast also marks the variable as used,
silencing the same warning.

Files Added:

  • tools/input/ivf.c

4023c9a445a0902da8ce7d7d3779489b4b51d4b9 by Martin Storsjö

https://code.videolan.org/videolan/dav1d-/commit/4023c9a445a0902da8ce7d7d3779489b4b51d4b9
Authored: 2021-04-26 00:38:59 +0300
Committed: 2021-04-27 15:32:40 +0300

arm64: filmgrain: Add the missing HIGHBD_DECL_SUFFIX for the fguv functions

Files Added:

  • src/arm/film_grain_init_tmpl.c

1206819d988277a63489d5c2221d7599d9c0e818 by Martin Storsjö

https://code.videolan.org/videolan/dav1d-/commit/1206819d988277a63489d5c2221d7599d9c0e818
Authored: 2021-03-26 11:45:56 +0200
Committed: 2021-04-27 15:32:40 +0300

checkasm: Implement printing of grain lut entries

Files Added:

  • tests/checkasm/checkasm.c
  • tests/checkasm/checkasm.h
  • tests/checkasm/filmgrain.c

c16c0bbeab538446c90d38afc6ee2b5e7e21be06 by Martin Storsjö

https://code.videolan.org/videolan/dav1d-/commit/c16c0bbeab538446c90d38afc6ee2b5e7e21be06
Authored: 2021-03-22 10:14:58 +0200
Committed: 2021-04-27 15:40:59 +0300

arm64: filmgrain: Add NEON implementation of the generate_grain_y function

Relative speedup over C code:
Cortex A53 A72 A73 Apple M1
gen_grain_y_ar0_8bpc_neon: 5.03 5.17 5.59 5.55
gen_grain_y_ar1_8bpc_neon: 3.38 3.38 3.56 2.77
gen_grain_y_ar2_8bpc_neon: 5.00 4.64 5.06 3.38
gen_grain_y_ar3_8bpc_neon: 6.74 6.53 6.67 4.66

Files Added:

  • src/arm/64/film_grain.S
  • src/arm/asm-offsets.h
  • src/arm/film_grain_init_tmpl.c

136585101bd5fa8a07a5c7bf66390439a1c7d387 by Wan-Teh Chang

https://code.videolan.org/videolan/dav1d-/commit/136585101bd5fa8a07a5c7bf66390439a1c7d387
Authored: 2021-04-28 01:54:31 +0000
Committed: 2021-04-28 17:48:22 +0000

Subsample out->p.h correctly in dav1d_apply_grain

The height of the chroma planes should be calculated as
(out->p.h + ss_ver) >> ss_ver, not out->p.h >> ss_ver.

This bug was reported in https://crbug.com/1201074. The bug can be
detected by decoding an AVIF image of size 228x1 that has film grain
synthesis under MemorySanitizer. MemorySanitizer reports a
use-of-uninitialized-value error when we read the U plane at index 64.

Files Added:

  • src/fg_apply_tmpl.c

a8181ebc88319e25ba6d7086b250da77e4e6748d by Martin Storsjö

https://code.videolan.org/videolan/dav1d-/commit/a8181ebc88319e25ba6d7086b250da77e4e6748d
Authored: 2021-04-08 14:11:59 +0300
Committed: 2021-05-04 06:34:11 +0000

arm64: filmgrain: Add NEON implementation of the generate_grain_uv functions

The existing functions/macros for generate_grain_y are templated
for adding in the a final coefficient from the y buffer, while
trying to keep the binary size down.

Relative speedup over C code:
Cortex A53 A72 A73 Apple M1
gen_grain_uv_ar0_8bpc_420_neon: 4.62 4.55 5.27 9.08
gen_grain_uv_ar0_8bpc_422_neon: 4.81 4.90 5.33 7.25
gen_grain_uv_ar0_8bpc_444_neon: 5.05 5.17 5.69 7.04
gen_grain_uv_ar1_8bpc_420_neon: 3.61 3.09 3.68 3.92
gen_grain_uv_ar1_8bpc_422_neon: 3.71 3.22 3.64 3.46
gen_grain_uv_ar1_8bpc_444_neon: 3.59 3.40 3.67 3.11
gen_grain_uv_ar2_8bpc_420_neon: 4.77 3.85 4.81 4.55
gen_grain_uv_ar2_8bpc_422_neon: 4.88 3.96 4.85 4.15
gen_grain_uv_ar2_8bpc_444_neon: 5.18 4.65 5.18 3.83
gen_grain_uv_ar3_8bpc_420_neon: 6.14 5.25 6.14 5.64
gen_grain_uv_ar3_8bpc_422_neon: 6.27 5.27 6.28 5.42
gen_grain_uv_ar3_8bpc_444_neon: 6.84 6.40 6.79 5.18

Files Added:

  • src/arm/64/film_grain.S
  • src/arm/asm-offsets.h
  • src/arm/film_grain_init_tmpl.c

./mach vendor %s failed with the following message:

Could not vendor library. Received the following error from ./mach vendor:> > 0:00.16 Starting new HTTPS connection (1): code.videolan.org> 0:00.55 Latest commit is a8181ebc88319e25ba6d7086b250da77e4e6748d from 2021-05-04T06:34:11.000+00:00> 0:00.55 Fetching code archive from https://code.videolan.org/videolan/dav1d/-/archive/a8181ebc88319e25ba6d7086b250da77e4e6748d.tar.gz> 0:00.55 Starting new HTTPS connection (1): code.videolan.org> 0:01.50 rm -rf third_party/dav1d> 0:01.51 Unpacking upstream files from third_party/dav1d.> 0:01.58 Removing unnecessary files.> 0:01.58 Removing: ['third_party/dav1d/build/.gitattributes', 'third_party/dav1d/build/.gitignore', 'third_party/dav1d/.gitignore', 'third_party/dav1d/.gitlab-ci.yml']> 0:01.58 Updating moz.yaml.> Found release: commit 6c6d25d355b78556d231b1a5633ded2ddb9e3774 (2021-03-15T14:38:41.000+02:00).> > Found revision: 6c6d25d355b78556d231b1a5633ded2ddb9e3774> > 0:01.58 Updating files> 0:01.59 Registering changes with version control.> 0:02.20 Updating moz.build files> 0:06.63 Could not add third_party/dav1d/src/arm/asm-offsets.h to the appropriate moz.build file> 0:06.63 This is a deficiency in ./mach vendor and should be reported to the Updatebot maintainers.

Flags: needinfo?(tom)
Status: UNCONFIRMED → RESOLVED
Closed: 5 years ago
Flags: needinfo?(tom)
Resolution: --- → DUPLICATE
You need to log in before you can comment on or make changes to this bug.