summary refs log tree commit diff
path: root/src/rtcPeerHandler.cpp
diff options
context:
space:
mode:
authorNewe <speedy.wolfy@outlook.com>2021-05-21 15:48:56 +0200
committerNewe <speedy.wolfy@outlook.com>2021-05-21 15:48:56 +0200
commitf8eceb3124ac4149f180b496082d9965f6b8c1b6 (patch)
tree47487bac892663390c61c622acc2e2dec7606b64 /src/rtcPeerHandler.cpp
parent[edit] Set rpcStub.server to public (diff)
downloadserver-f8eceb3124ac4149f180b496082d9965f6b8c1b6.tar.xz
[edit] Hypothetical gRPC handshake
Diffstat (limited to 'src/rtcPeerHandler.cpp')
-rw-r--r--src/rtcPeerHandler.cpp94
1 files changed, 60 insertions, 34 deletions
diff --git a/src/rtcPeerHandler.cpp b/src/rtcPeerHandler.cpp

index 4696c4c7..9bfc6466 100644 --- a/src/rtcPeerHandler.cpp +++ b/src/rtcPeerHandler.cpp
@@ -1,45 +1,44 @@ #include "rtcPeerHandler.hpp" -rtcPeerHandler::rtcPeerHandler() -{ - rtc::InitLogger(rtc::LogLevel::Verbose, NULL); -} -void rtcPeerHandler::initiateConnection(std::string peerIP, int peerPort) -{ - //Socket connection between client and server - SOCKET sock = socket(AF_INET, SOCK_DGRAM, 0); - sockaddr_in addr; - addr.sin_addr.s_addr = inet_addr(peerIP.c_str()); - addr.sin_port = htons(peerPort); - addr.sin_family = AF_INET; +rtcPeerHandler::rtcPeerHandler() { + rtc::InitLogger(rtc::LogLevel::Verbose, NULL); +} - rtc::Configuration conf; - conf.enableIceTcp = false; - conf.disableAutoNegotiation = false; +void rtcPeerHandler::initiateConnection(std::string peerIP, int peerPort) { + // Socket connection between client and server + SOCKET sock = socket(AF_INET, SOCK_DGRAM, 0); + sockaddr_in addr; + addr.sin_addr.s_addr = inet_addr(peerIP.c_str()); + addr.sin_port = htons(peerPort); + addr.sin_family = AF_INET; - auto pc = std::make_shared<rtc::PeerConnection>(conf); + rtc::Configuration conf; + conf.enableIceTcp = false; + conf.disableAutoNegotiation = false; - rtc::Description::Audio media("audio", rtc::Description::Direction::SendRecv); - media.addOpusCodec(96); - media.setBitrate(64); + auto pc = std::make_shared<rtc::PeerConnection>(conf); + rtc::Description::Audio media("audio", + rtc::Description::Direction::SendRecv); + media.addOpusCodec(96); + media.setBitrate(64); - auto track = pc->addTrack(media); + auto track = pc->addTrack(media); - //auto session = std::make_shared<rtc::MediaHandler>(); + // auto session = std::make_shared<rtc::MediaHandler>(); - //track->setMediaHandler(session); + // track->setMediaHandler(session); - rtc::Reliability rtcRel; - rtcRel.unordered = true; - rtcRel.type = rtc::Reliability::Type::Timed; - rtcRel.rexmit = 500; + rtc::Reliability rtcRel; + rtcRel.unordered = true; + rtcRel.type = rtc::Reliability::Type::Timed; + rtcRel.rexmit = 500; - rtc::DataChannelInit rtcConf; - rtcConf.reliability = rtcRel; - rtcConf.negotiated = false; + rtc::DataChannelInit rtcConf; + rtcConf.reliability = rtcRel; + rtcConf.negotiated = false; - pc->onStateChange([](rtc::PeerConnection::State state) { + pc->onStateChange([](rtc::PeerConnection::State state) { std::cout << "State: " << state << std::endl; if (state == rtc::PeerConnection::State::Disconnected || state == rtc::PeerConnection::State::Failed || @@ -48,10 +47,37 @@ void rtcPeerHandler::initiateConnection(std::string peerIP, int peerPort) } }); - pc->onGatheringStateChange( - [](rtc::PeerConnection::GatheringState state) { std::cout << "Gathering State: " << state << std::endl; }); + pc->onGatheringStateChange([](rtc::PeerConnection::GatheringState state) { + std::cout << "Gathering State: " << state << std::endl; + }); + + /*std::tuple<rtc::Track*, rtc::RtcpSrReporter*> addAudio( + + const std::shared_ptr<rtc::PeerConnection> pc, + const uint8_t payloadType, const uint32_t ssrc, const std::string cname, + const std::string msid, const std::function<void(void)> onOpen) { + auto audio = Description::Audio(cname); + audio.addOpusCodec(payloadType); + audio.addSSRC(ssrc, cname, msid, cname); + auto track = pc->addTrack(audio); + // create RTP configuration + auto rtpConfig = make_shared<RtpPacketizationConfig>( + ssrc, cname, payloadType, OpusRtpPacketizer::defaultClockRate); + // create packetizer + auto packetizer = make_shared<OpusRtpPacketizer>(rtpConfig); + // create opus handler + auto opusHandler = make_shared<OpusPacketizationHandler>(packetizer); + + // add RTCP SR handler + auto srReporter = make_shared<RtcpSrReporter>(rtpConfig); + opusHandler->addToChain(srReporter); + // set handler + track->setMediaHandler(opusHandler); + track->onOpen(onOpen); + auto trackData = make_shared<ClientTrackData>(track, srReporter); + return trackData; + }*/ - pc->createDataChannel("Fosscord voice connection", rtcConf); + pc->createDataChannel("Fosscord voice connection", rtcConf); } - \ No newline at end of file