diff --git a/config/external/moz.build b/config/external/moz.build index a24b470396cf..59ce39e6b29a 100644 --- a/config/external/moz.build +++ b/config/external/moz.build @@ -39,7 +39,7 @@ if CONFIG["MOZ_VORBIS"]: if not CONFIG["MOZ_SYSTEM_LIBVPX"]: external_dirs += ["media/libvpx"] -if CONFIG["MOZ_AV1"]: +if not CONFIG["MOZ_SYSTEM_AV1"]: external_dirs += ["media/libaom"] external_dirs += ["media/libdav1d"] diff --git a/config/system-headers.mozbuild b/config/system-headers.mozbuild index 9be9c05da18b..36552782ceec 100644 --- a/config/system-headers.mozbuild +++ b/config/system-headers.mozbuild @@ -1307,6 +1307,11 @@ if CONFIG["MOZ_ENABLE_LIBPROXY"]: "proxy.h", ] +if CONFIG["MOZ_SYSTEM_AV1"]: + system_headers += [ + "dav1d/dav1d.h", + ] + if CONFIG["MOZ_SYSTEM_ICU"]: system_headers += [ "unicode/calendar.h", diff --git a/dom/media/ipc/moz.build b/dom/media/ipc/moz.build index a9440780ce6f..8b67baa43305 100644 --- a/dom/media/ipc/moz.build +++ b/dom/media/ipc/moz.build @@ -98,6 +98,9 @@ LOCAL_INCLUDES += [ "/xpcom/base", ] +if CONFIG["MOZ_SYSTEM_AV1"]: + CXXFLAGS += CONFIG["MOZ_SYSTEM_LIBAOM_CFLAGS"] + include("/ipc/chromium/chromium-config.mozbuild") # Add libFuzzer configuration directives diff --git a/dom/media/moz.build b/dom/media/moz.build index 88d6a4a5040e..b6aace338bb2 100644 --- a/dom/media/moz.build +++ b/dom/media/moz.build @@ -402,6 +402,9 @@ if CONFIG["ENABLE_TESTS"]: "test/rdd_process_xpcom", ] +if CONFIG["MOZ_SYSTEM_AV1"]: + CXXFLAGS += CONFIG["MOZ_SYSTEM_LIBAOM_CFLAGS"] + include("/ipc/chromium/chromium-config.mozbuild") LOCAL_INCLUDES += CONFIG["SKIA_INCLUDES"] diff --git a/dom/media/mp4/moz.build b/dom/media/mp4/moz.build index 48fce2a040cb..060a6f6b11d5 100644 --- a/dom/media/mp4/moz.build +++ b/dom/media/mp4/moz.build @@ -36,6 +36,9 @@ UNIFIED_SOURCES += [ FINAL_LIBRARY = "xul" +if CONFIG["MOZ_SYSTEM_AV1"]: + CXXFLAGS += CONFIG["MOZ_SYSTEM_LIBAOM_CFLAGS"] + # Suppress warnings for now. CXXFLAGS += [ "-Wno-sign-compare", diff --git a/dom/media/platforms/agnostic/eme/moz.build b/dom/media/platforms/agnostic/eme/moz.build index 34f0007b3bcc..7e126e557ffc 100644 --- a/dom/media/platforms/agnostic/eme/moz.build +++ b/dom/media/platforms/agnostic/eme/moz.build @@ -17,6 +17,9 @@ UNIFIED_SOURCES += [ "SamplesWaitingForKey.cpp", ] +if CONFIG["MOZ_SYSTEM_AV1"]: + CXXFLAGS += CONFIG["MOZ_SYSTEM_LIBAOM_CFLAGS"] + include("/ipc/chromium/chromium-config.mozbuild") FINAL_LIBRARY = "xul" diff --git a/dom/media/platforms/agnostic/gmp/moz.build b/dom/media/platforms/agnostic/gmp/moz.build index 362b6c765ff2..f597157d1cc4 100644 --- a/dom/media/platforms/agnostic/gmp/moz.build +++ b/dom/media/platforms/agnostic/gmp/moz.build @@ -22,6 +22,9 @@ UNIFIED_SOURCES += [ "GMPVideoEncoder.cpp", ] +if CONFIG["MOZ_SYSTEM_AV1"]: + CXXFLAGS += CONFIG["MOZ_SYSTEM_LIBAOM_CFLAGS"] + # GMPVideoEncodedFrameImpl.h needs IPC include("/ipc/chromium/chromium-config.mozbuild") diff --git a/dom/media/platforms/ffmpeg/ffmpeg57/moz.build b/dom/media/platforms/ffmpeg/ffmpeg57/moz.build index db48b36f6b72..16dabe325b94 100644 --- a/dom/media/platforms/ffmpeg/ffmpeg57/moz.build +++ b/dom/media/platforms/ffmpeg/ffmpeg57/moz.build @@ -30,6 +30,9 @@ if CONFIG['CC_TYPE'] == 'gcc': '-Wno-attributes', ] +if CONFIG["MOZ_SYSTEM_AV1"]: + CXXFLAGS += CONFIG["MOZ_SYSTEM_LIBAOM_CFLAGS"] + include("/ipc/chromium/chromium-config.mozbuild") LOCAL_INCLUDES += [ diff --git a/dom/media/platforms/ffmpeg/ffmpeg58/moz.build b/dom/media/platforms/ffmpeg/ffmpeg58/moz.build index 12e48c44f002..c95a71a2458a 100644 --- a/dom/media/platforms/ffmpeg/ffmpeg58/moz.build +++ b/dom/media/platforms/ffmpeg/ffmpeg58/moz.build @@ -38,6 +38,9 @@ if CONFIG['MOZ_ENABLE_VAAPI'] or CONFIG['MOZ_ENABLE_V4L2']: USE_LIBS += ['mozva'] DEFINES['MOZ_USE_HWDECODE'] = 1 +if CONFIG["MOZ_SYSTEM_AV1"]: + CXXFLAGS += CONFIG["MOZ_SYSTEM_LIBAOM_CFLAGS"] + include("/ipc/chromium/chromium-config.mozbuild") LOCAL_INCLUDES += [ diff --git a/dom/media/platforms/ffmpeg/ffmpeg59/moz.build b/dom/media/platforms/ffmpeg/ffmpeg59/moz.build index c4f7b899512e..b24e6d34032c 100644 --- a/dom/media/platforms/ffmpeg/ffmpeg59/moz.build +++ b/dom/media/platforms/ffmpeg/ffmpeg59/moz.build @@ -38,6 +38,9 @@ if CONFIG["MOZ_ENABLE_VAAPI"] or CONFIG["MOZ_ENABLE_V4L2"]: USE_LIBS += ["mozva"] DEFINES["MOZ_USE_HWDECODE"] = 1 +if CONFIG["MOZ_SYSTEM_AV1"]: + CXXFLAGS += CONFIG["MOZ_SYSTEM_LIBAOM_CFLAGS"] + include("/ipc/chromium/chromium-config.mozbuild") LOCAL_INCLUDES += [ diff --git a/dom/media/platforms/ffmpeg/ffmpeg60/moz.build b/dom/media/platforms/ffmpeg/ffmpeg60/moz.build index c4f7b899512e..b24e6d34032c 100644 --- a/dom/media/platforms/ffmpeg/ffmpeg60/moz.build +++ b/dom/media/platforms/ffmpeg/ffmpeg60/moz.build @@ -38,6 +38,9 @@ if CONFIG["MOZ_ENABLE_VAAPI"] or CONFIG["MOZ_ENABLE_V4L2"]: USE_LIBS += ["mozva"] DEFINES["MOZ_USE_HWDECODE"] = 1 +if CONFIG["MOZ_SYSTEM_AV1"]: + CXXFLAGS += CONFIG["MOZ_SYSTEM_LIBAOM_CFLAGS"] + include("/ipc/chromium/chromium-config.mozbuild") LOCAL_INCLUDES += [ diff --git a/dom/media/platforms/ffmpeg/ffmpeg61/moz.build b/dom/media/platforms/ffmpeg/ffmpeg61/moz.build index d598ae001720..fce65109e5dd 100644 --- a/dom/media/platforms/ffmpeg/ffmpeg61/moz.build +++ b/dom/media/platforms/ffmpeg/ffmpeg61/moz.build @@ -38,6 +38,9 @@ if CONFIG["MOZ_ENABLE_VAAPI"] or CONFIG["MOZ_ENABLE_V4L2"]: USE_LIBS += ["mozva"] DEFINES["MOZ_USE_HWDECODE"] = 1 +if CONFIG["MOZ_SYSTEM_AV1"]: + CXXFLAGS += CONFIG["MOZ_SYSTEM_LIBAOM_CFLAGS"] + include("/ipc/chromium/chromium-config.mozbuild") LOCAL_INCLUDES += [ diff --git a/dom/media/platforms/ffmpeg/libav53/moz.build b/dom/media/platforms/ffmpeg/libav53/moz.build index da79a95b4773..9099f592024c 100644 --- a/dom/media/platforms/ffmpeg/libav53/moz.build +++ b/dom/media/platforms/ffmpeg/libav53/moz.build @@ -26,6 +26,9 @@ if CONFIG['CC_TYPE'] == 'clang': '-Wno-unknown-attributes', ] +if CONFIG["MOZ_SYSTEM_AV1"]: + CXXFLAGS += CONFIG["MOZ_SYSTEM_LIBAOM_CFLAGS"] + include("/ipc/chromium/chromium-config.mozbuild") LOCAL_INCLUDES += [ diff --git a/dom/media/platforms/ffmpeg/libav54/moz.build b/dom/media/platforms/ffmpeg/libav54/moz.build index da79a95b4773..9099f592024c 100644 --- a/dom/media/platforms/ffmpeg/libav54/moz.build +++ b/dom/media/platforms/ffmpeg/libav54/moz.build @@ -26,6 +26,9 @@ if CONFIG['CC_TYPE'] == 'clang': '-Wno-unknown-attributes', ] +if CONFIG["MOZ_SYSTEM_AV1"]: + CXXFLAGS += CONFIG["MOZ_SYSTEM_LIBAOM_CFLAGS"] + include("/ipc/chromium/chromium-config.mozbuild") LOCAL_INCLUDES += [ diff --git a/dom/media/platforms/ffmpeg/libav55/moz.build b/dom/media/platforms/ffmpeg/libav55/moz.build index 7d813a4ac80a..3223b904d503 100644 --- a/dom/media/platforms/ffmpeg/libav55/moz.build +++ b/dom/media/platforms/ffmpeg/libav55/moz.build @@ -30,6 +30,9 @@ if CONFIG['CC_TYPE'] == 'gcc': '-Wno-attributes', ] +if CONFIG["MOZ_SYSTEM_AV1"]: + CXXFLAGS += CONFIG["MOZ_SYSTEM_LIBAOM_CFLAGS"] + include("/ipc/chromium/chromium-config.mozbuild") FINAL_LIBRARY = 'xul' diff --git a/dom/media/platforms/ffmpeg/moz.build b/dom/media/platforms/ffmpeg/moz.build index 3896da07d616..918142fab354 100644 --- a/dom/media/platforms/ffmpeg/moz.build +++ b/dom/media/platforms/ffmpeg/moz.build @@ -28,6 +28,9 @@ LOCAL_INCLUDES += [ "/media/libyuv/libyuv/include", ] +if CONFIG["MOZ_SYSTEM_AV1"]: + CXXFLAGS += CONFIG["MOZ_SYSTEM_LIBAOM_CFLAGS"] + if CONFIG["MOZ_WIDGET_TOOLKIT"] == "windows": LOCAL_INCLUDES += [ "/gfx/thebes", diff --git a/dom/media/platforms/moz.build b/dom/media/platforms/moz.build index 61536cc6e225..b56379c06e92 100644 --- a/dom/media/platforms/moz.build +++ b/dom/media/platforms/moz.build @@ -71,6 +71,9 @@ if CONFIG["MOZ_AV1"]: "agnostic/AOMDecoder.cpp", "agnostic/DAV1DDecoder.cpp", ] + if CONFIG["MOZ_SYSTEM_AV1"]: + CXXFLAGS += CONFIG["MOZ_SYSTEM_LIBAOM_CFLAGS"] + CXXFLAGS += CONFIG["MOZ_SYSTEM_LIBDAV1D_CFLAGS"] if CONFIG["MOZ_OMX"]: EXPORTS += [ diff --git a/dom/media/systemservices/moz.build b/dom/media/systemservices/moz.build index 59ad86a767a7..c4542f728b8e 100644 --- a/dom/media/systemservices/moz.build +++ b/dom/media/systemservices/moz.build @@ -107,6 +107,9 @@ IPDL_SOURCES += [ "PMediaSystemResourceManager.ipdl", ] +if CONFIG["MOZ_SYSTEM_AV1"]: + CXXFLAGS += CONFIG["MOZ_SYSTEM_LIBAOM_CFLAGS"] + include("/ipc/chromium/chromium-config.mozbuild") FINAL_LIBRARY = "xul" diff --git a/dom/media/webaudio/moz.build b/dom/media/webaudio/moz.build index 3ee8c0aa7633..5a053c61246d 100644 --- a/dom/media/webaudio/moz.build +++ b/dom/media/webaudio/moz.build @@ -145,6 +145,9 @@ if CONFIG["INTEL_ARCHITECTURE"]: CONFIG["SSE4_2_FLAGS"] + CONFIG["FMA_FLAGS"] ) +if CONFIG["MOZ_SYSTEM_AV1"]: + CXXFLAGS += CONFIG["MOZ_SYSTEM_LIBAOM_CFLAGS"] + include("/ipc/chromium/chromium-config.mozbuild") FINAL_LIBRARY = "xul" diff --git a/dom/media/webm/moz.build b/dom/media/webm/moz.build index f65fe5bc6b35..26b4b95b5d33 100644 --- a/dom/media/webm/moz.build +++ b/dom/media/webm/moz.build @@ -22,6 +22,9 @@ UNIFIED_SOURCES += [ CXXFLAGS += CONFIG["MOZ_LIBVPX_CFLAGS"] +if CONFIG["MOZ_SYSTEM_AV1"]: + CXXFLAGS += CONFIG["MOZ_SYSTEM_LIBAOM_CFLAGS"] + FINAL_LIBRARY = "xul" # Add libFuzzer configuration directives diff --git a/image/decoders/moz.build b/image/decoders/moz.build index d7e062f843ba..342496b36beb 100644 --- a/image/decoders/moz.build +++ b/image/decoders/moz.build @@ -36,6 +36,9 @@ if CONFIG["MOZ_AV1"]: "nsAVIFDecoder.cpp", ] + if CONFIG["MOZ_SYSTEM_AV1"]: + CXXFLAGS += CONFIG["MOZ_SYSTEM_LIBAOM_CFLAGS"] + if CONFIG["MOZ_JXL"]: UNIFIED_SOURCES += [ "nsJXLDecoder.cpp", diff --git a/image/moz.build b/image/moz.build index b9a4dadee9a1..7fbd88d2840e 100644 --- a/image/moz.build +++ b/image/moz.build @@ -139,5 +139,8 @@ LOCAL_INCLUDES += [ LOCAL_INCLUDES += CONFIG["SKIA_INCLUDES"] +if CONFIG["MOZ_SYSTEM_AV1"]: + CXXFLAGS += CONFIG["MOZ_SYSTEM_LIBAOM_CFLAGS"] + # Add libFuzzer configuration directives include("/tools/fuzzing/libfuzzer-config.mozbuild") diff --git a/media/ffvpx/libavcodec/moz.build b/media/ffvpx/libavcodec/moz.build index a15b6ab741f1..258224e6d22d 100644 --- a/media/ffvpx/libavcodec/moz.build +++ b/media/ffvpx/libavcodec/moz.build @@ -119,10 +119,16 @@ if not CONFIG['MOZ_FFVPX_AUDIOONLY']: 'vp9recon.c', 'vpx_rac.c', ] - USE_LIBS += [ - 'dav1d', - 'media_libdav1d_asm', - ] + + if CONFIG["MOZ_SYSTEM_AV1"]: + CFLAGS += CONFIG['MOZ_SYSTEM_LIBDAV1D_CFLAGS'] + OS_LIBS += CONFIG['MOZ_SYSTEM_LIBDAV1D_LIBS'] + else: + USE_LIBS += [ + 'dav1d', + 'media_libdav1d_asm', + ] + if CONFIG["MOZ_WIDGET_TOOLKIT"] == "gtk": LOCAL_INCLUDES += ['/media/mozva'] SOURCES += [ diff --git a/toolkit/library/moz.build b/toolkit/library/moz.build index fa7bcfcfc2f1..2f333484b13a 100644 --- a/toolkit/library/moz.build +++ b/toolkit/library/moz.build @@ -304,6 +304,10 @@ if CONFIG["MOZ_SYSTEM_LIBEVENT"]: if CONFIG["MOZ_SYSTEM_LIBVPX"]: OS_LIBS += CONFIG["MOZ_LIBVPX_LIBS"] +if CONFIG["MOZ_SYSTEM_AV1"]: + OS_LIBS += CONFIG["MOZ_SYSTEM_LIBAOM_LIBS"] + OS_LIBS += CONFIG["MOZ_SYSTEM_LIBDAV1D_LIBS"] + if not CONFIG["MOZ_TREE_PIXMAN"]: OS_LIBS += CONFIG["MOZ_PIXMAN_LIBS"] diff --git a/toolkit/moz.configure b/toolkit/moz.configure index bd6648a89e71..eb2a68715686 100644 --- a/toolkit/moz.configure +++ b/toolkit/moz.configure @@ -847,15 +847,21 @@ def av1(value): return True -@depends(target, when=av1 & compile_environment) -def dav1d_asm(target): - if target.cpu in ("arm", "aarch64", "x86", "x86_64"): +option("--with-system-av1", help="Use system av1 (located with pkg-config)") + +pkg_check_modules("MOZ_SYSTEM_LIBAOM", "aom >= 3.0.0", when="--with-system-av1") +pkg_check_modules("MOZ_SYSTEM_LIBDAV1D", "dav1d >= 1.2.1", when="--with-system-av1") + + +@depends(target, "--with-system-av1", when=av1 & compile_environment) +def dav1d_asm(target, system_av1): + if not system_av1 and target.cpu in ("arm", "aarch64", "x86", "x86_64"): return True -@depends(target, when=av1 & compile_environment) -def dav1d_nasm(target): - if target.cpu in ("x86", "x86_64"): +@depends(target, "--with-system-av1", when=av1 & compile_environment) +def dav1d_nasm(target, system_av1): + if not system_av1 and target.cpu in ("x86", "x86_64"): return namespace(version="2.14", what="AV1") @@ -863,6 +869,7 @@ set_config("MOZ_DAV1D_ASM", dav1d_asm) set_define("MOZ_DAV1D_ASM", dav1d_asm) set_config("MOZ_AV1", av1) set_define("MOZ_AV1", av1) +set_config("MOZ_SYSTEM_AV1", True, when="--with-system-av1") # JXL Image Codec Support # ==============================================================