summarylogtreecommitdiffstats
path: root/7002_system_av1_support.patch
blob: 38ef6ae81c1280c2b981b12646fa10b414f28f16 (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
136
137
138
# HG changeset patch
# User Thomas Deutschmann <whissi@gentoo.org>

# Parent  66f9c84511dda432587261f6b9ebf07c4771aad8
Add ability to use system-av1 (media-libs/libaom and media-libs/dav1d) instead of bundled.

diff --git a/config/external/moz.build b/config/external/moz.build
--- a/config/external/moz.build
+++ b/config/external/moz.build
@@ -32,18 +32,19 @@ if CONFIG['MOZ_TREMOR']:
 
 if CONFIG['MOZ_WEBM_ENCODER']:
     external_dirs += ['media/libmkv']
 
 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']
 
 if not CONFIG['MOZ_SYSTEM_WEBP']:
     external_dirs += ['media/libwebp']
 
 if CONFIG['CPU_ARCH'] == 'arm':
diff --git a/config/system-headers.mozbuild b/config/system-headers.mozbuild
--- a/config/system-headers.mozbuild
+++ b/config/system-headers.mozbuild
@@ -1311,16 +1311,24 @@ if CONFIG['MOZ_ENABLE_CONTENTMANAGER']:
     system_headers += [
         'QtSparql/qsparqlconnection.h',
         'QtSparql/qsparqlquery.h',
         'QtSparql/qsparqlresult.h',
         'SelectMultipleContentItemsPage.h',
         'SelectSingleContentItemPage.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',
         'vpx/svc_context.h',
         'vpx/vp8cx.h',
         'vpx/vp8dx.h',
         'vpx/vpx_codec.h',
         'vpx/vpx_decoder.h',
diff --git a/dom/media/platforms/moz.build b/dom/media/platforms/moz.build
--- a/dom/media/platforms/moz.build
+++ b/dom/media/platforms/moz.build
@@ -75,16 +75,21 @@ if CONFIG['MOZ_AV1']:
     EXPORTS += [
         'agnostic/AOMDecoder.h',
         'agnostic/DAV1DDecoder.h',
     ]
     UNIFIED_SOURCES += [
         '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 += [
         'omx/OmxCoreLibLinker.h',
     ]
     UNIFIED_SOURCES += [
         'omx/OmxCoreLibLinker.cpp',
     ]
diff --git a/toolkit/moz.configure b/toolkit/moz.configure
--- a/toolkit/moz.configure
+++ b/toolkit/moz.configure
@@ -460,32 +460,49 @@ imply_option('--enable-fmp4', ffmpeg, '-
 option('--disable-av1',
         help='Disable av1 video support')
 
 @depends('--enable-av1')
 def av1(value):
     if value:
         return True
 
-@depends(target, nasm_version, when=av1 & compile_environment)
+option('--with-system-av1',
+       help="Use system av1 (located with pkgconfig)")
+
+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, nasm_version, when=av1 & depends(system_av1)(lambda v: not v) & compile_environment)
 def dav1d_asm(target, nasm_version):
     if target.os != 'Android':
         if target.cpu == 'aarch64':
             return True
         elif target.cpu in ('x86', 'x86_64'):
             if nasm_version < '2.13':
                 die('nasm 2.13 or greater is required for AV1 support. '
                     'Either install nasm or add --disable-av1 to your configure options.')
             return True
 
 
 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))
 
 # Built-in fragmented MP4 support.
 # ==============================================================
 option('--disable-fmp4', env='MOZ_FMP4',
        help='Disable support for in built Fragmented MP4 parsing')
 
 @depends('--disable-fmp4', target, wmf, applemedia)
 def fmp4(value, target, wmf, applemedia):