Skip to content

Commit 0448b60

Browse files
author
zhangwei
committed
refactor(macos): modernize screen capture and require macOS 12
Use RTC SDK screen enumeration for local video transcoding and remove WindowsCenter. Adopt @main and align the app, Pods, and documentation on a macOS 12 deployment target.
1 parent 1734024 commit 0448b60

8 files changed

Lines changed: 24 additions & 271 deletions

File tree

‎macOS/APIExample.xcodeproj/project.pbxproj‎

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@
3939
034C62712525A35800296ECF /* StreamEncryption.swift in Sources */ = {isa = PBXBuildFile; fileRef = 034C62702525A35700296ECF /* StreamEncryption.swift */; };
4040
034C62772525C68D00296ECF /* AgoraCustomEncryption.mm in Sources */ = {isa = PBXBuildFile; fileRef = 034C62752525C68C00296ECF /* AgoraCustomEncryption.mm */; };
4141
034C627C2526C43900296ECF /* ScreenShare.swift in Sources */ = {isa = PBXBuildFile; fileRef = 034C627A2526C43900296ECF /* ScreenShare.swift */; };
42-
034C62872528255F00296ECF /* WindowsCenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 034C62862528255F00296ECF /* WindowsCenter.swift */; };
4342
034C628A25282D5D00296ECF /* JoinMultiChannel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 034C628925282D5D00296ECF /* JoinMultiChannel.swift */; };
4443
034C62912528327800296ECF /* ChannelMediaRelay.swift in Sources */ = {isa = PBXBuildFile; fileRef = 034C628F2528327800296ECF /* ChannelMediaRelay.swift */; };
4544
034C62932528474D00296ECF /* StatisticsInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 034C62922528474D00296ECF /* StatisticsInfo.swift */; };
@@ -211,7 +210,6 @@
211210
034C62752525C68C00296ECF /* AgoraCustomEncryption.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = AgoraCustomEncryption.mm; sourceTree = "<group>"; };
212211
034C62762525C68C00296ECF /* AgoraCustomEncryption.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AgoraCustomEncryption.h; sourceTree = "<group>"; };
213212
034C627A2526C43900296ECF /* ScreenShare.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ScreenShare.swift; sourceTree = "<group>"; };
214-
034C62862528255F00296ECF /* WindowsCenter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WindowsCenter.swift; sourceTree = "<group>"; };
215213
034C628925282D5D00296ECF /* JoinMultiChannel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = JoinMultiChannel.swift; sourceTree = "<group>"; };
216214
034C628F2528327800296ECF /* ChannelMediaRelay.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChannelMediaRelay.swift; sourceTree = "<group>"; };
217215
034C62922528474D00296ECF /* StatisticsInfo.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StatisticsInfo.swift; sourceTree = "<group>"; };
@@ -649,7 +647,6 @@
649647
5770E2C0258C580E00812A80 /* Component */,
650648
57887A7F25885FC2006E962A /* Settings */,
651649
034C62922528474D00296ECF /* StatisticsInfo.swift */,
652-
034C62862528255F00296ECF /* WindowsCenter.swift */,
653650
034C626325257EA600296ECF /* GlobalSettings.swift */,
654651
03B12DA3250E8F7F00E55818 /* AgoraExtension.swift */,
655652
034C62742525C68C00296ECF /* CustomEncryption */,
@@ -1265,7 +1262,6 @@
12651262
03B12DA4250E8F7F00E55818 /* AgoraExtension.swift in Sources */,
12661263
0336A1C725034F4700D61B7F /* AudioWriteToFile.m in Sources */,
12671264
671BD67927E09E3B0076D5E1 /* AgoraPcmSourcePush.swift in Sources */,
1268-
034C62872528255F00296ECF /* WindowsCenter.swift in Sources */,
12691265
034C62912528327800296ECF /* ChannelMediaRelay.swift in Sources */,
12701266
033A9F9E252EA86A00BC26E1 /* CustomVideoSourcePush.swift in Sources */,
12711267
8BD4AE73272513FF00E95B87 /* SimpleFilter.swift in Sources */,
@@ -1663,7 +1659,7 @@
16631659
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
16641660
GCC_WARN_UNUSED_FUNCTION = YES;
16651661
GCC_WARN_UNUSED_VARIABLE = YES;
1666-
MACOSX_DEPLOYMENT_TARGET = 10.15;
1662+
MACOSX_DEPLOYMENT_TARGET = 12.0;
16671663
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
16681664
MTL_FAST_MATH = YES;
16691665
ONLY_ACTIVE_ARCH = YES;
@@ -1719,7 +1715,7 @@
17191715
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
17201716
GCC_WARN_UNUSED_FUNCTION = YES;
17211717
GCC_WARN_UNUSED_VARIABLE = YES;
1722-
MACOSX_DEPLOYMENT_TARGET = 10.15;
1718+
MACOSX_DEPLOYMENT_TARGET = 12.0;
17231719
MTL_ENABLE_DEBUG_INFO = NO;
17241720
MTL_FAST_MATH = YES;
17251721
SDKROOT = macosx;

‎macOS/APIExample/AppDelegate.swift‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
import Cocoa
1010

11-
@NSApplicationMain
11+
@main
1212
class AppDelegate: NSObject, NSApplicationDelegate {
1313

1414

‎macOS/APIExample/Common/WindowsCenter.swift‎

Lines changed: 0 additions & 251 deletions
This file was deleted.

‎macOS/APIExample/Examples/Advanced/LocalVideoTranscoding/LocalVideoTranscoding.swift‎

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,12 @@ class LocalVideoTranscoding: BaseViewController {
2121
layoutVideos(2)
2222
}
2323

24-
var windowManager: WindowList = WindowList()
25-
var windowlist:[Window] = [], screenlist:[Window] = []
24+
var screenlist: [AgoraScreenCaptureSourceInfo] = []
2625
/**
2726
--- Screen Picker ---
2827
*/
2928
@IBOutlet weak var selectScreenPicker: Picker!
30-
var selectedScreen: Window? {
29+
var selectedScreen: AgoraScreenCaptureSourceInfo? {
3130
let index = self.selectScreenPicker.indexOfSelectedItem
3231
if index >= 0 && index < screenlist.count {
3332
return screenlist[index]
@@ -36,9 +35,14 @@ class LocalVideoTranscoding: BaseViewController {
3635
}
3736
}
3837
func initSelectScreenPicker() {
39-
screenlist = windowManager.items.filter({$0.type == .screen})
38+
let sources = agoraKit.getScreenCaptureSources(withThumbSize: .zero, iconSize: .zero, includeScreen: true)
39+
screenlist = sources?.filter { $0.type == .screen } ?? []
4040
selectScreenPicker.label.stringValue = "Screen Share".localized
41-
selectScreenPicker.picker.addItems(withTitles: screenlist.map {"\($0.name ?? "Unknown")(\($0.id))"})
41+
selectScreenPicker.picker.removeAllItems()
42+
selectScreenPicker.picker.addItems(withTitles: screenlist.enumerated().map { index, source in
43+
let name = source.sourceName.isEmpty ? "Screen \(index + 1)" : source.sourceName
44+
return "\(name)(\(source.sourceId))"
45+
})
4246
}
4347
var isScreenSharing: Bool = false {
4448
didSet {
@@ -109,7 +113,7 @@ class LocalVideoTranscoding: BaseViewController {
109113
params.highLightWidth = 5
110114
params.highLightColor = .green
111115
params.highLighted = true
112-
let result = agoraKit.startScreenCapture(byDisplayId: UInt32(screen.id), regionRect: .zero, captureParams: params)
116+
let result = agoraKit.startScreenCapture(byDisplayId: UInt32(screen.sourceId), regionRect: .zero, captureParams: params)
113117

114118
if result == 0 {
115119
isScreenSharing = true
@@ -248,8 +252,6 @@ class LocalVideoTranscoding: BaseViewController {
248252

249253
override func viewDidLoad() {
250254
super.viewDidLoad()
251-
// prepare window manager and list
252-
windowManager.getList()
253255
// Do view setup here.
254256
let config = AgoraRtcEngineConfig()
255257
config.appId = KeyCenter.AppId

‎macOS/ARCHITECTURE.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ All examples share utilities from `APIExample/Common/`:
9595
| CustomVideoSourcePushMulti | `Examples/Advanced/CustomVideoSourcePushMulti/` | `setExternalVideoSource()`, `pushVideoFrame()` with multiple sources | Multiple custom video sources |
9696
| JoinMultiChannel | `Examples/Advanced/JoinMultiChannel/` | `createRtcChannel()`, `joinChannel()` on multiple channels | Join and manage multiple channels simultaneously |
9797
| LiveStreaming | `Examples/Advanced/LiveStreaming/` | `setClientRole()`, `addVideoWatermark()` with `WatermarkConfig`, `startRtmpStreamWithTranscoding()`, `stopRtmpStream()` | Live streaming with watermark configuration and RTMP transcoding |
98-
| LocalVideoTranscoding | `Examples/Advanced/LocalVideoTranscoding/` | `startLocalVideoTranscoding()`, `updateLocalTranscodingConfig()`, `stopLocalVideoTranscoding()` | Local video transcoding and composition |
98+
| LocalVideoTranscoding | `Examples/Advanced/LocalVideoTranscoding/` | `getScreenCaptureSources()`, `startLocalVideoTranscoder()`, `updateLocalTranscoderConfiguration()`, `stopLocalVideoTranscoder()` | Local video transcoding and composition |
9999
| MediaPlayer | `Examples/Advanced/MediaPlayer/` | `createMediaPlayer()`, `open()`, `play()`, `pause()`, `stop()` | Media file playback and control |
100100
| MultiCameraSourece | `Examples/Advanced/MultiCameraSourece/` | `enumerateDevices()`, `setDevice()` with multiple cameras | Multiple camera source selection |
101101
| Multipath | `Examples/Advanced/Multipath/` | `enableMultipath()`, `setMultipathConfig()` | Multipath redundancy for reliability |

‎macOS/Podfile‎

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
# Uncomment the next line to define a global platform for your project
1+
macos_deployment_target = '12.0'
2+
platform :osx, macos_deployment_target
23

34

45
def common_pods
@@ -24,7 +25,10 @@ post_install do |installer|
2425
# system("sh .download_script.sh 4.7.0 true")
2526
installer.pods_project.targets.each do |target|
2627
target.build_configurations.each do |config|
27-
config.build_settings['MACOSX_DEPLOYMENT_TARGET'] = '10.13'
28+
deployment_target = config.build_settings['MACOSX_DEPLOYMENT_TARGET']
29+
if deployment_target.nil? || Gem::Version.new(deployment_target) < Gem::Version.new(macos_deployment_target)
30+
config.build_settings['MACOSX_DEPLOYMENT_TARGET'] = macos_deployment_target
31+
end
2832
end
2933
end
3034
end

‎macOS/README.md‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ This project presents you a set of API examples to help you understand how to us
77

88
## Prerequisites
99

10-
- Xcode 13.0+
10+
- macOS 12.0 or later
11+
- Xcode 13.1+
1112

1213
## Quick Start
1314

0 commit comments

Comments
 (0)