@@ -27,10 +27,10 @@ static std::map<libwebrtc::RtcpMuxPolicy,
2727 webrtc::PeerConnectionInterface::kRtcpMuxPolicyRequire }};
2828
2929static std::map<libwebrtc::SdpSemantics, webrtc::SdpSemantics>
30- sdp_semantics_map = {
31- {libwebrtc::SdpSemantics:: kPlanB , webrtc::SdpSemantics::kPlanB_DEPRECATED },
32- {libwebrtc::SdpSemantics::kUnifiedPlan ,
33- webrtc::SdpSemantics::kUnifiedPlan }};
30+ sdp_semantics_map = {{libwebrtc::SdpSemantics:: kPlanB ,
31+ webrtc::SdpSemantics::kPlanB_DEPRECATED },
32+ {libwebrtc::SdpSemantics::kUnifiedPlan ,
33+ webrtc::SdpSemantics::kUnifiedPlan }};
3434
3535static std::map<libwebrtc::CandidateNetworkPolicy,
3636 webrtc::PeerConnectionInterface::CandidateNetworkPolicy>
@@ -69,8 +69,7 @@ static std::map<webrtc::PeerConnectionInterface::PeerConnectionState,
6969 {webrtc::PeerConnectionInterface::PeerConnectionState::kConnected ,
7070 libwebrtc::RTCPeerConnectionState::RTCPeerConnectionStateConnected},
7171 {webrtc::PeerConnectionInterface::PeerConnectionState::kDisconnected ,
72- libwebrtc::RTCPeerConnectionState::
73- RTCPeerConnectionStateDisconnected},
72+ libwebrtc::RTCPeerConnectionState::RTCPeerConnectionStateDisconnected},
7473 {webrtc::PeerConnectionInterface::PeerConnectionState::kClosed ,
7574 libwebrtc::RTCPeerConnectionState::RTCPeerConnectionStateClosed},
7675 {webrtc::PeerConnectionInterface::PeerConnectionState::kFailed ,
@@ -352,8 +351,8 @@ void RTCPeerConnectionImpl::OnIceCandidate(
352351 }
353352
354353 RTC_LOG (LS_INFO) << __FUNCTION__ << " , mid " << candidate->sdp_mid ()
355- << " , mline " << candidate->sdp_mline_index () << " , sdp"
356- << cand_sdp;
354+ << " , mline " << candidate->sdp_mline_index () << " , sdp"
355+ << cand_sdp;
357356}
358357
359358void RTCPeerConnectionImpl::RegisterRTCPeerConnectionObserver (
@@ -408,7 +407,8 @@ bool RTCPeerConnectionImpl::Initialize() {
408407
409408 RTCMediaConstraintsImpl* media_constraints =
410409 static_cast <RTCMediaConstraintsImpl*>(constraints_.get ());
411- webrtc::MediaConstraints rtc_constraints (media_constraints->GetMandatory (),media_constraints->GetOptional ());
410+ webrtc::MediaConstraints rtc_constraints (media_constraints->GetMandatory (),
411+ media_constraints->GetOptional ());
412412 CopyConstraintsIntoRtcConfiguration (&rtc_constraints, &config);
413413
414414 webrtc::PeerConnectionFactoryInterface::Options options;
@@ -563,7 +563,8 @@ void RTCPeerConnectionImpl::CreateOffer(
563563 RTCMediaConstraintsImpl* media_constraints =
564564 static_cast <RTCMediaConstraintsImpl*>(constraints.get ());
565565 webrtc::PeerConnectionInterface::RTCOfferAnswerOptions offer_answer_options;
566- webrtc::MediaConstraints rtc_constraints (media_constraints->GetMandatory (),media_constraints->GetOptional ());
566+ webrtc::MediaConstraints rtc_constraints (media_constraints->GetMandatory (),
567+ media_constraints->GetOptional ());
567568 if (CopyConstraintsIntoOfferAnswerOptions (&rtc_constraints,
568569 &offer_answer_options) == false ) {
569570 offer_answer_options = offer_answer_options_;
@@ -586,7 +587,8 @@ void RTCPeerConnectionImpl::CreateAnswer(
586587 RTCMediaConstraintsImpl* media_constraints =
587588 static_cast <RTCMediaConstraintsImpl*>(constraints.get ());
588589 webrtc::PeerConnectionInterface::RTCOfferAnswerOptions offer_answer_options;
589- webrtc::MediaConstraints rtc_constraints (media_constraints->GetMandatory (),media_constraints->GetOptional ());
590+ webrtc::MediaConstraints rtc_constraints (media_constraints->GetMandatory (),
591+ media_constraints->GetOptional ());
590592 if (CopyConstraintsIntoOfferAnswerOptions (&rtc_constraints,
591593 &offer_answer_options) == false ) {
592594 offer_answer_options = offer_answer_options_;
@@ -662,37 +664,45 @@ int RTCPeerConnectionImpl::RemoveStream(scoped_refptr<RTCMediaStream> stream) {
662664 return 0 ;
663665}
664666
665- scoped_refptr<RTCMediaStream> RTCPeerConnectionImpl::CreateLocalMediaStream (const string stream_id) {
667+ scoped_refptr<RTCMediaStream> RTCPeerConnectionImpl::CreateLocalMediaStream (
668+ const string stream_id) {
666669 if (!rtc_peerconnection_factory_.get ()) {
667670 return nullptr ;
668671 }
669- auto stream = rtc_peerconnection_factory_->CreateLocalMediaStream (stream_id.c_string ());
672+ auto stream =
673+ rtc_peerconnection_factory_->CreateLocalMediaStream (stream_id.c_string ());
670674 auto rtc_stream = new RefCountedObject<MediaStreamImpl>(stream);
671675 local_streams_.push_back (rtc_stream);
672676 return rtc_stream;
673677}
674678
675- bool RTCPeerConnectionImpl::GetStats (
676- const RTCAudioTrack* track,
677- scoped_refptr<TrackStatsObserver> observer) {
678- AudioTrackImpl* impl = static_cast <AudioTrackImpl*>((RTCAudioTrack*)track);
679- rtc::scoped_refptr<WebRTCStatsObserver> rtc_observer =
680- WebRTCStatsObserver::Create (observer, " stats" );
681- rtc_peerconnection_->GetStats (
682- rtc_observer.get (), impl->rtc_track ().get (),
683- webrtc::PeerConnectionInterface::kStatsOutputLevelDebug );
679+ bool RTCPeerConnectionImpl::GetStats (scoped_refptr<RTCRtpSender> sender,
680+ OnStatsCollectorSuccess success,
681+ OnStatsCollectorFailure failure) {
682+ rtc::scoped_refptr<WebRTCStatsCollectorCallback> rtc_callback =
683+ WebRTCStatsCollectorCallback::Create (success, failure);
684+ if (!rtc_peerconnection_.get () || !rtc_peerconnection_factory_.get ()) {
685+ webrtc::MutexLock cs (callback_crt_sec_.get ());
686+ failure (" Failed to initialize PeerConnection" );
687+ return false ;
688+ }
689+ RTCRtpSenderImpl* impl = static_cast <RTCRtpSenderImpl*>(sender.get ());
690+ rtc_peerconnection_->GetStats (impl->rtc_rtp_sender (), rtc_callback);
684691 return true ;
685692}
686693
687- bool RTCPeerConnectionImpl::GetStats (
688- const RTCVideoTrack* track,
689- scoped_refptr<TrackStatsObserver> observer) {
690- VideoTrackImpl* impl = static_cast <VideoTrackImpl*>((RTCVideoTrack*)track);
691- rtc::scoped_refptr<WebRTCStatsObserver> rtc_observer =
692- WebRTCStatsObserver::Create (observer, " recv" );
693- rtc_peerconnection_->GetStats (
694- rtc_observer.get (), impl->rtc_track ().get (),
695- webrtc::PeerConnectionInterface::kStatsOutputLevelDebug );
694+ bool RTCPeerConnectionImpl::GetStats (scoped_refptr<RTCRtpReceiver> receiver,
695+ OnStatsCollectorSuccess success,
696+ OnStatsCollectorFailure failure) {
697+ rtc::scoped_refptr<WebRTCStatsCollectorCallback> rtc_callback =
698+ WebRTCStatsCollectorCallback::Create (success, failure);
699+ if (!rtc_peerconnection_.get () || !rtc_peerconnection_factory_.get ()) {
700+ webrtc::MutexLock cs (callback_crt_sec_.get ());
701+ failure (" Failed to initialize PeerConnection" );
702+ return false ;
703+ }
704+ RTCRtpReceiverImpl* impl = static_cast <RTCRtpReceiverImpl*>(receiver.get ());
705+ rtc_peerconnection_->GetStats (impl->rtp_receiver (), rtc_callback);
696706 return true ;
697707}
698708
@@ -821,8 +831,9 @@ scoped_refptr<RTCRtpSender> RTCPeerConnectionImpl::AddTrack(
821831
822832bool RTCPeerConnectionImpl::RemoveTrack (scoped_refptr<RTCRtpSender> render) {
823833 RTCRtpSenderImpl* impl = static_cast <RTCRtpSenderImpl*>(render.get ());
824- webrtc::RTCError err = rtc_peerconnection_->RemoveTrackOrError (impl->rtc_rtp_sender ());
825- if (err.ok ()) {
834+ webrtc::RTCError err =
835+ rtc_peerconnection_->RemoveTrackOrError (impl->rtc_rtp_sender ());
836+ if (err.ok ()) {
826837 return true ;
827838 }
828839 return false ;
@@ -886,83 +897,6 @@ void WebRTCStatsCollectorCallback::OnStatsDelivered(
886897 success_ (reports);
887898}
888899
889- void WebRTCStatsObserver::OnComplete (const webrtc::StatsReports& reports) {
890- MediaTrackStatistics stats;
891-
892- for (auto report : reports) {
893- // for (auto kv : report->values())
894- // {
895- // LOG_WARNING(<< kv.second->display_name() << ": "
896- // << kv.second->ToString());
897- // }
898-
899- const webrtc::StatsReport::Value* kv =
900- report->FindValue (webrtc::StatsReport::kStatsValueNameBytesReceived );
901- if (kv) {
902- stats.bytes_received = kv->int64_val ();
903- }
904- kv = report->FindValue (webrtc::StatsReport::kStatsValueNameBytesSent );
905- if (kv) {
906- stats.bytes_sent = kv->int64_val ();
907- }
908-
909- kv = report->FindValue (webrtc::StatsReport::kStatsValueNameRtt );
910- if (kv) {
911- stats.rtt = kv->int64_val ();
912- }
913-
914- kv = report->FindValue (webrtc::StatsReport::kStatsValueNamePacketsSent );
915- if (kv) {
916- stats.packets_sent = kv->int_val ();
917- }
918-
919- kv = report->FindValue (webrtc::StatsReport::kStatsValueNameFrameRateSent );
920- if (kv) {
921- stats.frame_rate_sent = kv->int_val ();
922- }
923-
924- kv = report->FindValue (
925- webrtc::StatsReport::kStatsValueNameFrameRateReceived );
926- if (kv) {
927- stats.frame_rate_received = kv->int_val ();
928- }
929-
930- kv = report->FindValue (webrtc::StatsReport::kStatsValueNamePacketsReceived );
931- if (kv) {
932- stats.packets_received = kv->int_val ();
933- }
934-
935- kv = report->FindValue (webrtc::StatsReport::kStatsValueNamePacketsLost );
936- if (kv) {
937- stats.packets_lost = kv->int_val ();
938- }
939-
940- kv = report->FindValue (webrtc::StatsReport::kStatsValueNameSsrc );
941- if (kv) {
942- stats.ssrc = kv->int64_val ();
943- }
944-
945- kv = report->FindValue (webrtc::StatsReport::kStatsValueNameTrackId );
946- if (kv) {
947- stats.msid = string (kv->static_string_val ());
948- }
949-
950- kv = report->FindValue (webrtc::StatsReport::kStatsValueNameMediaType );
951- if (kv) {
952- stats.kind = string (kv->static_string_val ());
953- }
954-
955- stats.direction = direction_;
956- }
957-
958- if (observer_)
959- observer_->OnComplete (stats);
960-
961- observer_ = nullptr ;
962-
963- this ->Release ();
964- }
965-
966900MediaRTCStatsImpl::MediaRTCStatsImpl (std::unique_ptr<webrtc::RTCStats> stats)
967901 : stats_(std::move(stats)) {}
968902
0 commit comments