From c82a9e1ddc7ba74837e48e5c5f23a1ce94876174 Mon Sep 17 00:00:00 2001 From: HUI Date: Mon, 28 Sep 2020 21:01:36 +0800 Subject: [PATCH] finish --- Annotations.java | 7 +++++++ Extensions.kt | 13 +++++++++---- RtcChannel.kt | 14 +++++++++----- RtcChannelEvent.kt | 14 +++++++------- RtcEngine.kt | 4 ++-- RtcEngineEvent.kt | 2 +- 6 files changed, 35 insertions(+), 19 deletions(-) diff --git a/Annotations.java b/Annotations.java index d087693d8..3e584a77d 100644 --- a/Annotations.java +++ b/Annotations.java @@ -789,4 +789,11 @@ public class Annotations { @Retention(RetentionPolicy.SOURCE) public @interface AgoraStreamPublishState { } + + @IntDef({ + Constants.RTMP_STREAMING_EVENT_FAILED_LOAD_IMAGE, + }) + @Retention(RetentionPolicy.SOURCE) + public @interface AgoraRtmpStreamingEvent { + } } diff --git a/Extensions.kt b/Extensions.kt index 472f5ca71..b745ddb7c 100644 --- a/Extensions.kt +++ b/Extensions.kt @@ -15,7 +15,8 @@ fun LocalAudioStats.toMap(): Map { return hashMapOf( "numChannels" to numChannels, "sentSampleRate" to sentSampleRate, - "sentBitrate" to sentBitrate + "sentBitrate" to sentBitrate, + "txPacketLossRate" to txPacketLossRate ) } @@ -68,7 +69,8 @@ fun RemoteAudioStats.toMap(): Map { "receivedBitrate" to receivedBitrate, "totalFrozenTime" to totalFrozenTime, "frozenRate" to frozenRate, - "totalActiveTime" to totalActiveTime + "totalActiveTime" to totalActiveTime, + "publishDuration" to publishDuration ) } @@ -85,7 +87,9 @@ fun LocalVideoStats.toMap(): Map { "encodedFrameWidth" to encodedFrameWidth, "encodedFrameHeight" to encodedFrameHeight, "encodedFrameCount" to encodedFrameCount, - "codecType" to codecType + "codecType" to codecType, + "txPacketLossRate" to txPacketLossRate, + "captureFrameRate" to captureFrameRate ) } @@ -102,7 +106,8 @@ fun RemoteVideoStats.toMap(): Map { "rxStreamType" to rxStreamType, "totalFrozenTime" to totalFrozenTime, "frozenRate" to frozenRate, - "totalActiveTime" to totalActiveTime + "totalActiveTime" to totalActiveTime, + "publishDuration" to publishDuration ) } diff --git a/RtcChannel.kt b/RtcChannel.kt index 53ff54bbf..5d270ca0c 100644 --- a/RtcChannel.kt +++ b/RtcChannel.kt @@ -7,7 +7,7 @@ import io.agora.rtc.RtcEngine import io.agora.rtc.internal.EncryptionConfig import java.util.* -class RtcChannelInterface { +class IRtcChannel { interface RtcChannelInterface : RtcAudioInterface, RtcVideoInterface, RtcVoicePositionInterface, RtcPublishStreamInterface, RtcMediaRelayInterface, RtcDualStreamInterface, RtcFallbackInterface, RtcMediaMetadataInterface, RtcEncryptionInterface, @@ -116,7 +116,7 @@ class RtcChannelInterface { class RtcChannelManager( private val emit: (methodName: String, data: Map?) -> Unit -) : RtcChannelInterface.RtcChannelInterface { +) : IRtcChannel.RtcChannelInterface { private val rtcChannelMap = Collections.synchronizedMap(mutableMapOf()) private val mediaObserverMap = Collections.synchronizedMap(mutableMapOf()) @@ -315,12 +315,16 @@ class RtcChannelManager( override fun createDataStream(params: Map, callback: Callback) { var code = -Constants.ERR_NOT_INITIALIZED this[params["channelId"] as String]?.let { - code= it.createDataStream(reliable, ordered) + code = it.createDataStream(params["reliable"] as Boolean, params["ordered"] as Boolean) } - callback.code(manager.createDataStream(channelId, reliable, ordered)) { it } + callback.code(code) { it } } override fun sendStreamMessage(params: Map, callback: Callback) { - callback.code(manager.sendStreamMessage(channelId, streamId, message)) + var code = -Constants.ERR_NOT_INITIALIZED + this[params["channelId"] as String]?.let { + code = it.sendStreamMessage((params["streamId"] as Number).toInt(), (params["message"] as String).toByteArray()) + } + callback.code(code) } } diff --git a/RtcChannelEvent.kt b/RtcChannelEvent.kt index 02293430f..fe3dca3b0 100644 --- a/RtcChannelEvent.kt +++ b/RtcChannelEvent.kt @@ -110,11 +110,11 @@ class RtcChannelEventHandler( } override fun onJoinChannelSuccess(rtcChannel: RtcChannel?, uid: Int, elapsed: Int) { - callback(RtcChannelEvents.JoinChannelSuccess, rtcChannel, rtcChannel.channelId(), uid, elapsed) + callback(RtcChannelEvents.JoinChannelSuccess, rtcChannel, rtcChannel?.channelId(), uid, elapsed) } override fun onRejoinChannelSuccess(rtcChannel: RtcChannel?, uid: Int, elapsed: Int) { - callback(RtcChannelEvents.RejoinChannelSuccess, rtcChannel, rtcChannel.channelId(), uid, elapsed) + callback(RtcChannelEvents.RejoinChannelSuccess, rtcChannel, rtcChannel?.channelId(), uid, elapsed) } override fun onLeaveChannel(rtcChannel: RtcChannel?, stats: IRtcEngineEventHandler.RtcStats?) { @@ -218,22 +218,22 @@ class RtcChannelEventHandler( } override fun onAudioPublishStateChanged(rtcChannel: RtcChannel?, @Annotations.AgoraStreamPublishState oldState: Int, @Annotations.AgoraStreamPublishState newState: Int, elapseSinceLastState: Int) { - callback(RtcChannelEvents.AudioPublishStateChanged, rtcChannel, rtcChannel.channelId(), oldState, newState, elapseSinceLastState) + callback(RtcChannelEvents.AudioPublishStateChanged, rtcChannel, rtcChannel?.channelId(), oldState, newState, elapseSinceLastState) } override fun onVideoPublishStateChanged(rtcChannel: RtcChannel?, @Annotations.AgoraStreamPublishState oldState: Int, @Annotations.AgoraStreamPublishState newState: Int, elapseSinceLastState: Int) { - callback(RtcChannelEvents.VideoPublishStateChanged, rtcChannel, rtcChannel.channelId(), oldState, newState, elapseSinceLastState) + callback(RtcChannelEvents.VideoPublishStateChanged, rtcChannel, rtcChannel?.channelId(), oldState, newState, elapseSinceLastState) } override fun onAudioSubscribeStateChanged(rtcChannel: RtcChannel?, uid: Int, @Annotations.AgoraStreamSubscribeState oldState: Int, @Annotations.AgoraStreamSubscribeState newState: Int, elapseSinceLastState: Int) { - callback(RtcChannelEvents.AudioSubscribeStateChanged, rtcChannel, rtcChannel.channelId(), uid, oldState, newState, elapseSinceLastState) + callback(RtcChannelEvents.AudioSubscribeStateChanged, rtcChannel, rtcChannel?.channelId(), uid, oldState, newState, elapseSinceLastState) } override fun onVideoSubscribeStateChanged(rtcChannel: RtcChannel?, uid: Int, @Annotations.AgoraStreamSubscribeState oldState: Int, @Annotations.AgoraStreamSubscribeState newState: Int, elapseSinceLastState: Int) { - callback(RtcChannelEvents.VideoSubscribeStateChanged, rtcChannel, rtcChannel.channelId(), uid, oldState, newState, elapseSinceLastState) + callback(RtcChannelEvents.VideoSubscribeStateChanged, rtcChannel, rtcChannel?.channelId(), uid, oldState, newState, elapseSinceLastState) } - override fun onRtmpStreamingEvent(rtcChannel: RtcChannel?, url: String?, errCode: Int) { + override fun onRtmpStreamingEvent(rtcChannel: RtcChannel?, url: String?, @Annotations.AgoraRtmpStreamingEvent errCode: Int) { callback(RtcChannelEvents.RtmpStreamingEvent, rtcChannel, url, errCode) } } diff --git a/RtcEngine.kt b/RtcEngine.kt index 8aea44c87..ab27ca1e8 100644 --- a/RtcEngine.kt +++ b/RtcEngine.kt @@ -5,7 +5,7 @@ import io.agora.rtc.* import io.agora.rtc.internal.EncryptionConfig import io.agora.rtc.models.UserInfo -class RtcEngineInterface { +class IRtcEngine { interface RtcEngineInterface : RtcUserInfoInterface, RtcAudioInterface, RtcVideoInterface, RtcAudioMixingInterface, RtcAudioEffectInterface, RtcVoiceChangerInterface, RtcVoicePositionInterface, RtcPublishStreamInterface, RtcMediaRelayInterface, @@ -316,7 +316,7 @@ class RtcEngineInterface { class RtcEngineManager( private val emit: (methodName: String, data: Map?) -> Unit -) : RtcEngineInterface.RtcEngineInterface { +) : IRtcEngine.RtcEngineInterface { var engine: RtcEngine? = null private set private var mediaObserver: MediaObserver? = null diff --git a/RtcEngineEvent.kt b/RtcEngineEvent.kt index 12215e4c3..767f2c31a 100644 --- a/RtcEngineEvent.kt +++ b/RtcEngineEvent.kt @@ -509,7 +509,7 @@ class RtcEngineEventHandler( callback(RtcEngineEvents.VideoSubscribeStateChanged, channel, uid, oldState, newState, elapseSinceLastState) } - override fun onRtmpStreamingEvent(url: String?, error: Int) { + override fun onRtmpStreamingEvent(url: String?, @Annotations.AgoraRtmpStreamingEvent error: Int) { callback(RtcEngineEvents.RtmpStreamingEvent, url, error) } }