-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMediaObserver.swift
More file actions
49 lines (41 loc) · 1.22 KB
/
MediaObserver.swift
File metadata and controls
49 lines (41 loc) · 1.22 KB
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
//
// MediaObserver.swift
// RCTAgora
//
// Created by LXH on 2020/4/10.
// Copyright © 2020 Syan. All rights reserved.
//
import Foundation
import AgoraRtcKit
class MediaObserver: NSObject {
private var emitter: (_ data: Dictionary<String, Any?>?) -> Void
private var maxMetadataSize = 1024
private var metadataList = [String]()
init(_ emitter: @escaping (_ data: Dictionary<String, Any?>?) -> Void) {
self.emitter = emitter
}
func addMetadata(_ metadata: String) {
metadataList.append(metadata)
}
func setMaxMetadataSize(_ size: Int) {
maxMetadataSize = size
}
}
extension MediaObserver: AgoraMediaMetadataDataSource {
func metadataMaxSize() -> Int {
return maxMetadataSize
}
func readyToSendMetadata(atTimestamp timestamp: TimeInterval) -> Data? {
if metadataList.count > 0 {
return metadataList.remove(at: 0).data(using: .utf8)
}
return nil
}
}
extension MediaObserver: AgoraMediaMetadataDelegate {
func receiveMetadata(_ data: Data, fromUser uid: Int, atTimestamp timestamp: TimeInterval) {
emitter([
"data": [String(data: data, encoding: .utf8) ?? "", uid, timestamp]
])
}
}