-
Notifications
You must be signed in to change notification settings - Fork 1.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Cocoa] Add an open source AVIF decoder to WebKit (libavif and dav1d) #5669
Merged
webkit-early-warning-system
merged 1 commit into
WebKit:main
from
litherum:eng/Cocoa-Add-an-open-source-AVIF-decoder-to-WebKit-libavif-and-dav1d
Oct 22, 2022
Merged
[Cocoa] Add an open source AVIF decoder to WebKit (libavif and dav1d) #5669
webkit-early-warning-system
merged 1 commit into
WebKit:main
from
litherum:eng/Cocoa-Add-an-open-source-AVIF-decoder-to-WebKit-libavif-and-dav1d
Oct 22, 2022
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Contributor
EWS run on current version of this PR (hash 556930b) |
This is the updated version of #5433. |
Marking as draft to indicate that there's no need to review this. |
https://bugs.webkit.org/show_bug.cgi?id=246598 rdar://101226446 Reviewed by Elliott Williams. The purpose of this patch is to bring AVIF image decoding to older versions of macOS. AVIF images are natively supported in macOS in macOS Ventura, but WebKit ships to versions of macOS older than that. If we want AVIF images to be supported on those OSes, WebKit has to include an image decoder. The decoder this patch adds can be deleted as soon as all macOS versions that WebKit targets support AVIF. This is being included as part of WebKit, rather than a separate project/repo, simply for expedience. WebCore is the only customer of this image decoder; other Cocoa software that wants to use AVIF should use the system decoder. WebKit is special here because we ship to old OSes. The open source image decoder consists of 2 libraries: libavif, which parses the file, and dav1d, which is a software AV1 decoder. AVIF images use the AV1 codec internally. The version of libavif contained in this patch came from tag v0.11.0 in this repository: https://github.com/AOMediaCodec/libavif.git. This tag corresponds to commit 3c48152f9a22bd9ae827c9cbaf7f4db3e6387d48. The contents of the repository are completely unmodified. I had to check in some generated files; the process I used to generate them is: % mkdir builddir % cd builddir % xcrun cmake -DAVIF_CODEC_DAV1D=yes -DDAV1D_LIBRARY=/Users/mmaxfield/src/dav1d/builddir/src/libdav1d.a -DDAV1D_INCLUDE_DIR=/Users/mmaxfield/src/dav1d/builddir/include -DBUILD_SHARED_LIBS=false .. % xcrun cmake --build . The version of dav1d contained in this patch came from tag 1.0.0 in this repository: https://code.videolan.org/videolan/dav1d.git. This tag corresponds to commit 99172b11470776177939c3d2bc366fe8d904eab7. The contents of the repository are completely unmodified. I had to check in some generated files; the process I used to generate them is: % meson setup -Denable_asm=false -Ddefault_library=static builddir % cd builddir % ninja % cp ../include/dav1d/*.h include/dav1d/ I created Xcode projects for both of these libraries. For dav1d, I did not include any of the assembly language files in the compilation target; this will aid us being able to build for both Intel macs and Apple Silicon macs. The goal of this project is format support on old OSes; it's okay if the implementation isn't super-assembly-language-fast. I had to create Xcode projects for these libraries, rather than just adding new Xcode targets, because there are filename colisions between these libraries and PAL. Specifically, there is a config.h in dav1d and in PAL. Headermaps do not allow for the same project to contain the duplicate filenames, so I created the following project structure: WebCore.xcodeproj | +--> PAL.xcodeproj | +--> libavif.xcodeproj | +--> dav1d.xcodeproj These projects are parents of each other, rather than siblings, so we can set up correct dependency chains / include paths from depended-on projects to depending projects. The projects are set up to create static libraries. I copied the projects' xcconfig files from PAL's xcconfig files. I'm intentionally setting up these projects to compile on all OSes, not just old versions of macOS. The reason for this is just conditional compilation is complicated to set up, and the full build for these libraries takes literally 3 seconds on my machine. The cost is not worth the benefit. However, I am avoiding linking with this library on older OSes, to avoid the potential binary size increase. Both of these libraries are placed in their own directories, kept separate from Apple proprietary code, and all original headers, copyright notices and license information within their source code are retained. * Source/WebCore/PAL/Configurations/PAL.xcconfig: * Source/WebCore/PAL/PAL.xcodeproj/project.pbxproj: * Source/WebCore/PAL/libavif/CHANGELOG.md: Added. * Source/WebCore/PAL/libavif/CMakeLists.txt: Added. * Source/WebCore/PAL/libavif/Configurations/Base.xcconfig: Added. * Source/WebCore/PAL/libavif/Configurations/DebugRelease.xcconfig: Added. * Source/WebCore/PAL/libavif/Configurations/libavif.xcconfig: Copied from Source/WebCore/PAL/Configurations/PAL.xcconfig. * Source/WebCore/PAL/libavif/LICENSE: Added. * Source/WebCore/PAL/libavif/README.md: Added. * Source/WebCore/PAL/libavif/android_jni/.gitignore: Added. * Source/WebCore/PAL/libavif/android_jni/README.md: Added. * Source/WebCore/PAL/libavif/android_jni/avifandroidjni/.gitignore: Added. * Source/WebCore/PAL/libavif/android_jni/avifandroidjni/build.gradle: Added. * Source/WebCore/PAL/libavif/android_jni/avifandroidjni/proguard-rules.pro: Added. * Source/WebCore/PAL/libavif/android_jni/avifandroidjni/src/main/AndroidManifest.xml: Added. * Source/WebCore/PAL/libavif/android_jni/avifandroidjni/src/main/java/org/aomedia/avif/android/AvifDecoder.java: Added. (AvifDecoder): (AvifDecoder...catch): (AvifDecoder...AvifDecoder): (AvifDecoder...Info): (AvifDecoder...isAvifImage): * Source/WebCore/PAL/libavif/android_jni/avifandroidjni/src/main/jni/CMakeLists.txt: Added. * Source/WebCore/PAL/libavif/android_jni/avifandroidjni/src/main/jni/libavif_jni.cc: Added. * Source/WebCore/PAL/libavif/android_jni/build.gradle: Added. * Source/WebCore/PAL/libavif/android_jni/gradle.properties: Added. * Source/WebCore/PAL/libavif/android_jni/gradle/wrapper/gradle-wrapper.jar: Added. * Source/WebCore/PAL/libavif/android_jni/gradle/wrapper/gradle-wrapper.properties: Added. * Source/WebCore/PAL/libavif/android_jni/gradlew: Added. * Source/WebCore/PAL/libavif/android_jni/gradlew.bat: Added. * Source/WebCore/PAL/libavif/android_jni/settings.gradle: Added. * Source/WebCore/PAL/libavif/apps/avifdec.c: Added. (syntax): (main): * Source/WebCore/PAL/libavif/apps/avifenc.c: Added. (syntax): (quantizerString): (parseCICP): (parseU32List): (convertCropToClap): (avifInputGetNextFile): (avifInputHasRemainingData): (avifInputReadImage): (readEntireFile): (avifImageSplitGrid): (main): * Source/WebCore/PAL/libavif/apps/shared/avifjpeg.c: Added. (my_error_exit): (avifJPEGCopyPixels): (avifJPEGHasCompatibleMatrixCoefficients): (avifJPEGReadCopy): (avifJPEGReadUint32BigEndian): (avifJPEGFindSubstr): (avifJPEGRead): (avifJPEGWrite): * Source/WebCore/PAL/libavif/apps/shared/avifjpeg.h: Added. * Source/WebCore/PAL/libavif/apps/shared/avifpng.c: Added. (avifHexStringToBytes): (avifCopyRawProfile): (avifRemoveHeader): (avifExtractExifAndXMP): (avifPNGRead): (avifPNGWrite): * Source/WebCore/PAL/libavif/apps/shared/avifpng.h: Added. * Source/WebCore/PAL/libavif/apps/shared/avifutil.c: Added. (calcGCD): (printClapFraction): (avifImageDumpInternal): (avifImageDump): (avifContainerDump): (avifPrintVersions): (avifGuessFileFormat): (avifReadImage): (avifDumpDiagnostics): (avifQueryCPUCount): * Source/WebCore/PAL/libavif/apps/shared/avifutil.h: Added. * Source/WebCore/PAL/libavif/apps/shared/iccjpeg.c: Added. (write_icc_profile): (setup_read_icc_profile): (marker_is_icc): (read_icc_profile): * Source/WebCore/PAL/libavif/apps/shared/iccjpeg.h: Added. * Source/WebCore/PAL/libavif/apps/shared/y4m.c: Added. (y4mColorSpaceParse): (y4mFramerateParse): (getHeaderString): (y4mReadLine): (y4mRead): (y4mWrite): * Source/WebCore/PAL/libavif/apps/shared/y4m.h: Added. * Source/WebCore/PAL/libavif/appveyor.yml: Added. * Source/WebCore/PAL/libavif/cmake/Modules/Findaom.cmake: Added. * Source/WebCore/PAL/libavif/cmake/Modules/Finddav1d.cmake: Added. * Source/WebCore/PAL/libavif/cmake/Modules/Findlibgav1.cmake: Added. * Source/WebCore/PAL/libavif/cmake/Modules/Findlibsharpyuv.cmake: Added. * Source/WebCore/PAL/libavif/cmake/Modules/Findlibyuv.cmake: Added. * Source/WebCore/PAL/libavif/cmake/Modules/Findrav1e.cmake: Added. * Source/WebCore/PAL/libavif/cmake/Modules/Findsvt.cmake: Added. * Source/WebCore/PAL/libavif/contrib/CMakeLists.txt: Added. * Source/WebCore/PAL/libavif/contrib/README.md: Added. * Source/WebCore/PAL/libavif/contrib/gdk-pixbuf/CMakeLists.txt: Added. * Source/WebCore/PAL/libavif/contrib/gdk-pixbuf/avif.thumbnailer.in: Added. * Source/WebCore/PAL/libavif/contrib/gdk-pixbuf/loader.c: Added. (avif_context_free): (avif_context_try_load): (begin_load): (stop_load): (load_increment): (avif_is_save_option_supported): (avif_image_saver): (fill_vtable): (fill_info): * Source/WebCore/PAL/libavif/contrib/irefmerge.coffee: Added. * Source/WebCore/PAL/libavif/dav1d/CONTRIBUTING.md: Added. * Source/WebCore/PAL/libavif/dav1d/COPYING: Added. * Source/WebCore/PAL/libavif/dav1d/Configurations/Base.xcconfig: Added. * Source/WebCore/PAL/libavif/dav1d/Configurations/DebugRelease.xcconfig: Added. * Source/WebCore/PAL/libavif/dav1d/Configurations/bitdepth_16.xcconfig: Added. * Source/WebCore/PAL/libavif/dav1d/Configurations/bitdepth_8.xcconfig: Added. * Source/WebCore/PAL/libavif/dav1d/Configurations/dav1d.xcconfig: Copied from Source/WebCore/PAL/Configurations/PAL.xcconfig. * Source/WebCore/PAL/libavif/dav1d/NEWS: Added. * Source/WebCore/PAL/libavif/dav1d/README.md: Added. * Source/WebCore/PAL/libavif/dav1d/THANKS.md: Added. * Source/WebCore/PAL/libavif/dav1d/config.h: Added. * Source/WebCore/PAL/libavif/dav1d/dav1d.xcodeproj/project.pbxproj: Added. * Source/WebCore/PAL/libavif/dav1d/doc/Doxyfile.in: Added. * Source/WebCore/PAL/libavif/dav1d/doc/PATENTS: Added. * Source/WebCore/PAL/libavif/dav1d/doc/dav1d_logo.png: Added. * Source/WebCore/PAL/libavif/dav1d/doc/dav1d_logo.svg: Added. * Source/WebCore/PAL/libavif/dav1d/doc/meson.build: Added. * Source/WebCore/PAL/libavif/dav1d/examples/dav1dplay.c: Added. (parse_unsigned): (dp_rd_ctx_parse_args): (dp_rd_ctx_destroy): (dp_rd_ctx_create): (dp_rd_ctx_post_event): (dp_rd_ctx_update_with_dav1d_picture): (dp_rd_ctx_toggle_pause): (dp_rd_ctx_is_paused): (dp_rd_ctx_seek): (dp_rd_ctx_handle_seek): (dp_rd_ctx_request_shutdown): (dp_rd_ctx_should_terminate): (dp_rd_ctx_render): (decode_frame): (destroy_pic): (decoder_thread_main): (main): * Source/WebCore/PAL/libavif/dav1d/examples/dp_fifo.c: Added. (dp_fifo_create): (dp_fifo_destroy): (dp_fifo_push): (dp_fifo_array_shift): (dp_fifo_shift): (dp_fifo_flush): * Source/WebCore/PAL/libavif/dav1d/examples/dp_fifo.h: Added. * Source/WebCore/PAL/libavif/dav1d/examples/dp_renderer.h: Added. (dp_create_sdl_window): * Source/WebCore/PAL/libavif/dav1d/examples/dp_renderer_placebo.c: Added. (placebo_renderer_create_common): (placebo_renderer_create_gl): (placebo_renderer_create_vk): (placebo_renderer_destroy): (placebo_render): (placebo_upload_image): (placebo_alloc_pic): (placebo_release_pic): * Source/WebCore/PAL/libavif/dav1d/examples/dp_renderer_sdl.c: Added. (sdl_renderer_create): (sdl_renderer_destroy): (sdl_render): (sdl_update_texture): * Source/WebCore/PAL/libavif/dav1d/examples/meson.build: Added. * Source/WebCore/PAL/libavif/dav1d/gcovr.cfg: Added. * Source/WebCore/PAL/libavif/dav1d/include/common/attributes.h: Added. (ctz): (clz): (clzll): * Source/WebCore/PAL/libavif/dav1d/include/common/bitdepth.h: Added. (pixel_set): (PXSTRIDE): * Source/WebCore/PAL/libavif/dav1d/include/common/dump.h: Added. (append_plane_to_file): (hex_fdump): (hex_dump): (coef_dump): (ac_dump): * Source/WebCore/PAL/libavif/dav1d/include/common/frame.h: Added. * Source/WebCore/PAL/libavif/dav1d/include/common/intops.h: Added. (imax): (imin): (umax): (umin): (iclip): (iclip_u8): (apply_sign): (apply_sign64): (ulog2): (u64log2): (inv_recenter): * Source/WebCore/PAL/libavif/dav1d/include/common/validate.h: Added. * Source/WebCore/PAL/libavif/dav1d/include/compat/gcc/stdatomic.h: Added. * Source/WebCore/PAL/libavif/dav1d/include/compat/getopt.h: Added. * Source/WebCore/PAL/libavif/dav1d/include/compat/msvc/stdatomic.h: Added. * Source/WebCore/PAL/libavif/dav1d/include/dav1d/common.h: Added. * Source/WebCore/PAL/libavif/dav1d/include/dav1d/data.h: Added. * Source/WebCore/PAL/libavif/dav1d/include/dav1d/dav1d.h: Added. * Source/WebCore/PAL/libavif/dav1d/include/dav1d/headers.h: Added. * Source/WebCore/PAL/libavif/dav1d/include/dav1d/meson.build: Added. * Source/WebCore/PAL/libavif/dav1d/include/dav1d/picture.h: Added. * Source/WebCore/PAL/libavif/dav1d/include/dav1d/version.h: Added. * Source/WebCore/PAL/libavif/dav1d/include/dav1d/version.h.in: Added. * Source/WebCore/PAL/libavif/dav1d/include/meson.build: Added. * Source/WebCore/PAL/libavif/dav1d/include/vcs_version.h: Added. * Source/WebCore/PAL/libavif/dav1d/include/vcs_version.h.in: Added. * Source/WebCore/PAL/libavif/dav1d/meson.build: Added. * Source/WebCore/PAL/libavif/dav1d/meson_options.txt: Added. * Source/WebCore/PAL/libavif/dav1d/package/crossfiles/aarch64-android.meson: Added. * Source/WebCore/PAL/libavif/dav1d/package/crossfiles/arm-android.meson: Added. * Source/WebCore/PAL/libavif/dav1d/package/crossfiles/i686-linux32.meson: Added. * Source/WebCore/PAL/libavif/dav1d/package/crossfiles/i686-w64-mingw32.meson: Added. * Source/WebCore/PAL/libavif/dav1d/package/crossfiles/x86_64-w64-mingw32.meson: Added. * Source/WebCore/PAL/libavif/dav1d/package/snap/snapcraft.yaml: Added. * Source/WebCore/PAL/libavif/dav1d/src/arm/32/cdef.S: Added. * Source/WebCore/PAL/libavif/dav1d/src/arm/32/cdef16.S: Added. * Source/WebCore/PAL/libavif/dav1d/src/arm/32/cdef_tmpl.S: Added. * Source/WebCore/PAL/libavif/dav1d/src/arm/32/filmgrain.S: Added. * Source/WebCore/PAL/libavif/dav1d/src/arm/32/filmgrain16.S: Added. * Source/WebCore/PAL/libavif/dav1d/src/arm/32/ipred.S: Added. * Source/WebCore/PAL/libavif/dav1d/src/arm/32/ipred16.S: Added. * Source/WebCore/PAL/libavif/dav1d/src/arm/32/itx.S: Added. * Source/WebCore/PAL/libavif/dav1d/src/arm/32/itx16.S: Added. * Source/WebCore/PAL/libavif/dav1d/src/arm/32/loopfilter.S: Added. * Source/WebCore/PAL/libavif/dav1d/src/arm/32/loopfilter16.S: Added. * Source/WebCore/PAL/libavif/dav1d/src/arm/32/looprestoration.S: Added. * Source/WebCore/PAL/libavif/dav1d/src/arm/32/looprestoration16.S: Added. * Source/WebCore/PAL/libavif/dav1d/src/arm/32/looprestoration_common.S: Added. * Source/WebCore/PAL/libavif/dav1d/src/arm/32/looprestoration_tmpl.S: Added. * Source/WebCore/PAL/libavif/dav1d/src/arm/32/mc.S: Added. * Source/WebCore/PAL/libavif/dav1d/src/arm/32/mc16.S: Added. * Source/WebCore/PAL/libavif/dav1d/src/arm/32/msac.S: Added. * Source/WebCore/PAL/libavif/dav1d/src/arm/32/refmvs.S: Added. * Source/WebCore/PAL/libavif/dav1d/src/arm/32/util.S: Added. * Source/WebCore/PAL/libavif/dav1d/src/arm/64/cdef.S: Added. * Source/WebCore/PAL/libavif/dav1d/src/arm/64/cdef16.S: Added. * Source/WebCore/PAL/libavif/dav1d/src/arm/64/cdef_tmpl.S: Added. * Source/WebCore/PAL/libavif/dav1d/src/arm/64/filmgrain.S: Added. * Source/WebCore/PAL/libavif/dav1d/src/arm/64/filmgrain16.S: Added. * Source/WebCore/PAL/libavif/dav1d/src/arm/64/ipred.S: Added. * Source/WebCore/PAL/libavif/dav1d/src/arm/64/ipred16.S: Added. * Source/WebCore/PAL/libavif/dav1d/src/arm/64/itx.S: Added. * Source/WebCore/PAL/libavif/dav1d/src/arm/64/itx16.S: Added. * Source/WebCore/PAL/libavif/dav1d/src/arm/64/loopfilter.S: Added. * Source/WebCore/PAL/libavif/dav1d/src/arm/64/loopfilter16.S: Added. * Source/WebCore/PAL/libavif/dav1d/src/arm/64/looprestoration.S: Added. * Source/WebCore/PAL/libavif/dav1d/src/arm/64/looprestoration16.S: Added. * Source/WebCore/PAL/libavif/dav1d/src/arm/64/looprestoration_common.S: Added. * Source/WebCore/PAL/libavif/dav1d/src/arm/64/looprestoration_tmpl.S: Added. * Source/WebCore/PAL/libavif/dav1d/src/arm/64/mc.S: Added. * Source/WebCore/PAL/libavif/dav1d/src/arm/64/mc16.S: Added. * Source/WebCore/PAL/libavif/dav1d/src/arm/64/msac.S: Added. * Source/WebCore/PAL/libavif/dav1d/src/arm/64/refmvs.S: Added. * Source/WebCore/PAL/libavif/dav1d/src/arm/64/util.S: Added. * Source/WebCore/PAL/libavif/dav1d/src/arm/asm-offsets.h: Added. * Source/WebCore/PAL/libavif/dav1d/src/arm/asm.S: Added. * Source/WebCore/PAL/libavif/dav1d/src/arm/cdef_init_tmpl.c: Added. (dav1d_cdef_dsp_init_arm): * Source/WebCore/PAL/libavif/dav1d/src/arm/cpu.c: Added. (parse_proc_cpuinfo): (dav1d_get_cpu_flags_arm): * Source/WebCore/PAL/libavif/dav1d/src/arm/cpu.h: Added. * Source/WebCore/PAL/libavif/dav1d/src/arm/filmgrain_init_tmpl.c: Added. (get_random_number): (fgy_32x32xn_neon): (dav1d_film_grain_dsp_init_arm): * Source/WebCore/PAL/libavif/dav1d/src/arm/ipred_init_tmpl.c: Added. (dav1d_intra_pred_dsp_init_arm): * Source/WebCore/PAL/libavif/dav1d/src/arm/itx_init_tmpl.c: Added. (dav1d_itx_dsp_init_arm): * Source/WebCore/PAL/libavif/dav1d/src/arm/loopfilter_init_tmpl.c: Added. (dav1d_loop_filter_dsp_init_arm): * Source/WebCore/PAL/libavif/dav1d/src/arm/looprestoration_init_tmpl.c: Added. (wiener_filter_neon): (dav1d_sgr_filter1_neon): (dav1d_sgr_filter2_neon): (sgr_filter_5x5_neon): (sgr_filter_3x3_neon): (sgr_filter_mix_neon): (dav1d_loop_restoration_dsp_init_arm): * Source/WebCore/PAL/libavif/dav1d/src/arm/mc_init_tmpl.c: Added. (dav1d_mc_dsp_init_arm): * Source/WebCore/PAL/libavif/dav1d/src/arm/msac.h: Added. * Source/WebCore/PAL/libavif/dav1d/src/arm/refmvs_init.c: Added. (dav1d_refmvs_dsp_init_arm): * Source/WebCore/PAL/libavif/dav1d/src/cdef.h: Added. * Source/WebCore/PAL/libavif/dav1d/src/cdef_apply.h: Added. * Source/WebCore/PAL/libavif/dav1d/src/cdef_apply_tmpl.c: Added. (backup2lines): (backup2x8): (adjust_strength): (dav1d_cdef_brow): * Source/WebCore/PAL/libavif/dav1d/src/cdef_tmpl.c: Added. (constrain): (fill): (padding): (cdef_filter_block_c): (cdef_find_dir_c): (dav1d_cdef_dsp_init): * Source/WebCore/PAL/libavif/dav1d/src/cdf.c: Added. (get_qcat_idx): (dav1d_cdf_thread_init_static): (dav1d_cdf_thread_copy): (dav1d_cdf_thread_alloc): (dav1d_cdf_thread_ref): (dav1d_cdf_thread_unref): * Source/WebCore/PAL/libavif/dav1d/src/cdf.h: Added. * Source/WebCore/PAL/libavif/dav1d/src/cpu.c: Added. (dav1d_init_cpu): (dav1d_get_cpu_flags): (dav1d_set_cpu_flags_mask): (dav1d_num_logical_processors): * Source/WebCore/PAL/libavif/dav1d/src/cpu.h: Added. * Source/WebCore/PAL/libavif/dav1d/src/ctx.h: Added. * Source/WebCore/PAL/libavif/dav1d/src/data.c: Added. (dav1d_data_create_internal): (dav1d_data_wrap_internal): (dav1d_data_wrap_user_data_internal): (dav1d_data_ref): (dav1d_data_props_copy): (dav1d_data_props_set_defaults): (dav1d_data_props_unref_internal): (dav1d_data_unref_internal): * Source/WebCore/PAL/libavif/dav1d/src/data.h: Added. * Source/WebCore/PAL/libavif/dav1d/src/dav1d.rc.in: Added. * Source/WebCore/PAL/libavif/dav1d/src/decode.c: Added. (init_quant_tables): (read_mv_component_diff): (read_mv_residual): (read_tx_tree): (neg_deinterleave): (find_matching_ref): (derive_warpmv): (findoddzero): (read_pal_plane): (read_pal_uv): (order_palette): (read_pal_indices): (read_vartx_tree): (get_prev_frame_segid): (splat_oneref_mv): (splat_intrabc_mv): (splat_tworef_mv): (splat_intraref): (mc_lowest_px): (affine_lowest_px): (obmc_lowest_px): (decode_b): (checked_decode_b): (decode_sb): (reset_context): (read_restoration_info): (dav1d_decode_tile_sbrow): (dav1d_decode_frame_init): (dav1d_decode_frame_init_cdf): (dav1d_decode_frame_main): (dav1d_decode_frame_exit): (dav1d_decode_frame): (get_upscale_x0): (dav1d_submit_frame): * Source/WebCore/PAL/libavif/dav1d/src/decode.h: Added. * Source/WebCore/PAL/libavif/dav1d/src/dequant_tables.c: Added. * Source/WebCore/PAL/libavif/dav1d/src/dequant_tables.h: Added. * Source/WebCore/PAL/libavif/dav1d/src/env.h: Added. (get_intra_ctx): (get_tx_ctx): (get_partition_ctx): (gather_left_partition_prob): (gather_top_partition_prob): (get_uv_inter_txtp): (get_filter_ctx): (get_comp_ctx): (get_comp_dir_ctx): (get_poc_diff): (get_jnt_comp_ctx): (get_mask_comp_ctx): (av1_get_ref_ctx): (av1_get_fwd_ref_ctx): (av1_get_fwd_ref_1_ctx): (av1_get_fwd_ref_2_ctx): (av1_get_bwd_ref_ctx): (av1_get_bwd_ref_1_ctx): (av1_get_uni_p1_ctx): (get_drl_context): (get_cur_frame_segid): (fix_int_mv_precision): (fix_mv_precision): (get_gmv_2d): * Source/WebCore/PAL/libavif/dav1d/src/ext/x86/x86inc.asm: Added. * Source/WebCore/PAL/libavif/dav1d/src/fg_apply.h: Added. * Source/WebCore/PAL/libavif/dav1d/src/fg_apply_tmpl.c: Added. (generate_scaling): (dav1d_prep_grain): (dav1d_apply_grain_row): (dav1d_apply_grain): * Source/WebCore/PAL/libavif/dav1d/src/filmgrain.h: Added. * Source/WebCore/PAL/libavif/dav1d/src/filmgrain_tmpl.c: Added. (get_random_number): (round2): (generate_grain_y_c): (generate_grain_uv_c): (sample_lut): (fgy_32x32xn_c): (fguv_32x32xn_c): (dav1d_film_grain_dsp_init): * Source/WebCore/PAL/libavif/dav1d/src/getbits.c: Added. (dav1d_init_get_bits): (refill): (dav1d_get_bits): (dav1d_get_sbits): (dav1d_get_uleb128): (dav1d_get_uniform): (dav1d_get_vlc): (get_bits_subexp_u): (dav1d_get_bits_subexp): (dav1d_bytealign_get_bits): * Source/WebCore/PAL/libavif/dav1d/src/getbits.h: Added. (dav1d_get_bits_pos): * Source/WebCore/PAL/libavif/dav1d/src/internal.h: Added. (Dav1dTaskContext::ALIGN): * Source/WebCore/PAL/libavif/dav1d/src/intra_edge.c: Added. (init_edges): (init_mode_node): (dav1d_init_mode_tree): * Source/WebCore/PAL/libavif/dav1d/src/intra_edge.h: Added. * Source/WebCore/PAL/libavif/dav1d/src/ipred.h: Added. * Source/WebCore/PAL/libavif/dav1d/src/ipred_prepare.h: Added. (sm_flag): (sm_uv_flag): * Source/WebCore/PAL/libavif/dav1d/src/ipred_prepare_tmpl.c: Added. (dav1d_prepare_intra_edges): * Source/WebCore/PAL/libavif/dav1d/src/ipred_tmpl.c: Added. (splat_dc): (cfl_pred): (dc_gen_top): (ipred_dc_top_c): (ipred_cfl_top_c): (dc_gen_left): (ipred_dc_left_c): (ipred_cfl_left_c): (dc_gen): (ipred_dc_c): (ipred_cfl_c): (ipred_dc_128_c): (ipred_cfl_128_c): (ipred_v_c): (ipred_h_c): (ipred_paeth_c): (ipred_smooth_c): (ipred_smooth_v_c): (ipred_smooth_h_c): (get_filter_strength): (filter_edge): (get_upsample): (upsample_edge): (ipred_z1_c): (ipred_z2_c): (ipred_z3_c): (ipred_filter_c): (cfl_ac_c): (pal_pred_c): (dav1d_intra_pred_dsp_init): * Source/WebCore/PAL/libavif/dav1d/src/itx.h: Added. * Source/WebCore/PAL/libavif/dav1d/src/itx_1d.c: Added. (inv_dct4_1d_internal_c): (dav1d_inv_dct4_1d_c): (inv_dct8_1d_internal_c): (dav1d_inv_dct8_1d_c): (inv_dct16_1d_internal_c): (dav1d_inv_dct16_1d_c): (inv_dct32_1d_internal_c): (dav1d_inv_dct32_1d_c): (dav1d_inv_dct64_1d_c): (inv_adst4_1d_internal_c): (inv_adst8_1d_internal_c): (inv_adst16_1d_internal_c): (dav1d_inv_identity4_1d_c): (dav1d_inv_identity8_1d_c): (dav1d_inv_identity16_1d_c): (dav1d_inv_identity32_1d_c): (dav1d_inv_wht4_1d_c): * Source/WebCore/PAL/libavif/dav1d/src/itx_1d.h: Added. * Source/WebCore/PAL/libavif/dav1d/src/itx_tmpl.c: Added. (inv_txfm_add_c): (inv_txfm_add_wht_wht_4x4_c): (dav1d_itx_dsp_init): * Source/WebCore/PAL/libavif/dav1d/src/levels.h: Added. * Source/WebCore/PAL/libavif/dav1d/src/lf_apply.h: Added. * Source/WebCore/PAL/libavif/dav1d/src/lf_apply_tmpl.c: Added. (backup_lpf): (dav1d_copy_lpf): (filter_plane_cols_y): (filter_plane_rows_y): (filter_plane_cols_uv): (filter_plane_rows_uv): (dav1d_loopfilter_sbrow_cols): (dav1d_loopfilter_sbrow_rows): * Source/WebCore/PAL/libavif/dav1d/src/lf_mask.c: Added. (decomp_tx): (mask_edges_inter): (mask_edges_intra): (mask_edges_chroma): (dav1d_create_lf_mask_intra): (dav1d_create_lf_mask_inter): (dav1d_calc_eih): (calc_lf_value): (dav1d_calc_lf_values): * Source/WebCore/PAL/libavif/dav1d/src/lf_mask.h: Added. * Source/WebCore/PAL/libavif/dav1d/src/lib.c: Added. (init_internal): (dav1d_version): (dav1d_default_settings): (get_stack_size_internal): (dav1d_open): (dummy_free): (dav1d_parse_sequence_header): (has_grain): (output_image): (output_picture_ready): (drain_picture): (gen_picture): (dav1d_send_data): (dav1d_get_picture): (dav1d_apply_grain): (dav1d_flush): (dav1d_close): (close_internal): (dav1d_get_event_flags): (dav1d_get_decode_error_data_props): (dav1d_picture_unref): (dav1d_data_create): (dav1d_data_wrap): (dav1d_data_wrap_user_data): (dav1d_data_unref): (dav1d_data_props_unref): * Source/WebCore/PAL/libavif/dav1d/src/log.c: Added. (dav1d_log_default_callback): (dav1d_log): * Source/WebCore/PAL/libavif/dav1d/src/log.h: Added. * Source/WebCore/PAL/libavif/dav1d/src/loopfilter.h: Added. * Source/WebCore/PAL/libavif/dav1d/src/loopfilter_tmpl.c: Added. (loop_filter): (loop_filter_h_sb128y_c): (loop_filter_v_sb128y_c): (loop_filter_h_sb128uv_c): (loop_filter_v_sb128uv_c): (dav1d_loop_filter_dsp_init): * Source/WebCore/PAL/libavif/dav1d/src/looprestoration.h: Added. * Source/WebCore/PAL/libavif/dav1d/src/looprestoration_tmpl.c: Added. (padding): (wiener_c): (boxsum3): (boxsum5): (selfguided_filter): (sgr_5x5_c): (sgr_3x3_c): (sgr_mix_c): (dav1d_loop_restoration_dsp_init): * Source/WebCore/PAL/libavif/dav1d/src/lr_apply.h: Added. * Source/WebCore/PAL/libavif/dav1d/src/lr_apply_tmpl.c: Added. (lr_stripe): (backup4xU): (lr_sbrow): (dav1d_lr_sbrow): * Source/WebCore/PAL/libavif/dav1d/src/mc.h: Added. * Source/WebCore/PAL/libavif/dav1d/src/mc_tmpl.c: Added. (put_c): (prep_c): (put_8tap_c): (put_8tap_scaled_c): (prep_8tap_c): (prep_8tap_scaled_c): (put_bilin_c): (put_bilin_scaled_c): (prep_bilin_c): (prep_bilin_scaled_c): (avg_c): (w_avg_c): (mask_c): (blend_c): (blend_v_c): (blend_h_c): (w_mask_c): (warp_affine_8x8_c): (warp_affine_8x8t_c): (emu_edge_c): (resize_c): (dav1d_mc_dsp_init): * Source/WebCore/PAL/libavif/dav1d/src/mem.c: Added. (mem_pool_destroy): (dav1d_mem_pool_push): (dav1d_mem_pool_pop): (dav1d_mem_pool_init): (dav1d_mem_pool_end): * Source/WebCore/PAL/libavif/dav1d/src/mem.h: Added. (dav1d_alloc_aligned): (dav1d_free_aligned): (dav1d_freep_aligned): (freep): * Source/WebCore/PAL/libavif/dav1d/src/meson.build: Added. * Source/WebCore/PAL/libavif/dav1d/src/msac.c: Added. (ctx_refill): (ctx_norm): (dav1d_msac_decode_bool_equi_c): (dav1d_msac_decode_bool_c): (dav1d_msac_decode_subexp): (dav1d_msac_decode_symbol_adapt_c): (dav1d_msac_decode_bool_adapt_c): (dav1d_msac_decode_hi_tok_c): (dav1d_msac_init): * Source/WebCore/PAL/libavif/dav1d/src/msac.h: Added. (dav1d_msac_decode_bools): (dav1d_msac_decode_uniform): * Source/WebCore/PAL/libavif/dav1d/src/obu.c: Added. (parse_seq_hdr): (read_frame_size): (tile_log2): (parse_tile_hdr): (check_for_overrun): (dav1d_parse_obus): * Source/WebCore/PAL/libavif/dav1d/src/obu.h: Added. * Source/WebCore/PAL/libavif/dav1d/src/picture.c: Added. (dav1d_default_picture_alloc): (dav1d_default_picture_release): (free_buffer): (picture_alloc_with_edges): (dav1d_thread_picture_alloc): (dav1d_picture_alloc_copy): (dav1d_picture_ref): (dav1d_picture_move_ref): (dav1d_thread_picture_ref): (dav1d_thread_picture_move_ref): (dav1d_picture_unref_internal): (dav1d_thread_picture_unref): (dav1d_picture_get_event_flags): * Source/WebCore/PAL/libavif/dav1d/src/picture.h: Added. * Source/WebCore/PAL/libavif/dav1d/src/ppc/cdef_init_tmpl.c: Added. (vconstrain): (copy4xN): (copy8xN): (max_mask): (filter_4xN): (filter_8xN): (dav1d_cdef_dsp_init_ppc): * Source/WebCore/PAL/libavif/dav1d/src/ppc/cpu.c: Added. (dav1d_get_cpu_flags_ppc): * Source/WebCore/PAL/libavif/dav1d/src/ppc/cpu.h: Added. * Source/WebCore/PAL/libavif/dav1d/src/ppc/dav1d_types.h: Added. * Source/WebCore/PAL/libavif/dav1d/src/ppc/looprestoration_init_tmpl.c: Added. (iclip_vec): (wiener_filter_h_vsx): (iclip_u8_vec): (wiener_filter_v_vsx): (padding): (wiener_filter_vsx): (dav1d_loop_restoration_dsp_init_ppc): * Source/WebCore/PAL/libavif/dav1d/src/qm.c: Added. (transpose): (untriangle): (dav1d_init_qm_tables): * Source/WebCore/PAL/libavif/dav1d/src/qm.h: Added. * Source/WebCore/PAL/libavif/dav1d/src/recon.h: Added. * Source/WebCore/PAL/libavif/dav1d/src/recon_tmpl.c: Added. (read_golomb): (get_skip_ctx): (get_dc_sign_ctx): (get_lo_ctx): (decode_coefs): (read_coef_tree): (dav1d_read_coef_blocks): (mc): (obmc): (warp_affine): (dav1d_recon_b_intra): (dav1d_recon_b_inter): (dav1d_filter_sbrow_deblock_cols): (dav1d_filter_sbrow_deblock_rows): (dav1d_filter_sbrow_cdef): (dav1d_filter_sbrow_resize): (dav1d_filter_sbrow_lr): (dav1d_filter_sbrow): (dav1d_backup_ipred_edge): * Source/WebCore/PAL/libavif/dav1d/src/ref.c: Added. (default_free_callback): (dav1d_ref_create): (pool_free_callback): (dav1d_ref_create_using_pool): (dav1d_ref_wrap): (dav1d_ref_inc): (dav1d_ref_dec): (dav1d_ref_is_writable): * Source/WebCore/PAL/libavif/dav1d/src/ref.h: Added. * Source/WebCore/PAL/libavif/dav1d/src/refmvs.c: Added. (add_spatial_candidate): (scan_row): (scan_col): (mv_projection): (add_temporal_candidate): (add_compound_extended_candidate): (add_single_extended_candidate): (dav1d_refmvs_find): (dav1d_refmvs_tile_sbrow_init): (dav1d_refmvs_load_tmvs): (dav1d_refmvs_save_tmvs): (dav1d_refmvs_init_frame): (dav1d_refmvs_init): (dav1d_refmvs_clear): (splat_mv_c): (dav1d_refmvs_dsp_init): * Source/WebCore/PAL/libavif/dav1d/src/refmvs.h: Added. * Source/WebCore/PAL/libavif/dav1d/src/scan.c: Added. * Source/WebCore/PAL/libavif/dav1d/src/scan.h: Added. * Source/WebCore/PAL/libavif/dav1d/src/tables.c: Added. * Source/WebCore/PAL/libavif/dav1d/src/tables.h: Added. * Source/WebCore/PAL/libavif/dav1d/src/thread.h: Added. (pthread_attr_init): (pthread_attr_destroy): (pthread_attr_setstacksize): (pthread_mutex_init): (pthread_mutex_destroy): (pthread_mutex_lock): (pthread_mutex_unlock): (pthread_cond_init): (pthread_cond_destroy): (pthread_cond_wait): (pthread_cond_signal): (pthread_cond_broadcast): (dav1d_set_thread_name): * Source/WebCore/PAL/libavif/dav1d/src/thread_data.h: Added. * Source/WebCore/PAL/libavif/dav1d/src/thread_task.c: Added. (reset_task_cur): (reset_task_cur_async): (insert_tasks_between): (insert_tasks): (insert_task): (create_filter_sbrow): (dav1d_task_create_tile_sbrow): (dav1d_task_frame_init): (dav1d_task_delayed_fg): (ensure_progress): (check_tile): (abort_frame): (delayed_fg_task): (dav1d_worker_task): * Source/WebCore/PAL/libavif/dav1d/src/thread_task.h: Added. * Source/WebCore/PAL/libavif/dav1d/src/warpmv.c: Added. (resolve_divisor_32): (dav1d_get_shear_params): (resolve_divisor_64): (get_mult_shift_ndiag): (get_mult_shift_diag): (dav1d_set_affine_mv2d): (dav1d_find_affine_int): * Source/WebCore/PAL/libavif/dav1d/src/warpmv.h: Added. * Source/WebCore/PAL/libavif/dav1d/src/wedge.c: Added. (transpose): (hflip): (invert): (copy2d): (init_chroma): (fill2d_16x2): (dav1d_init_wedge_masks): (dav1d_init_interintra_masks): * Source/WebCore/PAL/libavif/dav1d/src/wedge.h: Added. * Source/WebCore/PAL/libavif/dav1d/src/win32/thread.c: Added. (dav1d_init_thread): (dav1d_set_thread_name): (thread_entrypoint): (dav1d_pthread_create): (dav1d_pthread_join): (dav1d_pthread_once): * Source/WebCore/PAL/libavif/dav1d/src/x86/cdef16_avx2.asm: Added. * Source/WebCore/PAL/libavif/dav1d/src/x86/cdef16_sse.asm: Added. * Source/WebCore/PAL/libavif/dav1d/src/x86/cdef_avx2.asm: Added. * Source/WebCore/PAL/libavif/dav1d/src/x86/cdef_avx512.asm: Added. * Source/WebCore/PAL/libavif/dav1d/src/x86/cdef_init_tmpl.c: Added. (dav1d_cdef_dsp_init_x86): * Source/WebCore/PAL/libavif/dav1d/src/x86/cdef_sse.asm: Added. * Source/WebCore/PAL/libavif/dav1d/src/x86/cpu.c: Added. (dav1d_get_cpu_flags_x86): * Source/WebCore/PAL/libavif/dav1d/src/x86/cpu.h: Added. * Source/WebCore/PAL/libavif/dav1d/src/x86/cpuid.asm: Added. * Source/WebCore/PAL/libavif/dav1d/src/x86/filmgrain16_avx2.asm: Added. * Source/WebCore/PAL/libavif/dav1d/src/x86/filmgrain16_avx512.asm: Added. * Source/WebCore/PAL/libavif/dav1d/src/x86/filmgrain16_sse.asm: Added. * Source/WebCore/PAL/libavif/dav1d/src/x86/filmgrain_avx2.asm: Added. * Source/WebCore/PAL/libavif/dav1d/src/x86/filmgrain_avx512.asm: Added. * Source/WebCore/PAL/libavif/dav1d/src/x86/filmgrain_common.asm: Added. * Source/WebCore/PAL/libavif/dav1d/src/x86/filmgrain_init_tmpl.c: Added. (dav1d_film_grain_dsp_init_x86): * Source/WebCore/PAL/libavif/dav1d/src/x86/filmgrain_sse.asm: Added. * Source/WebCore/PAL/libavif/dav1d/src/x86/ipred16_avx2.asm: Added. * Source/WebCore/PAL/libavif/dav1d/src/x86/ipred16_avx512.asm: Added. * Source/WebCore/PAL/libavif/dav1d/src/x86/ipred16_sse.asm: Added. * Source/WebCore/PAL/libavif/dav1d/src/x86/ipred_avx2.asm: Added. * Source/WebCore/PAL/libavif/dav1d/src/x86/ipred_avx512.asm: Added. * Source/WebCore/PAL/libavif/dav1d/src/x86/ipred_init_tmpl.c: Added. (dav1d_intra_pred_dsp_init_x86): * Source/WebCore/PAL/libavif/dav1d/src/x86/ipred_sse.asm: Added. * Source/WebCore/PAL/libavif/dav1d/src/x86/itx16_avx2.asm: Added. * Source/WebCore/PAL/libavif/dav1d/src/x86/itx16_sse.asm: Added. * Source/WebCore/PAL/libavif/dav1d/src/x86/itx_avx2.asm: Added. * Source/WebCore/PAL/libavif/dav1d/src/x86/itx_avx512.asm: Added. * Source/WebCore/PAL/libavif/dav1d/src/x86/itx_init_tmpl.c: Added. (dav1d_itx_dsp_init_x86): * Source/WebCore/PAL/libavif/dav1d/src/x86/itx_sse.asm: Added. * Source/WebCore/PAL/libavif/dav1d/src/x86/loopfilter16_avx2.asm: Added. * Source/WebCore/PAL/libavif/dav1d/src/x86/loopfilter16_sse.asm: Added. * Source/WebCore/PAL/libavif/dav1d/src/x86/loopfilter_avx2.asm: Added. * Source/WebCore/PAL/libavif/dav1d/src/x86/loopfilter_avx512.asm: Added. * Source/WebCore/PAL/libavif/dav1d/src/x86/loopfilter_init_tmpl.c: Added. (dav1d_loop_filter_dsp_init_x86): * Source/WebCore/PAL/libavif/dav1d/src/x86/loopfilter_sse.asm: Added. * Source/WebCore/PAL/libavif/dav1d/src/x86/looprestoration16_avx2.asm: Added. * Source/WebCore/PAL/libavif/dav1d/src/x86/looprestoration16_avx512.asm: Added. * Source/WebCore/PAL/libavif/dav1d/src/x86/looprestoration16_sse.asm: Added. * Source/WebCore/PAL/libavif/dav1d/src/x86/looprestoration_avx2.asm: Added. * Source/WebCore/PAL/libavif/dav1d/src/x86/looprestoration_avx512.asm: Added. * Source/WebCore/PAL/libavif/dav1d/src/x86/looprestoration_init_tmpl.c: Added. (dav1d_loop_restoration_dsp_init_x86): * Source/WebCore/PAL/libavif/dav1d/src/x86/looprestoration_sse.asm: Added. * Source/WebCore/PAL/libavif/dav1d/src/x86/mc16_avx2.asm: Added. * Source/WebCore/PAL/libavif/dav1d/src/x86/mc16_avx512.asm: Added. * Source/WebCore/PAL/libavif/dav1d/src/x86/mc16_sse.asm: Added. * Source/WebCore/PAL/libavif/dav1d/src/x86/mc_avx2.asm: Added. * Source/WebCore/PAL/libavif/dav1d/src/x86/mc_avx512.asm: Added. * Source/WebCore/PAL/libavif/dav1d/src/x86/mc_init_tmpl.c: Added. (dav1d_mc_dsp_init_x86): * Source/WebCore/PAL/libavif/dav1d/src/x86/mc_sse.asm: Added. * Source/WebCore/PAL/libavif/dav1d/src/x86/msac.asm: Added. * Source/WebCore/PAL/libavif/dav1d/src/x86/msac.h: Added. * Source/WebCore/PAL/libavif/dav1d/src/x86/msac_init.c: Added. (dav1d_msac_init_x86): * Source/WebCore/PAL/libavif/dav1d/src/x86/refmvs.asm: Added. * Source/WebCore/PAL/libavif/dav1d/src/x86/refmvs_init.c: Added. (dav1d_refmvs_dsp_init_x86): * Source/WebCore/PAL/libavif/dav1d/tests/checkasm/arm/checkasm_32.S: Added. * Source/WebCore/PAL/libavif/dav1d/tests/checkasm/arm/checkasm_64.S: Added. * Source/WebCore/PAL/libavif/dav1d/tests/checkasm/cdef.c: Added. (to_binary): (init_tmp): (check_cdef_filter): (check_cdef_direction): (checkasm_check_cdef): * Source/WebCore/PAL/libavif/dav1d/tests/checkasm/checkasm.c: Added. (get_seed): ( const): (xor128_srand): (xor128_rand): (is_negative): (float_near_ulp): (float_near_ulp_array): (float_near_abs_eps): (float_near_abs_eps_array): (float_near_abs_eps_ulp): (float_near_abs_eps_array_ulp): (color_printf): (destroy_func_tree): (checkasm_malloc): (cpu_suffix): (cmp_nop): (measure_nop_time): (print_benchs): (print_functions): (cmp_func_names): (rotate_tree): (balance_tree): (get_func): (signal_handler): (check_cpu_flag): (print_cpu_name): (main): (checkasm_check_func): (checkasm_bench_func): (checkasm_fail_func): (checkasm_update_bench): (checkasm_report): (checkasm_set_signal_handler_state): (check_err): (checkasm_simd_warmup): * Source/WebCore/PAL/libavif/dav1d/tests/checkasm/checkasm.h: Added. (readtime): * Source/WebCore/PAL/libavif/dav1d/tests/checkasm/filmgrain.c: Added. (check_gen_grnuv): (check_fgy_sbrow): (check_fguv_sbrow): (checkasm_check_filmgrain): * Source/WebCore/PAL/libavif/dav1d/tests/checkasm/ipred.c: Added. (check_cfl_ac): (check_cfl_pred): (check_pal_pred): (checkasm_check_ipred): * Source/WebCore/PAL/libavif/dav1d/tests/checkasm/itx.c: Added. (fadst_1d): (fwht4_1d): (copy_subcoefs): (ftx): (check_itxfm_add): (checkasm_check_itx): * Source/WebCore/PAL/libavif/dav1d/tests/checkasm/loopfilter.c: Added. (init_lpf_border): (check_lpf_sb): (checkasm_check_loopfilter): * Source/WebCore/PAL/libavif/dav1d/tests/checkasm/looprestoration.c: Added. (to_binary): (init_tmp): (check_wiener): (check_sgr): (checkasm_check_looprestoration): * Source/WebCore/PAL/libavif/dav1d/tests/checkasm/mc.c: Added. (check_mc): (generate_mct_input): (check_mct): (check_mc_scaled): (check_mct_scaled): (init_tmp): (check_avg): (check_w_avg): (check_mask): (check_w_mask): (check_blend): (check_blend_v): (check_blend_h): (check_warp8x8): (check_warp8x8t): (random_offset_for_edge): (check_emuedge): (get_upscale_x0): (check_resize): (checkasm_check_mc): * Source/WebCore/PAL/libavif/dav1d/tests/checkasm/msac.c: Added. (randomize_cdf): (msac_cmp): (msac_dump): (check_decode_symbol): (check_decode_bool_adapt): (check_decode_bool_equi): (check_decode_bool): (check_decode_bool_funcs): (check_decode_hi_tok): (checkasm_check_msac): * Source/WebCore/PAL/libavif/dav1d/tests/checkasm/refmvs.c: Added. (check_splat_mv): (checkasm_check_refmvs): * Source/WebCore/PAL/libavif/dav1d/tests/checkasm/x86/checkasm.asm: Added. * Source/WebCore/PAL/libavif/dav1d/tests/header_test.c: Added. (main): * Source/WebCore/PAL/libavif/dav1d/tests/libfuzzer/alloc_fail.c: Added. (dav1d_setup_alloc_fail): (__wrap_malloc): (__wrap_posix_memalign): (__wrap_pthread_create): (__wrap_pthread_mutex_init): (__wrap_pthread_cond_init): * Source/WebCore/PAL/libavif/dav1d/tests/libfuzzer/alloc_fail.h: Added. * Source/WebCore/PAL/libavif/dav1d/tests/libfuzzer/dav1d_fuzzer.c: Added. (djb_xor): (r32le): (LLVMFuzzerInitialize): (LLVMFuzzerTestOneInput): * Source/WebCore/PAL/libavif/dav1d/tests/libfuzzer/dav1d_fuzzer.h: Added. * Source/WebCore/PAL/libavif/dav1d/tests/libfuzzer/main.c: Added. (main): * Source/WebCore/PAL/libavif/dav1d/tests/libfuzzer/meson.build: Added. * Source/WebCore/PAL/libavif/dav1d/tests/meson.build: Added. * Source/WebCore/PAL/libavif/dav1d/tests/seek_stress.c: Added. (get_seed): (xor128_srand): (xor128_rand): (decode_frame): (decode_rand): (decode_all): (seek): (main): * Source/WebCore/PAL/libavif/dav1d/tools/compat/getopt.c: Added. (_vwarnx): (warnx): (gcd): (permute_args): (parse_long_options): (getopt_internal): (getopt): (getopt_long): (getopt_long_only): * Source/WebCore/PAL/libavif/dav1d/tools/dav1d.c: Added. (get_time_nanos): (sleep_nanos): (synchronize): (print_stats): (picture_alloc): (picture_release): (main): * Source/WebCore/PAL/libavif/dav1d/tools/dav1d.manifest: Added. * Source/WebCore/PAL/libavif/dav1d/tools/dav1d.rc.in: Added. * Source/WebCore/PAL/libavif/dav1d/tools/dav1d_cli_parse.c: Added. (error): (parse_unsigned): (parse_optional_fraction): (parse): * Source/WebCore/PAL/libavif/dav1d/tools/dav1d_cli_parse.h: Added. * Source/WebCore/PAL/libavif/dav1d/tools/input/annexb.c: Added. (annexb_probe): (annexb_open): (annexb_read): (annexb_close): * Source/WebCore/PAL/libavif/dav1d/tools/input/demuxer.h: Added. * Source/WebCore/PAL/libavif/dav1d/tools/input/input.c: Added. (input_read): (input_seek): (input_close): * Source/WebCore/PAL/libavif/dav1d/tools/input/input.h: Added. * Source/WebCore/PAL/libavif/dav1d/tools/input/ivf.c: Added. (rl32): (rl64): (ivf_open): (ivf_read_header): (ivf_read): (ivf_seek): (ivf_close): * Source/WebCore/PAL/libavif/dav1d/tools/input/parse.h: Added. (leb128): (leb): (parse_obu_header): * Source/WebCore/PAL/libavif/dav1d/tools/input/section5.c: Added. (section5_probe): (section5_open): (section5_read): (section5_close): * Source/WebCore/PAL/libavif/dav1d/tools/meson.build: Added. * Source/WebCore/PAL/libavif/dav1d/tools/output/md5.c: Added. (leftrotate): (md5_body): (md5_update): (md5_write): (md5_finish): (md5_close): (md5_verify): * Source/WebCore/PAL/libavif/dav1d/tools/output/muxer.h: Added. * Source/WebCore/PAL/libavif/dav1d/tools/output/null.c: Added. (null_write): * Source/WebCore/PAL/libavif/dav1d/tools/output/output.c: Added. (output_open): (safe_strncat): (assemble_field): (assemble_filename): (output_write): (output_close): (output_verify): * Source/WebCore/PAL/libavif/dav1d/tools/output/output.h: Added. * Source/WebCore/PAL/libavif/dav1d/tools/output/xxhash.c: Added. (xxh3_open): (xxh3_write): (xxh3_close): (xxh3_verify): * Source/WebCore/PAL/libavif/dav1d/tools/output/y4m2.c: Added. (y4m2_open): (write_header): (y4m2_write): (y4m2_close): * Source/WebCore/PAL/libavif/dav1d/tools/output/yuv.c: Added. (yuv_open): (yuv_write): (yuv_close): * Source/WebCore/PAL/libavif/doc/README.md: Added. * Source/WebCore/PAL/libavif/doc/avifdec.1.md: Added. * Source/WebCore/PAL/libavif/doc/avifenc.1.md: Added. * Source/WebCore/PAL/libavif/examples/avif_example_decode_file.c: Added. (main): * Source/WebCore/PAL/libavif/examples/avif_example_decode_memory.c: Added. (main): * Source/WebCore/PAL/libavif/examples/avif_example_decode_streaming.c: Added. (avifIOStreamingReaderRead): (avifIOStreamingReaderDestroy): (avifIOCreateStreamingReader): (main): * Source/WebCore/PAL/libavif/examples/avif_example_encode.c: Added. (main): * Source/WebCore/PAL/libavif/ext/README.md: Added. * Source/WebCore/PAL/libavif/ext/aom.cmd: Added. * Source/WebCore/PAL/libavif/ext/dav1d.cmd: Added. * Source/WebCore/PAL/libavif/ext/googletest.cmd: Added. * Source/WebCore/PAL/libavif/ext/libgav1.cmd: Added. * Source/WebCore/PAL/libavif/ext/libgav1_android.sh: Added. * Source/WebCore/PAL/libavif/ext/libjpeg.cmd: Added. * Source/WebCore/PAL/libavif/ext/libsharpyuv.cmd: Added. * Source/WebCore/PAL/libavif/ext/libyuv.cmd: Added. * Source/WebCore/PAL/libavif/ext/rav1e.cmd: Added. * Source/WebCore/PAL/libavif/ext/svt.cmd: Added. * Source/WebCore/PAL/libavif/ext/svt.sh: Added. * Source/WebCore/PAL/libavif/ext/zlibpng.cmd: Added. * Source/WebCore/PAL/libavif/include/avif/avif.h: Added. * Source/WebCore/PAL/libavif/include/avif/internal.h: Added. * Source/WebCore/PAL/libavif/libavif.pc.cmake: Added. * Source/WebCore/PAL/libavif/libavif.xcodeproj/project.pbxproj: Added. * Source/WebCore/PAL/libavif/src/alpha.c: Added. (avifFillAlpha): (avifReformatAlpha): (avifRGBImagePremultiplyAlpha): (avifRGBImageUnpremultiplyAlpha): * Source/WebCore/PAL/libavif/src/avif.c: Added. (avifVersion): (avifPixelFormatToString): (avifGetPixelFormatInfo): (avifResultToString): (avifProgressiveStateToString): (avifImageSetDefaults): (avifImageCreate): (avifImageCreateEmpty): (avifImageCopyNoAlloc): (avifImageCopy): (avifImageSetViewRect): (avifImageDestroy): (avifImageSetProfileICC): (avifImageSetMetadataXMP): (avifImageAllocatePlanes): (avifImageFreePlanes): (avifImageStealPlanes): (avifImageUsesU16): (avifDimensionsTooLarge): (avifCodecDestroy): (avifRGBFormatHasAlpha): (avifRGBFormatChannelCount): (avifRGBImagePixelSize): (avifRGBImageSetDefaults): (avifRGBImageAllocatePixels): (avifRGBImageFreePixels): (calcCenter): (calcGCD): (clapFractionSimplify): (overflowsInt32): (clapFractionCD): (clapFractionAdd): (clapFractionSub): (avifCropRectIsValid): (avifCropRectConvertCleanApertureBox): (avifCleanApertureBoxConvertCropRect): (avifAreGridDimensionsValid): (avifStrdup): (avifCodecSpecificOptionsCreate): (avifCodecSpecificOptionsClear): (avifCodecSpecificOptionsDestroy): (avifCodecSpecificOptionsSet): (avifCodecName): (avifCodecChoiceFromName): (avifCodecCreate): (append): (avifCodecVersions): * Source/WebCore/PAL/libavif/src/codec_aom.c: Added. (aomCodecDestroyInternal): (aomCodecGetNextImage): (avifImageCalcAOMFmt): (aomOptionParseInt): (aomOptionParseUInt): (aomOptionParseEnum): (avifProcessAOMOptionsPreInit): (aomCodecEncodeImage): (aomCodecEncodeFinish): (avifCodecVersionAOM): (avifCodecCreateAOM): * Source/WebCore/PAL/libavif/src/codec_dav1d.c: Added. (avifDav1dFreeCallback): (dav1dCodecDestroyInternal): (dav1dCodecGetNextImage): (avifCodecVersionDav1d): (avifCodecCreateDav1d): * Source/WebCore/PAL/libavif/src/codec_libgav1.c: Added. (gav1CodecDestroyInternal): (gav1CodecGetNextImage): (avifCodecVersionGav1): (avifCodecCreateGav1): * Source/WebCore/PAL/libavif/src/codec_rav1e.c: Added. (rav1eCodecDestroyInternal): (rav1eSupports400): (rav1eCodecEncodeImage): (rav1eCodecEncodeFinish): (avifCodecVersionRav1e): (avifCodecCreateRav1e): * Source/WebCore/PAL/libavif/src/codec_svt.c: Added. (svtCodecEncodeImage): (svtCodecEncodeFinish): (avifCodecVersionSvt): (svtCodecDestroyInternal): (avifCodecCreateSvt): (allocate_svt_buffers): (dequeue_frame): * Source/WebCore/PAL/libavif/src/colr.c: Added. (matchesTo3RoundedPlaces): (primariesMatch): (avifColorPrimariesFind): (avifCalcYUVCoefficients): * Source/WebCore/PAL/libavif/src/diag.c: Added. (avifDiagnosticsClearError): (avifDiagnosticsPrintf): * Source/WebCore/PAL/libavif/src/exif.c: Added. (avifGetExifTiffHeaderOffset): (avifImageExtractExifOrientationToIrotImir): (avifImageSetMetadataExif): * Source/WebCore/PAL/libavif/src/io.c: Added. (avifIODestroy): (avifIOMemoryReaderRead): (avifIOMemoryReaderDestroy): (avifIOCreateMemoryReader): (avifIOFileReaderRead): (avifIOFileReaderDestroy): (avifIOCreateFileReader): * Source/WebCore/PAL/libavif/src/mem.c: Added. (avifAlloc): (avifFree): * Source/WebCore/PAL/libavif/src/obu.c: Added. (avifBitsReadPos): (avifBitsInit): (avifBitsRefill): (avifBitsRead): (avifBitsReadUleb128): (avifBitsReadVLC): (parseSequenceHeader): (avifSequenceHeaderParse): * Source/WebCore/PAL/libavif/src/rawdata.c: Added. (avifRWDataRealloc): (avifRWDataSet): (avifRWDataFree): * Source/WebCore/PAL/libavif/src/read.c: Added. (avifPropertyArrayFind): (avifSampleTableCreate): (avifSampleTableDestroy): (avifSampleTableGetImageDelta): (avifSampleTableHasFormat): (avifCodecConfigurationBoxGetDepth): (avifCodecConfigurationBoxGetFormat): (avifSampleTableGetProperties): (avifCodecDecodeInputCreate): (avifCodecDecodeInputDestroy): (avifGetSampleCountOfChunk): (avifCodecDecodeInputFillFromSampleTable): (avifCodecDecodeInputFillFromDecoderItem): (uniqueBoxSeen): (avifMetaCreate): (avifMetaDestroy): (avifMetaFindItem): (avifDecoderDataCreate): (avifDecoderDataResetCodec): (avifDecoderDataCreateTile): (avifDecoderDataCreateTrack): (avifDecoderDataClearTiles): (avifDecoderDataDestroy): (avifDecoderItemMaxExtent): (avifDecoderItemOperatingPoint): (avifDecoderItemValidateAV1): (avifDecoderItemRead): (avifDecoderGenerateImageGridTiles): (avifDecoderDataFillImageGrid): (avifDecoderFindMetadata): (isAlphaURN): (avifParseHandlerBox): (avifParseItemLocationBox): (avifParseImageGridBox): (avifParseImageSpatialExtentsProperty): (avifParseAuxiliaryTypeProperty): (avifParseColourInformationBox): (avifParseAV1CodecConfigurationBox): (avifParseAV1CodecConfigurationBoxProperty): (avifParsePixelAspectRatioBoxProperty): (avifParseCleanApertureBoxProperty): (avifParseImageRotationProperty): (avifParseImageMirrorProperty): (avifParsePixelInformationProperty): (avifParseOperatingPointSelectorProperty): (avifParseLayerSelectorProperty): (avifParseAV1LayeredImageIndexingProperty): (avifParseItemPropertyContainerBox): (avifParseItemPropertyAssociation): (avifParsePrimaryItemBox): (avifParseItemDataBox): (avifParseItemPropertiesBox): (avifParseItemInfoEntry): (avifParseItemInfoBox): (avifParseItemReferenceBox): (avifParseMetaBox): (avifParseTrackHeaderBox): (avifParseMediaHeaderBox): (avifParseChunkOffsetBox): (avifParseSampleToChunkBox): (avifParseSampleSizeBox): (avifParseSyncSampleBox): (avifParseTimeToSampleBox): (avifParseSampleDescriptionBox): (avifParseSampleTableBox): (avifParseMediaInformationBox): (avifParseMediaBox): (avifTrackReferenceBox): (avifParseTrackBox): (avifParseMovieBox): (avifParseFileTypeBox): (avifParse): (avifFileTypeHasBrand): (avifFileTypeIsCompatible): (avifPeekCompatibleFileType): (avifDecoderCreate): (avifDecoderCleanup): (avifDecoderDestroy): (avifDecoderSetSource): (avifDecoderSetIO): (avifDecoderSetIOMemory): (avifDecoderSetIOFile): (avifExtentMerge): (avifDecoderNthImageMaxExtent): (avifDecoderPrepareSample): (avifDecoderParse): (avifCodecCreateInternal): (avifDecoderFlush): (avifDecoderReset): (avifDecoderPrepareTiles): (avifImageLimitedToFullAlpha): (avifDecoderDecodeTiles): (avifDecoderNextImage): (avifDecoderNthImageTiming): (avifDecoderNthImage): (avifDecoderIsKeyframe): (avifDecoderNearestKeyframe): (avifGetDecodedRowCount): (avifDecoderDecodedRowCount): (avifDecoderRead): (avifDecoderReadMemory): (avifDecoderReadFile): * Source/WebCore/PAL/libavif/src/reformat.c: Added. (avifPrepareReformatState): (avifReformatStateYToUNorm): (avifReformatStateUVToUNorm): (avifImageRGBToYUV): (avifStoreRGB8Pixel): (avifImageYUVAnyToRGBAnySlow): (avifImageYUV16ToRGB16Color): (avifImageYUV16ToRGB16Mono): (avifImageYUV16ToRGB8Color): (avifImageYUV16ToRGB8Mono): (avifImageYUV8ToRGB16Color): (avifImageYUV8ToRGB16Mono): (avifImageIdentity8ToRGB8ColorFullRange): (avifImageYUV8ToRGB8Color): (avifImageYUV8ToRGB8Mono): (avifRGBImageToF16): (avifImageYUVToRGB): (avifLimitedToFullY): (avifLimitedToFullUV): (avifFullToLimitedY): (avifFullToLimitedUV): * Source/WebCore/PAL/libavif/src/reformat_libsharpyuv.c: Added. (avifImageRGBToYUVLibSharpYUV): * Source/WebCore/PAL/libavif/src/reformat_libyuv.c: Added. (avifImageRGBToYUVLibYUV): (avifImageYUVToRGBLibYUV): (avifRGBImagePremultiplyAlphaLibYUV): (avifRGBImageUnpremultiplyAlphaLibYUV): (avifRGBImageToF16LibYUV): (avifLibYUVVersion): (avifReorderARGBThenConvertToYUV): (avifImageRGBToYUVLibYUV8bpc): (avifImageYUVToRGBLibYUVHighBitDepth): * Source/WebCore/PAL/libavif/src/scale.c: Added. (avifImageScale): * Source/WebCore/PAL/libavif/src/stream.c: Added. (avifROStreamCurrent): (avifROStreamStart): (avifROStreamHasBytesLeft): (avifROStreamRemainingBytes): (avifROStreamOffset): (avifROStreamSetOffset): (avifROStreamSkip): (avifROStreamRead): (avifROStreamReadUX8): (avifROStreamReadU16): (avifROStreamReadU16Endianness): (avifROStreamReadU32): (avifROStreamReadU32Endianness): (avifROStreamReadU64): (avifROStreamReadString): (avifROStreamReadBoxHeaderPartial): (avifROStreamReadBoxHeader): (avifROStreamReadVersionAndFlags): (avifROStreamReadAndEnforceVersion): (makeRoom): (avifRWStreamStart): (avifRWStreamOffset): (avifRWStreamSetOffset): (avifRWStreamFinishWrite): (avifRWStreamWrite): (avifRWStreamWriteChars): (avifRWStreamWriteFullBox): (avifRWStreamWriteBox): (avifRWStreamFinishBox): (avifRWStreamWriteU8): (avifRWStreamWriteU16): (avifRWStreamWriteU32): (avifRWStreamWriteU64): (avifRWStreamWriteZeros): * Source/WebCore/PAL/libavif/src/utils.c: Added. (avifRoundf): (avifHTONS): (avifNTOHS): (avifCTOHS): (avifHTONL): (avifNTOHL): (avifCTOHL): (avifHTON64): (avifNTOH64): (avifArrayCreate): (avifArrayPushIndex): (avifArrayPushPtr): (avifArrayPush): (avifArrayPop): (avifArrayDestroy): * Source/WebCore/PAL/libavif/src/write.c: Added. (ipmaPush): (countLeadingZeros): (floorLog2): (splitTilesLog2): (avifSetTileConfiguration): (avifCodecEncodeOutputCreate): (avifCodecEncodeOutputAddSample): (avifCodecEncodeOutputDestroy): (avifEncoderDataCreate): (avifEncoderDataCreateItem): (avifEncoderDataFindItemByID): (avifEncoderDataDestroy): (avifEncoderItemAddMdatFixup): (avifItemPropertyDedupCreate): (avifItemPropertyDedupDestroy): (avifItemPropertyDedupStart): (avifItemPropertyDedupFinish): (avifEncoderCreate): (avifEncoderDestroy): (avifEncoderSetCodecSpecificOption): (avifEncoderBackupSettings): (avifEncoderDetectChanges): (avifEncoderWriteColorProperties): (avifEncoderWriteTrackMetaBox): (avifWriteGridPayload): (avifEncoderDataCreateExifItem): (avifEncoderDataCreateXMPItem): (avifCopyAndPadPlane): (avifImageCopyAndPad): (avifEncoderAddImageInternal): (avifEncoderAddImage): (avifEncoderAddImageGrid): (avifEncoderFindExistingChunk): (avifEncoderFinish): (avifEncoderWrite): (avifImageIsOpaque): (writeConfigBox): * Source/WebCore/PAL/libavif/tests/CMakeLists.txt: Added. * Source/WebCore/PAL/libavif/tests/aviftest.c: Added. (nextFilename): (avifIOTestReaderRead): (avifIOTestReaderDestroy): (avifIOCreateTestReader): (runIOTests): (syntax): (main): * Source/WebCore/PAL/libavif/tests/avifyuv.c: Added. (rgbFormatToString): (main): * Source/WebCore/PAL/libavif/tests/data/README.md: Added. * Source/WebCore/PAL/libavif/tests/data/cosmos1650_yuv444_10bpc_p3pq.y4m: Added. * Source/WebCore/PAL/libavif/tests/data/dog_exif_extended_xmp_icc.jpg: Added. * Source/WebCore/PAL/libavif/tests/data/io/cosmos1650_yuv444_10bpc_p3pq.avif: Added. * Source/WebCore/PAL/libavif/tests/data/io/kodim03_yuv420_8bpc.avif: Added. * Source/WebCore/PAL/libavif/tests/data/io/kodim23_yuv420_8bpc.avif: Added. * Source/WebCore/PAL/libavif/tests/data/kodim03_yuv420_8bpc.y4m: Added. * Source/WebCore/PAL/libavif/tests/data/kodim23_yuv420_8bpc.y4m: Added. * Source/WebCore/PAL/libavif/tests/data/paris_exif_orientation_5.jpg: Added. * Source/WebCore/PAL/libavif/tests/data/paris_exif_xmp_icc.jpg: Added. * Source/WebCore/PAL/libavif/tests/data/paris_extended_xmp.jpg: Added. * Source/WebCore/PAL/libavif/tests/data/paris_icc_exif_xmp.avif: Added. * Source/WebCore/PAL/libavif/tests/data/paris_icc_exif_xmp.png: Added. * Source/WebCore/PAL/libavif/tests/data/paris_icc_exif_xmp_at_end.png: Added. * Source/WebCore/PAL/libavif/tests/data/sofa_grid1x5_420.avif: Added. * Source/WebCore/PAL/libavif/tests/docker/Dockerfile: Added. * Source/WebCore/PAL/libavif/tests/docker/README.md: Added. * Source/WebCore/PAL/libavif/tests/docker/build.sh: Added. * Source/WebCore/PAL/libavif/tests/docker/docker-compose.yml: Added. * Source/WebCore/PAL/libavif/tests/gtest/.clang-format: Added. * Source/WebCore/PAL/libavif/tests/gtest/are_images_equal.cc: Added. * Source/WebCore/PAL/libavif/tests/gtest/avifallocationtest.cc: Added. * Source/WebCore/PAL/libavif/tests/gtest/avifchangesettingtest.cc: Added. * Source/WebCore/PAL/libavif/tests/gtest/avifgridapitest.cc: Added. * Source/WebCore/PAL/libavif/tests/gtest/avifincrtest.cc: Added. * Source/WebCore/PAL/libavif/tests/gtest/avifincrtest_helpers.cc: Added. * Source/WebCore/PAL/libavif/tests/gtest/avifincrtest_helpers.h: Added. * Source/WebCore/PAL/libavif/tests/gtest/avifmetadatatest.cc: Added. * Source/WebCore/PAL/libavif/tests/gtest/avifrgbtoyuvtest.cc: Added. * Source/WebCore/PAL/libavif/tests/gtest/aviftest_helpers.cc: Added. * Source/WebCore/PAL/libavif/tests/gtest/aviftest_helpers.h: Added. (libavif::testutil::AvifRwData::AvifRwData): (libavif::testutil::AvifRwData::~AvifRwData): (libavif::testutil::AvifRgbImage::~AvifRgbImage): * Source/WebCore/PAL/libavif/tests/gtest/aviftilingtest.cc: Added. * Source/WebCore/PAL/libavif/tests/gtest/avify4mtest.cc: Added. * Source/WebCore/PAL/libavif/tests/oss-fuzz/avif_decode_fuzzer.cc: Added. * Source/WebCore/PAL/libavif/tests/test_cmd.sh: Added. Canonical link: https://commits.webkit.org/255879@main
556930b
to
494a012
Compare
Committed 255879@main (494a012): https://commits.webkit.org/255879@main Reviewed commits have been landed. Closing PR #5669 and removing active labels. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
494a012
556930b
🧪 api-mac