#include #include #include #include "../common/comm.h" #include "api.h" #include "Protocol.pb.h" #include "../common/socket_client.h" #include "../common/iobuffer.h" #include "PeerConnection.h" #include "VideoRenderer.h" #include "message_queue.h" PeerConnectionWrapper::PeerConnectionWrapper(SocketClient* d) :_client(d) { _nativeHandle = nullptr; } PeerConnectionWrapper::~PeerConnectionWrapper() { if (_nativeHandle != nullptr) { } } void PeerConnectionWrapper::Initialize(int32_t peer,int32_t index ,bool bNeedData) { bDataChannel=bNeedData; _nativeHandle = mrsPeerConnectionCreate(); std::cout<<"native handle"<<_nativeHandle<(UserData); lhs->OnConnect(); } void PeerConnectionWrapper::OnConnect() { bConnected = true; } const std::string kOffer = "offer"; const std::string kAnswer = "answer"; void PeerConnectionWrapper::LocalSdpReadytoSendCallback(void* user_data,int32_t peer,int32_t view, const char* type, const char* sdp_data) { auto lhs = static_cast(user_data); lhs->OnLocalSdpReadytoSend(peer,view,type, sdp_data); } void PeerConnectionWrapper::OnLocalSdpReadytoSend(int32_t peer,int32_t view,const char* type, const char* sdp) { //std::string newsdp = ForceSdpCodecs(sdp, PreferredAudioCodec, PreferredAudioCodecExtraParamsRemote, PreferredVideoCodec, PreferredVideoCodecExtraParamsRemote); //std::cout<WriteOffer(EgoType::User,peer,view, type, sdp); } else if(kAnswer==type) { _client->WriteAnswer(EgoType::User,peer,view, type, sdp); } //mrsWe } void PeerConnectionWrapper::SetRemoteDescription(const char* type, std::string sdp) { //std::string newsdp = ForceSdpCodecs(sdp, PreferredAudioCodec, PreferredAudioCodecExtraParamsLocal, PreferredVideoCodec, PreferredVideoCodecExtraParamsLocal); auto ret = mrsPeerConnectionSetRemoteDescription(_nativeHandle, type, sdp.c_str()); assert(ret == true); } void PeerConnectionWrapper::IceCandidateReadytoSendCallback(void* user_data,int32_t peer,int32_t index, const char* sdp, int32_t sdp_mline_index, const char* sdp_mid) { auto lhs = static_cast(user_data); lhs->OnIceCandidateReadytoSend(peer,index,sdp, sdp_mline_index, sdp_mid); } void PeerConnectionWrapper::OnIceCandidateReadytoSend(int32_t peer,int32_t index,const char* candidate, int32_t sdp_mline_index, const char* sdp_mid) { _client->WriteCandidate(EgoType::User,peer,index, candidate, sdp_mline_index, sdp_mid); } void PeerConnectionWrapper::AddIceCandidate(const char* sdp, int32_t sdp_mline_index, const char* sdp_mid) { auto ret = mrsPeerConnectionAddIceCandidate(_nativeHandle, sdp, sdp_mline_index, sdp_mid); assert(ret == true); } bool PeerConnectionWrapper::CreateOffer() { // std::cout<<__FUNCTION__<<","<<__LINE__<Buffer,pBuffer->Length); //assert(ret==true); if(ret==false) { printf("send failed to Peer \n"); } }