diff options
author | bruvzg <7645683+bruvzg@users.noreply.github.com> | 2020-06-23 22:01:42 +0300 |
---|---|---|
committer | bruvzg <7645683+bruvzg@users.noreply.github.com> | 2020-06-29 12:33:51 +0300 |
commit | 00299f15b46b695d6809f7f812daaad1ad520b4a (patch) | |
tree | 527781843f15ef421089ca02b119583d9e8e815e /modules | |
parent | 9fc65fd1f15b2ae2e26cf69c54819e7d6598fa05 (diff) |
[macOS] Add support for the Apple Silicon (ARM64) build target.
Diffstat (limited to 'modules')
-rw-r--r-- | modules/camera/camera_osx.mm | 6 | ||||
-rw-r--r-- | modules/denoise/config.py | 2 | ||||
-rw-r--r-- | modules/opus/SCsub | 3 | ||||
-rw-r--r-- | modules/webm/libvpx/SCsub | 4 |
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") ) |