diff --git a/OpenLive-Android/app/src/main/java/io/agora/openlive/activities/LiveActivity.java b/OpenLive-Android/app/src/main/java/io/agora/openlive/activities/LiveActivity.java index 94743cb5..05f0861b 100644 --- a/OpenLive-Android/app/src/main/java/io/agora/openlive/activities/LiveActivity.java +++ b/OpenLive-Android/app/src/main/java/io/agora/openlive/activities/LiveActivity.java @@ -111,25 +111,20 @@ public void onJoinChannelSuccess(String channel, int uid, int elapsed) { @Override public void onUserJoined(int uid, int elapsed) { - // Do nothing at the moment - } - - @Override - public void onUserOffline(final int uid, int reason) { runOnUiThread(new Runnable() { @Override public void run() { - removeRemoteUser(uid); + renderRemoteUser(uid); } }); } @Override - public void onFirstRemoteVideoDecoded(final int uid, int width, int height, int elapsed) { + public void onUserOffline(final int uid, int reason) { runOnUiThread(new Runnable() { @Override public void run() { - renderRemoteUser(uid); + removeRemoteUser(uid); } }); } diff --git a/OpenLive-Windows-MFC/OpenLive/AGEngineEventHandler.cpp b/OpenLive-Windows-MFC/OpenLive/AGEngineEventHandler.cpp index 1e26e5ac..696142bb 100644 --- a/OpenLive-Windows-MFC/OpenLive/AGEngineEventHandler.cpp +++ b/OpenLive-Windows-MFC/OpenLive/AGEngineEventHandler.cpp @@ -186,20 +186,6 @@ void CAGEngineEventHandler::onFirstLocalVideoFrame(int width, int height, int el } -void CAGEngineEventHandler::onFirstRemoteVideoDecoded(uid_t uid, int width, int height, int elapsed) -{ - LPAGE_FIRST_REMOTE_VIDEO_DECODED lpData = new AGE_FIRST_REMOTE_VIDEO_DECODED; - - lpData->uid = uid; - lpData->width = width; - lpData->height = height; - lpData->elapsed = elapsed; - - if(m_hMainWnd != NULL) - ::PostMessage(m_hMainWnd, WM_MSGID(EID_FIRST_REMOTE_VIDEO_DECODED), (WPARAM)lpData, 0); - -} - void CAGEngineEventHandler::onFirstRemoteVideoFrame(uid_t uid, int width, int height, int elapsed) { LPAGE_FIRST_REMOTE_VIDEO_FRAME lpData = new AGE_FIRST_REMOTE_VIDEO_FRAME; diff --git a/OpenLive-Windows-MFC/OpenLive/AGEngineEventHandler.h b/OpenLive-Windows-MFC/OpenLive/AGEngineEventHandler.h index 9d0ea918..412a1e22 100644 --- a/OpenLive-Windows-MFC/OpenLive/AGEngineEventHandler.h +++ b/OpenLive-Windows-MFC/OpenLive/AGEngineEventHandler.h @@ -27,7 +27,6 @@ class CAGEngineEventHandler : virtual void onNetworkQuality(uid_t uid, int txQuality, int rxQuality) override; virtual void onFirstLocalVideoFrame(int width, int height, int elapsed) override; - virtual void onFirstRemoteVideoDecoded(uid_t uid, int width, int height, int elapsed) override; virtual void onFirstRemoteVideoFrame(uid_t uid, int width, int height, int elapsed) override; virtual void onUserJoined(uid_t uid, int elapsed) override; virtual void onUserOffline(uid_t uid, USER_OFFLINE_REASON_TYPE reason) override; diff --git a/OpenLive-Windows-MFC/OpenLive/VideoDlg.cpp b/OpenLive-Windows-MFC/OpenLive/VideoDlg.cpp index 0a8f9f72..5caae45c 100644 --- a/OpenLive-Windows-MFC/OpenLive/VideoDlg.cpp +++ b/OpenLive-Windows-MFC/OpenLive/VideoDlg.cpp @@ -53,7 +53,6 @@ BEGIN_MESSAGE_MAP(CVideoDlg, CDialogEx) ON_MESSAGE(WM_MSGID(EID_REJOINCHANNEL_SUCCESS), &CVideoDlg::OnEIDReJoinChannelSuccess) ON_MESSAGE(WM_MSGID(EID_FIRST_LOCAL_VIDEO_FRAME), &CVideoDlg::OnEIDFirstLocalFrame) - ON_MESSAGE(WM_MSGID(EID_FIRST_REMOTE_VIDEO_DECODED), &CVideoDlg::OnEIDFirstRemoteFrameDecoded) ON_MESSAGE(WM_MSGID(EID_FIRST_REMOTE_VIDEO_FRAME), &CVideoDlg::OnEIDFirstRemoteVideoFrame) ON_MESSAGE(WM_MSGID(EID_USER_JOINED),&CVideoDlg::OnEIDUserJoined) @@ -1107,31 +1106,6 @@ LRESULT CVideoDlg::OnEIDFirstLocalFrame(WPARAM wParam, LPARAM lParam) return 0; } -LRESULT CVideoDlg::OnEIDFirstRemoteFrameDecoded(WPARAM wParam, LPARAM lParam) -{ - LPAGE_FIRST_REMOTE_VIDEO_DECODED lpData = (LPAGE_FIRST_REMOTE_VIDEO_DECODED)wParam; - POSITION pos = m_listWndInfo.GetHeadPosition(); - while (pos != NULL) { - AGVIDEO_WNDINFO &agvWndInfo = m_listWndInfo.GetNext(pos); - if (agvWndInfo.nUID == lpData->uid) { - agvWndInfo.nWidth = lpData->width; - agvWndInfo.nHeight = lpData->height; - break; - } - } - - RebindVideoWnd(); - - SEI_INFO seiInfo; - memset(&seiInfo, 0, sizeof(SEI_INFO)); - seiInfo.nUID = lpData->uid; - seiInfo.nWidth = lpData->width; - seiInfo.nHeight = lpData->height; - CAgoraObject::GetAgoraObject()->SetSEIInfo(seiInfo.nUID, &seiInfo); - delete lpData; - lpData = NULL; - return false; -} LRESULT CVideoDlg::OnEIDFirstRemoteVideoFrame(WPARAM wParam, LPARAM lParam) { @@ -1162,9 +1136,11 @@ LRESULT CVideoDlg::OnEIDUserJoined(WPARAM wParam, LPARAM lParam) agvWndInfo.nUID = lpData->uid; m_listWndInfo.AddTail(agvWndInfo); } + RebindVideoWnd(); - delete lpData; + delete lpData; + lpData = NULL; return 0; } diff --git a/OpenLive-Windows-MFC/OpenLive/VideoDlg.h b/OpenLive-Windows-MFC/OpenLive/VideoDlg.h index 9cc93afc..8089035e 100644 --- a/OpenLive-Windows-MFC/OpenLive/VideoDlg.h +++ b/OpenLive-Windows-MFC/OpenLive/VideoDlg.h @@ -71,7 +71,7 @@ class CVideoDlg : public CDialogEx afx_msg LRESULT OnEIDReJoinChannelSuccess(WPARAM wParam, LPARAM lParam); afx_msg LRESULT OnEIDFirstLocalFrame(WPARAM wParam, LPARAM lParam); - afx_msg LRESULT OnEIDFirstRemoteFrameDecoded(WPARAM wParam, LPARAM lParam); + afx_msg LRESULT OnEIDFirstRemoteVideoFrame(WPARAM wParam, LPARAM lParam); afx_msg LRESULT OnEIDUserJoined(WPARAM wParam, LPARAM lParam); afx_msg LRESULT OnEIDUserOffline(WPARAM wParam, LPARAM lParam); diff --git a/OpenLive-Windows/agoraobject.cpp b/OpenLive-Windows/agoraobject.cpp index e2d2cc7f..5d2111e7 100644 --- a/OpenLive-Windows/agoraobject.cpp +++ b/OpenLive-Windows/agoraobject.cpp @@ -37,10 +37,7 @@ class AgoraRtcEngineEvent : public agora::rtc::IRtcEngineEventHandler { emit m_pInstance.sender_firstRemoteVideoDecoded(uid, width, height, elapsed); } - virtual void onFirstRemoteVideoFrame(uid_t uid, int width, int height, int elapsed) override - { - emit m_pInstance.sender_firstRemoteVideoFrameDrawn(uid, width, height, elapsed); - } + virtual void onLocalVideoStats(const LocalVideoStats &stats) override { emit m_pInstance.sender_localVideoStats(stats); diff --git a/OpenLive-iOS/OpenLive/LiveRoomViewController.swift b/OpenLive-iOS/OpenLive/LiveRoomViewController.swift index 41b42e99..6f902c0a 100644 --- a/OpenLive-iOS/OpenLive/LiveRoomViewController.swift +++ b/OpenLive-iOS/OpenLive/LiveRoomViewController.swift @@ -304,6 +304,14 @@ extension LiveRoomViewController: AgoraRtcEngineDelegate { let userSession = videoSession(of: uid) userSession.updateInfo(resolution: size) + } + + func rtcEngine(_ engine: AgoraRtcEngineKit, didJoinedOfUid uid: UInt, elapsed: Int) { + guard videoSessions.count <= maxVideoSession else { + return + } + + let userSession = videoSession(of: uid) agoraKit.setupRemoteVideo(userSession.canvas) } diff --git a/OpenLive-macOS/OpenLive/RoomViewController.swift b/OpenLive-macOS/OpenLive/RoomViewController.swift index 97d591b8..51ed0e5a 100644 --- a/OpenLive-macOS/OpenLive/RoomViewController.swift +++ b/OpenLive-macOS/OpenLive/RoomViewController.swift @@ -485,6 +485,10 @@ extension RoomViewController: AgoraRtcEngineDelegate { func rtcEngine(_ engine: AgoraRtcEngineKit, firstRemoteVideoDecodedOfUid uid: UInt, size: CGSize, elapsed: Int) { let userSession = videoSession(of: uid) userSession.updateInfo(resolution: size) + } + + func rtcEngine(_ engine: AgoraRtcEngineKit, didJoinedOfUid uid: UInt, elapsed: Int) { + let userSession = videoSession(of: uid) agoraKit.setupRemoteVideo(userSession.canvas) }