summarylogtreecommitdiffstats
path: root/0019-Bug-559213-Support-system-av1.patch
blob: 4583c68bd089896eb1ed6b283857088f9774ed5e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Thomas Deutschmann <whissi@gentoo.org>
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 <whissi@gentoo.org>
---
 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
 # ==============================================================