diff --git a/submodules/TgVoipWebrtc/Impl/Controller.mm b/submodules/TgVoipWebrtc/Impl/Controller.mm index 808c4aa7ac..e042e528ad 100644 --- a/submodules/TgVoipWebrtc/Impl/Controller.mm +++ b/submodules/TgVoipWebrtc/Impl/Controller.mm @@ -20,9 +20,9 @@ Controller::Controller(bool is_outgoing, const EncryptionKey& encryption_key, si : thread(rtc::Thread::Create()) , connector(std::make_unique(std::make_unique(encryption_key, is_outgoing))) , state(State::Starting) -, is_outgoing(is_outgoing) , last_recv_time(rtc::TimeMillis()) , last_send_time(rtc::TimeMillis()) +, is_outgoing(is_outgoing) , init_timeout(init_timeout * 1000) , reconnect_timeout(reconnect_timeout * 1000) , local_datasaving(false) @@ -37,9 +37,6 @@ Controller::Controller(bool is_outgoing, const EncryptionKey& encryption_key, si Controller::~Controller() { thread->Invoke(RTC_FROM_HERE, [this]() { media = nullptr; -#ifdef TGVOIP_PREPROCESSED_OUTPUT - preproc = nullptr; -#endif connector = nullptr; }); } @@ -111,11 +108,14 @@ void Controller::NewMessage(const message::Base& msg) { } }); if (!webrtc::RtpUtility::RtpHeaderParser(msg_rtp.data.data(), msg_rtp.data.size()).RTCP()) { + //printf("rtp received size %d\n", (int)(msg_rtp.data.size())); last_recv_time = rtc::TimeMillis(); if (state == State::Reconnecting) { state = State::Established; SignalNewState(state); } + } else { + //printf("rtcp received size %d\n", (int)(msg_rtp.data.size())); } } else if (msg.ID == message::tBufferOverflow || msg.ID == message::tPacketIncorrect || diff --git a/submodules/TgVoipWebrtc/Impl/Endpoint.cpp b/submodules/TgVoipWebrtc/Impl/Endpoint.mm similarity index 99% rename from submodules/TgVoipWebrtc/Impl/Endpoint.cpp rename to submodules/TgVoipWebrtc/Impl/Endpoint.mm index 4e26c0d941..7ef75142c0 100644 --- a/submodules/TgVoipWebrtc/Impl/Endpoint.cpp +++ b/submodules/TgVoipWebrtc/Impl/Endpoint.mm @@ -91,6 +91,7 @@ void EndpointRelayObfuscatedTcp::Close(rtc::AsyncPacketSocket *, int) { void EndpointRelayObfuscatedTcp::RecvPacket(rtc::AsyncPacketSocket *socket, const char *data, size_t packet_len, const rtc::SocketAddress& remote_addr, const int64_t& packet_time_us) { EndpointBase::RecvPacket(socket, data, packet_len, remote_addr, packet_time_us); + do { if (in_remains > in_buffer->Length()) break; diff --git a/submodules/TgVoipWebrtc/Impl/MediaEngineWebrtc.mm b/submodules/TgVoipWebrtc/Impl/MediaEngineWebrtc.mm index 1229fc91b0..d72078c985 100644 --- a/submodules/TgVoipWebrtc/Impl/MediaEngineWebrtc.mm +++ b/submodules/TgVoipWebrtc/Impl/MediaEngineWebrtc.mm @@ -177,9 +177,9 @@ MediaEngineWebrtc::MediaEngineWebrtc(bool outgoing, bool send, bool recv) rtc::scoped_refptr objCVideoTrackSource(new rtc::RefCountedObject()); _nativeVideoSource = webrtc::VideoTrackSourceProxy::Create(signaling_thread.get(), worker_thread.get(), objCVideoTrackSource); - codec.SetParam(cricket::kCodecParamMinBitrate, 300000); - codec.SetParam(cricket::kCodecParamStartBitrate, 300000); - codec.SetParam(cricket::kCodecParamMaxBitrate, 600000); + codec.SetParam(cricket::kCodecParamMinBitrate, 32); + codec.SetParam(cricket::kCodecParamStartBitrate, 300); + codec.SetParam(cricket::kCodecParamMaxBitrate, 1000); #if TARGET_IPHONE_SIMULATOR #else @@ -242,9 +242,9 @@ MediaEngineWebrtc::MediaEngineWebrtc(bool outgoing, bool send, bool recv) //send_parameters.options.auto_gain_control = params.auto_gain_control; //send_parameters.options.highpass_filter = false; //send_parameters.options.typing_detection = false; - send_parameters.max_bandwidth_bps = 300000; - send_parameters.rtcp.reduced_size = true; - send_parameters.rtcp.remote_estimate = true; + //send_parameters.max_bandwidth_bps = 800000; + //send_parameters.rtcp.reduced_size = true; + //send_parameters.rtcp.remote_estimate = true; video_channel->SetSendParameters(send_parameters); video_channel->SetVideoSend(ssrc_send_video, NULL, _nativeVideoSource.get()); @@ -270,15 +270,15 @@ MediaEngineWebrtc::MediaEngineWebrtc(bool outgoing, bool send, bool recv) if (recv) { for (auto codec : videoCodecs) { if (codec.id == 96 && codec.name == cricket::kH264CodecName) { - codec.SetParam(cricket::kCodecParamMinBitrate, 300000); - codec.SetParam(cricket::kCodecParamStartBitrate, 300000); - codec.SetParam(cricket::kCodecParamMaxBitrate, 600000); + codec.SetParam(cricket::kCodecParamMinBitrate, 32); + codec.SetParam(cricket::kCodecParamStartBitrate, 300); + codec.SetParam(cricket::kCodecParamMaxBitrate, 1000); cricket::VideoRecvParameters recv_parameters; recv_parameters.codecs.emplace_back(codec); recv_parameters.extensions.emplace_back(webrtc::RtpExtension::kTransportSequenceNumberUri, extension_sequence); - recv_parameters.rtcp.reduced_size = true; - recv_parameters.rtcp.remote_estimate = true; + //recv_parameters.rtcp.reduced_size = true; + //recv_parameters.rtcp.remote_estimate = true; video_channel->AddRecvStream(cricket::StreamParams::CreateLegacy(ssrc_recv_video)); video_channel->SetRecvParameters(recv_parameters); @@ -324,11 +324,11 @@ void MediaEngineWebrtc::SetNetworkParams(const MediaEngineWebrtc::NetworkParams& // send_parameters.max_bandwidth_bps = 16000; send_parameters.rtcp.reduced_size = true; send_parameters.rtcp.remote_estimate = true; - voice_channel->SetSendParameters(send_parameters); + //voice_channel->SetSendParameters(send_parameters); } void MediaEngineWebrtc::SetMute(bool mute) { - voice_channel->SetAudioSend(ssrc_send, !mute, nullptr, &audio_source); + //voice_channel->SetAudioSend(ssrc_send, !mute, nullptr, &audio_source); } void MediaEngineWebrtc::AttachVideoView(VideoMetalView *videoView) { diff --git a/submodules/TgVoipWebrtc/Impl/TgVoip.mm b/submodules/TgVoipWebrtc/Impl/TgVoip.mm index 0b4e5d87eb..f1046f705c 100644 --- a/submodules/TgVoipWebrtc/Impl/TgVoip.mm +++ b/submodules/TgVoipWebrtc/Impl/TgVoip.mm @@ -151,6 +151,9 @@ public: } controller_->AddEndpoint(addr, endpoint.peerTag, type); } + /*rtc::SocketAddress addr("192.168.8.118", 7325); + unsigned char peerTag[16]; + controller_->AddEndpoint(addr, peerTag, Controller::EndpointType::P2P);*/ setNetworkType(initialNetworkType);