summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorbruvzg <7645683+bruvzg@users.noreply.github.com>2020-06-23 22:01:42 +0300
committerbruvzg <7645683+bruvzg@users.noreply.github.com>2020-06-29 12:33:51 +0300
commit00299f15b46b695d6809f7f812daaad1ad520b4a (patch)
tree527781843f15ef421089ca02b119583d9e8e815e /modules
parent9fc65fd1f15b2ae2e26cf69c54819e7d6598fa05 (diff)
[macOS] Add support for the Apple Silicon (ARM64) build target.
Diffstat (limited to 'modules')
-rw-r--r--modules/camera/camera_osx.mm6
-rw-r--r--modules/denoise/config.py2
-rw-r--r--modules/opus/SCsub3
-rw-r--r--modules/webm/libvpx/SCsub4
4 files changed, 12 insertions, 3 deletions
diff --git a/modules/camera/camera_osx.mm b/modules/camera/camera_osx.mm
index 9a72174723..306632a016 100644
--- a/modules/camera/camera_osx.mm
+++ b/modules/camera/camera_osx.mm
@@ -313,7 +313,12 @@ MyDeviceNotifications *device_notifications = nil;
// CameraOSX - Subclass for our camera server on OSX
void CameraOSX::update_feeds() {
+#if MAC_OS_X_VERSION_MIN_REQUIRED >= 101500
+ AVCaptureDeviceDiscoverySession *session = [AVCaptureDeviceDiscoverySession discoverySessionWithDeviceTypes:[NSArray arrayWithObjects:AVCaptureDeviceTypeExternalUnknown, AVCaptureDeviceTypeBuiltInWideAngleCamera, nil] mediaType:AVMediaTypeVideo position:AVCaptureDevicePositionUnspecified];
+ NSArray *devices = session.devices;
+#else
NSArray *devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo];
+#endif
// remove devices that are gone..
for (int i = feeds.size() - 1; i >= 0; i--) {
@@ -325,7 +330,6 @@ void CameraOSX::update_feeds() {
};
};
- // add new devices..
for (AVCaptureDevice *device in devices) {
bool found = false;
for (int i = 0; i < feeds.size() && !found; i++) {
diff --git a/modules/denoise/config.py b/modules/denoise/config.py
index 091d7643c0..49a1f036ed 100644
--- a/modules/denoise/config.py
+++ b/modules/denoise/config.py
@@ -5,7 +5,7 @@ def can_build(env, platform):
# as doing lightmap generation and denoising on Android or HTML5
# would be a bit far-fetched.
desktop_platforms = ["linuxbsd", "osx", "windows"]
- return env["tools"] and platform in desktop_platforms and env["bits"] == "64"
+ return env["tools"] and platform in desktop_platforms and env["bits"] == "64" and env["arch"] != "arm64"
def configure(env):
diff --git a/modules/opus/SCsub b/modules/opus/SCsub
index e51590d808..52c61fa708 100644
--- a/modules/opus/SCsub
+++ b/modules/opus/SCsub
@@ -227,6 +227,9 @@ if env["builtin_opus"]:
env_opus.Append(CPPDEFINES=["OPUS_ARM_OPT"])
elif "arch" in env and env["arch"] == "arm64":
env_opus.Append(CPPDEFINES=["OPUS_ARM64_OPT"])
+ elif env["platform"] == "osx":
+ if "arch" in env and env["arch"] == "arm64":
+ env_opus.Append(CPPDEFINES=["OPUS_ARM64_OPT"])
env_thirdparty = env_opus.Clone()
env_thirdparty.disable_warnings()
diff --git a/modules/webm/libvpx/SCsub b/modules/webm/libvpx/SCsub
index dd6866ad0e..d0744fa313 100644
--- a/modules/webm/libvpx/SCsub
+++ b/modules/webm/libvpx/SCsub
@@ -238,6 +238,7 @@ else:
is_x11_or_server_arm = (env["platform"] == "linuxbsd" or env["platform"] == "server") and (
platform.machine().startswith("arm") or platform.machine().startswith("aarch")
)
+ is_macos_x86 = env["platform"] == "osx" and ("arch" in env and (env["arch"] != "arm64"))
is_ios_x86 = env["platform"] == "iphone" and ("arch" in env and env["arch"].startswith("x86"))
is_android_x86 = env["platform"] == "android" and env["android_arch"].startswith("x86")
if is_android_x86:
@@ -248,14 +249,15 @@ else:
and (
env["platform"] == "windows"
or env["platform"] == "linuxbsd"
- or env["platform"] == "osx"
or env["platform"] == "haiku"
+ or is_macos_x86
or is_android_x86
or is_ios_x86
)
)
webm_cpu_arm = (
is_x11_or_server_arm
+ or (not is_macos_x86 and env["platform"] == "osx")
or (not is_ios_x86 and env["platform"] == "iphone")
or (not is_android_x86 and env["platform"] == "android")
)