-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMediaObserver.kt
More file actions
38 lines (31 loc) · 1 KB
/
MediaObserver.kt
File metadata and controls
38 lines (31 loc) · 1 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
package io.agora.rtc.base
import androidx.annotation.IntRange
import io.agora.rtc.IMetadataObserver
import java.util.*
import java.util.concurrent.atomic.AtomicInteger
class MediaObserver(
private val emit: (data: Map<String, Any?>?) -> Unit
) : IMetadataObserver {
private var maxMetadataSize = AtomicInteger(1024)
private var metadataList = Collections.synchronizedList<String>(mutableListOf())
fun addMetadata(metadata: String) {
metadataList.add(metadata)
}
fun setMaxMetadataSize(@IntRange(from = 0, to = 1024) size: Int) {
maxMetadataSize.set(size)
}
override fun onReadyToSendMetadata(timeStampMs: Long): ByteArray? {
if (metadataList.size > 0) {
return metadataList.removeAt(0).toByteArray()
}
return null
}
override fun getMaxMetadataSize(): Int {
return maxMetadataSize.get()
}
override fun onMetadataReceived(buffer: ByteArray, uid: Int, timeStampMs: Long) {
emit(hashMapOf(
"data" to arrayListOf(String(buffer), uid, timeStampMs)
))
}
}