From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Thomas Deutschmann Date: Mon, 6 Apr 2020 19:36:02 +0200 Subject: [PATCH] Bug 559213 - Support system av1 Allow building against system-wide av1. Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1559213 Signed-off-by: Thomas Deutschmann --- config/external/moz.build | 5 +++-- config/system-headers.mozbuild | 8 ++++++++ dom/media/platforms/moz.build | 5 +++++ media/ffvpx/libavcodec/moz.build | 12 ++++++++---- toolkit/moz.configure | 20 ++++++++++++++++++-- 5 files changed, 42 insertions(+), 8 deletions(-) diff --git a/config/external/moz.build b/config/external/moz.build index fe765d1fa0130296b9b89129ad5bf5f55a885823..58396762e2e6950855816e4ce175b5cb29d4d5ce 100644 --- a/config/external/moz.build +++ b/config/external/moz.build @@ -40,8 +40,9 @@ if not CONFIG["MOZ_SYSTEM_LIBVPX"]: external_dirs += ["media/libvpx"] if CONFIG["MOZ_AV1"]: - external_dirs += ["media/libaom"] - external_dirs += ["media/libdav1d"] + if not CONFIG["MOZ_SYSTEM_AV1"]: + external_dirs += ["media/libaom"] + external_dirs += ["media/libdav1d"] if not CONFIG["MOZ_SYSTEM_PNG"]: external_dirs += ["media/libpng"] diff --git a/config/system-headers.mozbuild b/config/system-headers.mozbuild index 20145e89af1bbb02476d84340088bb7ceba7af8e..4b61063cf92a2adabb7b552328420aefbfc93242 100644 --- a/config/system-headers.mozbuild +++ b/config/system-headers.mozbuild @@ -1294,6 +1294,14 @@ if CONFIG['MOZ_ENABLE_LIBPROXY']: 'proxy.h', ] +if CONFIG['MOZ_SYSTEM_AV1']: + system_headers += [ + 'aom/aom_decoder.h', + 'aom/aomdx.h', + 'aom/aom_image.h', + 'dav1d/dav1d.h', + ] + if CONFIG['MOZ_SYSTEM_LIBVPX']: system_headers += [ 'vpx_mem/vpx_mem.h', diff --git a/dom/media/platforms/moz.build b/dom/media/platforms/moz.build index c71f22a22eeead703192edfb710cc6113d42c11c..e91f57de9017e74436b03b769f04668d9dc2a869 100644 --- a/dom/media/platforms/moz.build +++ b/dom/media/platforms/moz.build @@ -80,6 +80,11 @@ if CONFIG["MOZ_AV1"]: "agnostic/AOMDecoder.cpp", "agnostic/DAV1DDecoder.cpp", ] + if CONFIG["MOZ_SYSTEM_AV1"]: + CXXFLAGS += CONFIG["MOZ_SYSTEM_LIBAOM_CFLAGS"] + OS_LIBS += CONFIG["MOZ_SYSTEM_LIBAOM_LIBS"] + CXXFLAGS += CONFIG["MOZ_SYSTEM_LIBDAV1D_CFLAGS"] + OS_LIBS += CONFIG["MOZ_SYSTEM_LIBDAV1D_LIBS"] if CONFIG["MOZ_OMX"]: EXPORTS += [ diff --git a/media/ffvpx/libavcodec/moz.build b/media/ffvpx/libavcodec/moz.build index 845d0030229cc2a81eaa1a0ca341d0175af3d976..3b5d5153fc9f49ed729eb5685e8d677932af3920 100644 --- a/media/ffvpx/libavcodec/moz.build +++ b/media/ffvpx/libavcodec/moz.build @@ -118,10 +118,14 @@ 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/moz.configure b/toolkit/moz.configure index 8b462ecde463fc4ac31278d94daaad5e513d7c00..eb7ae84b5d65df80e23b8ab503ffe0576c2a30a0 100644 --- a/toolkit/moz.configure +++ b/toolkit/moz.configure @@ -749,14 +749,29 @@ def av1(value): if value: return True +option("--with-system-av1", help="Use system av1 (located with pkg-config)") -@depends(target, when=av1 & compile_environment) +system_libaom_info = pkg_check_modules('MOZ_SYSTEM_LIBAOM', 'aom >= 1.0.0', + when='--with-system-av1') + +system_libdav1d_info = pkg_check_modules('MOZ_SYSTEM_LIBDAV1D', 'dav1d >= 0.1.1', + when='--with-system-av1') + +@depends(system_libaom_info, system_libdav1d_info) +def system_av1(system_libaom_info, system_libdav1d_info): + has_av1_libs = False + if system_libaom_info and system_libdav1d_info: + has_av1_libs = True + return has_av1_libs + + +@depends(target, when=av1 & depends(system_av1)(lambda v: not v) & compile_environment) def dav1d_asm(target): if target.cpu in ("aarch64", "x86", "x86_64"): return True -@depends(target, when=av1 & compile_environment) +@depends(target, when=av1 & depends(system_av1)(lambda v: not v) & compile_environment) def dav1d_nasm(target): if target.cpu in ("x86", "x86_64"): return namespace(version="2.14", what="AV1") @@ -766,6 +781,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", depends_if(system_av1)(lambda _: True)) # JXL Image Codec Support # ==============================================================