diff --git a/cloudphone/src/main/cpp/CasController.cpp b/cloudphone/src/main/cpp/CasController.cpp index 87b91d2971d86d39678bc92356188c6a5306759d..d6cde26ac1acdbcaaa79f7c6dc5a07a08a596be6 100644 --- a/cloudphone/src/main/cpp/CasController.cpp +++ b/cloudphone/src/main/cpp/CasController.cpp @@ -88,6 +88,7 @@ CasController::CasController() m_frameType = FrameType::H264; m_rotationDegrees = 0; m_mtrans = nullptr; + m_isMTransValid = false; } CasController::~CasController() @@ -113,6 +114,7 @@ CasController::~CasController() cmdCallBack = nullptr; m_orientation = 0; m_mtrans = nullptr; + m_isMTransValid = false; } void CasController::SetJniConf(string key, string value) @@ -519,6 +521,7 @@ bool CasController::DestroyWorkers() m_mtrans->Stop(); } #endif + m_isMTransValid = false; INFO("Succeed to destroy workers"); return true; @@ -781,7 +784,7 @@ int CasController::JniSendData(CasMsgType type, uint8_t *data, int length) { std::lock_guard lockGuard(this->m_lock); #if MTRANS_ENABLED - if (m_mtrans != nullptr) { + if (m_mtrans != nullptr && m_isMTransValid) { if (type == VirtualCamera) { return length == m_mtrans->SendVideoData(data, length, "h264"); } else if (type == VirtualMicrophone) { @@ -1071,6 +1074,7 @@ void CasController::RecvdVideoData(uint8_t *data, int length) memcpy(videoData, data, length); m_videoPacketStream->Handle(videoData); } + m_isMTransValid = true; } void CasController::RecvdAudioData(uint8_t *data, int length) diff --git a/cloudphone/src/main/cpp/CasController.h b/cloudphone/src/main/cpp/CasController.h index 5e8beb66a58f89a13fd3d13ecabb8141456aaef9..400c0e12468392d4fb2b73a09368304ad6564b97 100644 --- a/cloudphone/src/main/cpp/CasController.h +++ b/cloudphone/src/main/cpp/CasController.h @@ -176,6 +176,7 @@ private: std::map m_mediaConfig; int m_orientation = 0; int m_rotationDegrees = 0; + bool m_isMTransValid = false; }; #endif // CLOUDAPPSDK_CASCONTROLLRT_H \ No newline at end of file