OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "content/renderer/media/rtc_peer_connection_handler.h" | 5 #include "content/renderer/media/rtc_peer_connection_handler.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 #include <utility> | 8 #include <utility> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
285 } | 285 } |
286 } | 286 } |
287 | 287 |
288 void AddStatistic(int idx, const std::string& name, | 288 void AddStatistic(int idx, const std::string& name, |
289 const std::string& value) { | 289 const std::string& value) { |
290 response_->addStatistic(idx, | 290 response_->addStatistic(idx, |
291 blink::WebString::fromUTF8(name), | 291 blink::WebString::fromUTF8(name), |
292 blink::WebString::fromUTF8(value)); | 292 blink::WebString::fromUTF8(value)); |
293 } | 293 } |
294 | 294 |
295 rtc::scoped_refptr<LocalRTCStatsRequest> request_; | 295 talk_base::scoped_refptr<LocalRTCStatsRequest> request_; |
296 rtc::scoped_refptr<LocalRTCStatsResponse> response_; | 296 talk_base::scoped_refptr<LocalRTCStatsResponse> response_; |
297 }; | 297 }; |
298 | 298 |
299 // Implementation of LocalRTCStatsRequest. | 299 // Implementation of LocalRTCStatsRequest. |
300 LocalRTCStatsRequest::LocalRTCStatsRequest(blink::WebRTCStatsRequest impl) | 300 LocalRTCStatsRequest::LocalRTCStatsRequest(blink::WebRTCStatsRequest impl) |
301 : impl_(impl), | 301 : impl_(impl), |
302 response_(NULL) { | 302 response_(NULL) { |
303 } | 303 } |
304 | 304 |
305 LocalRTCStatsRequest::LocalRTCStatsRequest() {} | 305 LocalRTCStatsRequest::LocalRTCStatsRequest() {} |
306 LocalRTCStatsRequest::~LocalRTCStatsRequest() {} | 306 LocalRTCStatsRequest::~LocalRTCStatsRequest() {} |
307 | 307 |
308 bool LocalRTCStatsRequest::hasSelector() const { | 308 bool LocalRTCStatsRequest::hasSelector() const { |
309 return impl_.hasSelector(); | 309 return impl_.hasSelector(); |
310 } | 310 } |
311 | 311 |
312 blink::WebMediaStreamTrack LocalRTCStatsRequest::component() const { | 312 blink::WebMediaStreamTrack LocalRTCStatsRequest::component() const { |
313 return impl_.component(); | 313 return impl_.component(); |
314 } | 314 } |
315 | 315 |
316 scoped_refptr<LocalRTCStatsResponse> LocalRTCStatsRequest::createResponse() { | 316 scoped_refptr<LocalRTCStatsResponse> LocalRTCStatsRequest::createResponse() { |
317 DCHECK(!response_); | 317 DCHECK(!response_); |
318 response_ = new rtc::RefCountedObject<LocalRTCStatsResponse>( | 318 response_ = new talk_base::RefCountedObject<LocalRTCStatsResponse>( |
319 impl_.createResponse()); | 319 impl_.createResponse()); |
320 return response_.get(); | 320 return response_.get(); |
321 } | 321 } |
322 | 322 |
323 void LocalRTCStatsRequest::requestSucceeded( | 323 void LocalRTCStatsRequest::requestSucceeded( |
324 const LocalRTCStatsResponse* response) { | 324 const LocalRTCStatsResponse* response) { |
325 impl_.requestSucceeded(response->webKitStatsResponse()); | 325 impl_.requestSucceeded(response->webKitStatsResponse()); |
326 } | 326 } |
327 | 327 |
328 // Implementation of LocalRTCStatsResponse. | 328 // Implementation of LocalRTCStatsResponse. |
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
465 config, &constraints, frame_, this); | 465 config, &constraints, frame_, this); |
466 | 466 |
467 if (!native_peer_connection_.get()) { | 467 if (!native_peer_connection_.get()) { |
468 LOG(ERROR) << "Failed to initialize native PeerConnection."; | 468 LOG(ERROR) << "Failed to initialize native PeerConnection."; |
469 return false; | 469 return false; |
470 } | 470 } |
471 if (peer_connection_tracker_) | 471 if (peer_connection_tracker_) |
472 peer_connection_tracker_->RegisterPeerConnection( | 472 peer_connection_tracker_->RegisterPeerConnection( |
473 this, config, constraints, frame_); | 473 this, config, constraints, frame_); |
474 | 474 |
475 uma_observer_ = new rtc::RefCountedObject<PeerConnectionUMAObserver>(); | 475 uma_observer_ = new talk_base::RefCountedObject<PeerConnectionUMAObserver>(); |
476 native_peer_connection_->RegisterUMAObserver(uma_observer_.get()); | 476 native_peer_connection_->RegisterUMAObserver(uma_observer_.get()); |
477 return true; | 477 return true; |
478 } | 478 } |
479 | 479 |
480 bool RTCPeerConnectionHandler::InitializeForTest( | 480 bool RTCPeerConnectionHandler::InitializeForTest( |
481 const blink::WebRTCConfiguration& server_configuration, | 481 const blink::WebRTCConfiguration& server_configuration, |
482 const blink::WebMediaConstraints& options, | 482 const blink::WebMediaConstraints& options, |
483 PeerConnectionTracker* peer_connection_tracker) { | 483 PeerConnectionTracker* peer_connection_tracker) { |
484 webrtc::PeerConnectionInterface::RTCConfiguration config; | 484 webrtc::PeerConnectionInterface::RTCConfiguration config; |
485 GetNativeRtcConfiguration(server_configuration, &config); | 485 GetNativeRtcConfiguration(server_configuration, &config); |
486 | 486 |
487 RTCMediaConstraints constraints(options); | 487 RTCMediaConstraints constraints(options); |
488 native_peer_connection_ = | 488 native_peer_connection_ = |
489 dependency_factory_->CreatePeerConnection( | 489 dependency_factory_->CreatePeerConnection( |
490 config, &constraints, NULL, this); | 490 config, &constraints, NULL, this); |
491 if (!native_peer_connection_.get()) { | 491 if (!native_peer_connection_.get()) { |
492 LOG(ERROR) << "Failed to initialize native PeerConnection."; | 492 LOG(ERROR) << "Failed to initialize native PeerConnection."; |
493 return false; | 493 return false; |
494 } | 494 } |
495 peer_connection_tracker_ = peer_connection_tracker; | 495 peer_connection_tracker_ = peer_connection_tracker; |
496 return true; | 496 return true; |
497 } | 497 } |
498 | 498 |
499 void RTCPeerConnectionHandler::createOffer( | 499 void RTCPeerConnectionHandler::createOffer( |
500 const blink::WebRTCSessionDescriptionRequest& request, | 500 const blink::WebRTCSessionDescriptionRequest& request, |
501 const blink::WebMediaConstraints& options) { | 501 const blink::WebMediaConstraints& options) { |
502 scoped_refptr<CreateSessionDescriptionRequest> description_request( | 502 scoped_refptr<CreateSessionDescriptionRequest> description_request( |
503 new rtc::RefCountedObject<CreateSessionDescriptionRequest>( | 503 new talk_base::RefCountedObject<CreateSessionDescriptionRequest>( |
504 request, this, PeerConnectionTracker::ACTION_CREATE_OFFER)); | 504 request, this, PeerConnectionTracker::ACTION_CREATE_OFFER)); |
505 RTCMediaConstraints constraints(options); | 505 RTCMediaConstraints constraints(options); |
506 native_peer_connection_->CreateOffer(description_request.get(), &constraints); | 506 native_peer_connection_->CreateOffer(description_request.get(), &constraints); |
507 | 507 |
508 if (peer_connection_tracker_) | 508 if (peer_connection_tracker_) |
509 peer_connection_tracker_->TrackCreateOffer(this, constraints); | 509 peer_connection_tracker_->TrackCreateOffer(this, constraints); |
510 } | 510 } |
511 | 511 |
512 void RTCPeerConnectionHandler::createOffer( | 512 void RTCPeerConnectionHandler::createOffer( |
513 const blink::WebRTCSessionDescriptionRequest& request, | 513 const blink::WebRTCSessionDescriptionRequest& request, |
514 const blink::WebRTCOfferOptions& options) { | 514 const blink::WebRTCOfferOptions& options) { |
515 scoped_refptr<CreateSessionDescriptionRequest> description_request( | 515 scoped_refptr<CreateSessionDescriptionRequest> description_request( |
516 new rtc::RefCountedObject<CreateSessionDescriptionRequest>( | 516 new talk_base::RefCountedObject<CreateSessionDescriptionRequest>( |
517 request, this, PeerConnectionTracker::ACTION_CREATE_OFFER)); | 517 request, this, PeerConnectionTracker::ACTION_CREATE_OFFER)); |
518 | 518 |
519 RTCMediaConstraints constraints; | 519 RTCMediaConstraints constraints; |
520 ConvertOfferOptionsToConstraints(options, &constraints); | 520 ConvertOfferOptionsToConstraints(options, &constraints); |
521 native_peer_connection_->CreateOffer(description_request.get(), &constraints); | 521 native_peer_connection_->CreateOffer(description_request.get(), &constraints); |
522 | 522 |
523 if (peer_connection_tracker_) | 523 if (peer_connection_tracker_) |
524 peer_connection_tracker_->TrackCreateOffer(this, constraints); | 524 peer_connection_tracker_->TrackCreateOffer(this, constraints); |
525 } | 525 } |
526 | 526 |
527 void RTCPeerConnectionHandler::createAnswer( | 527 void RTCPeerConnectionHandler::createAnswer( |
528 const blink::WebRTCSessionDescriptionRequest& request, | 528 const blink::WebRTCSessionDescriptionRequest& request, |
529 const blink::WebMediaConstraints& options) { | 529 const blink::WebMediaConstraints& options) { |
530 scoped_refptr<CreateSessionDescriptionRequest> description_request( | 530 scoped_refptr<CreateSessionDescriptionRequest> description_request( |
531 new rtc::RefCountedObject<CreateSessionDescriptionRequest>( | 531 new talk_base::RefCountedObject<CreateSessionDescriptionRequest>( |
532 request, this, PeerConnectionTracker::ACTION_CREATE_ANSWER)); | 532 request, this, PeerConnectionTracker::ACTION_CREATE_ANSWER)); |
533 RTCMediaConstraints constraints(options); | 533 RTCMediaConstraints constraints(options); |
534 native_peer_connection_->CreateAnswer(description_request.get(), | 534 native_peer_connection_->CreateAnswer(description_request.get(), |
535 &constraints); | 535 &constraints); |
536 | 536 |
537 if (peer_connection_tracker_) | 537 if (peer_connection_tracker_) |
538 peer_connection_tracker_->TrackCreateAnswer(this, constraints); | 538 peer_connection_tracker_->TrackCreateAnswer(this, constraints); |
539 } | 539 } |
540 | 540 |
541 void RTCPeerConnectionHandler::setLocalDescription( | 541 void RTCPeerConnectionHandler::setLocalDescription( |
542 const blink::WebRTCVoidRequest& request, | 542 const blink::WebRTCVoidRequest& request, |
543 const blink::WebRTCSessionDescription& description) { | 543 const blink::WebRTCSessionDescription& description) { |
544 webrtc::SdpParseError error; | 544 webrtc::SdpParseError error; |
545 webrtc::SessionDescriptionInterface* native_desc = | 545 webrtc::SessionDescriptionInterface* native_desc = |
546 CreateNativeSessionDescription(description, &error); | 546 CreateNativeSessionDescription(description, &error); |
547 if (!native_desc) { | 547 if (!native_desc) { |
548 std::string reason_str = "Failed to parse SessionDescription. "; | 548 std::string reason_str = "Failed to parse SessionDescription. "; |
549 reason_str.append(error.line); | 549 reason_str.append(error.line); |
550 reason_str.append(" "); | 550 reason_str.append(" "); |
551 reason_str.append(error.description); | 551 reason_str.append(error.description); |
552 LOG(ERROR) << reason_str; | 552 LOG(ERROR) << reason_str; |
553 request.requestFailed(blink::WebString::fromUTF8(reason_str)); | 553 request.requestFailed(blink::WebString::fromUTF8(reason_str)); |
554 return; | 554 return; |
555 } | 555 } |
556 if (peer_connection_tracker_) | 556 if (peer_connection_tracker_) |
557 peer_connection_tracker_->TrackSetSessionDescription( | 557 peer_connection_tracker_->TrackSetSessionDescription( |
558 this, description, PeerConnectionTracker::SOURCE_LOCAL); | 558 this, description, PeerConnectionTracker::SOURCE_LOCAL); |
559 | 559 |
560 scoped_refptr<SetSessionDescriptionRequest> set_request( | 560 scoped_refptr<SetSessionDescriptionRequest> set_request( |
561 new rtc::RefCountedObject<SetSessionDescriptionRequest>( | 561 new talk_base::RefCountedObject<SetSessionDescriptionRequest>( |
562 request, this, PeerConnectionTracker::ACTION_SET_LOCAL_DESCRIPTION)); | 562 request, this, PeerConnectionTracker::ACTION_SET_LOCAL_DESCRIPTION)); |
563 native_peer_connection_->SetLocalDescription(set_request.get(), native_desc); | 563 native_peer_connection_->SetLocalDescription(set_request.get(), native_desc); |
564 } | 564 } |
565 | 565 |
566 void RTCPeerConnectionHandler::setRemoteDescription( | 566 void RTCPeerConnectionHandler::setRemoteDescription( |
567 const blink::WebRTCVoidRequest& request, | 567 const blink::WebRTCVoidRequest& request, |
568 const blink::WebRTCSessionDescription& description) { | 568 const blink::WebRTCSessionDescription& description) { |
569 webrtc::SdpParseError error; | 569 webrtc::SdpParseError error; |
570 webrtc::SessionDescriptionInterface* native_desc = | 570 webrtc::SessionDescriptionInterface* native_desc = |
571 CreateNativeSessionDescription(description, &error); | 571 CreateNativeSessionDescription(description, &error); |
572 if (!native_desc) { | 572 if (!native_desc) { |
573 std::string reason_str = "Failed to parse SessionDescription. "; | 573 std::string reason_str = "Failed to parse SessionDescription. "; |
574 reason_str.append(error.line); | 574 reason_str.append(error.line); |
575 reason_str.append(" "); | 575 reason_str.append(" "); |
576 reason_str.append(error.description); | 576 reason_str.append(error.description); |
577 LOG(ERROR) << reason_str; | 577 LOG(ERROR) << reason_str; |
578 request.requestFailed(blink::WebString::fromUTF8(reason_str)); | 578 request.requestFailed(blink::WebString::fromUTF8(reason_str)); |
579 return; | 579 return; |
580 } | 580 } |
581 if (peer_connection_tracker_) | 581 if (peer_connection_tracker_) |
582 peer_connection_tracker_->TrackSetSessionDescription( | 582 peer_connection_tracker_->TrackSetSessionDescription( |
583 this, description, PeerConnectionTracker::SOURCE_REMOTE); | 583 this, description, PeerConnectionTracker::SOURCE_REMOTE); |
584 | 584 |
585 scoped_refptr<SetSessionDescriptionRequest> set_request( | 585 scoped_refptr<SetSessionDescriptionRequest> set_request( |
586 new rtc::RefCountedObject<SetSessionDescriptionRequest>( | 586 new talk_base::RefCountedObject<SetSessionDescriptionRequest>( |
587 request, this, PeerConnectionTracker::ACTION_SET_REMOTE_DESCRIPTION)); | 587 request, this, PeerConnectionTracker::ACTION_SET_REMOTE_DESCRIPTION)); |
588 native_peer_connection_->SetRemoteDescription(set_request.get(), native_desc); | 588 native_peer_connection_->SetRemoteDescription(set_request.get(), native_desc); |
589 } | 589 } |
590 | 590 |
591 blink::WebRTCSessionDescription | 591 blink::WebRTCSessionDescription |
592 RTCPeerConnectionHandler::localDescription() { | 592 RTCPeerConnectionHandler::localDescription() { |
593 const webrtc::SessionDescriptionInterface* native_desc = | 593 const webrtc::SessionDescriptionInterface* native_desc = |
594 native_peer_connection_->local_description(); | 594 native_peer_connection_->local_description(); |
595 blink::WebRTCSessionDescription description = | 595 blink::WebRTCSessionDescription description = |
596 CreateWebKitSessionDescription(native_desc); | 596 CreateWebKitSessionDescription(native_desc); |
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
721 peer_connection_tracker_->TrackRemoveStream( | 721 peer_connection_tracker_->TrackRemoveStream( |
722 this, stream, PeerConnectionTracker::SOURCE_LOCAL); | 722 this, stream, PeerConnectionTracker::SOURCE_LOCAL); |
723 PerSessionWebRTCAPIMetrics::GetInstance()->DecrementStreamCounter(); | 723 PerSessionWebRTCAPIMetrics::GetInstance()->DecrementStreamCounter(); |
724 track_metrics_.RemoveStream(MediaStreamTrackMetrics::SENT_STREAM, | 724 track_metrics_.RemoveStream(MediaStreamTrackMetrics::SENT_STREAM, |
725 webrtc_stream); | 725 webrtc_stream); |
726 } | 726 } |
727 | 727 |
728 void RTCPeerConnectionHandler::getStats( | 728 void RTCPeerConnectionHandler::getStats( |
729 const blink::WebRTCStatsRequest& request) { | 729 const blink::WebRTCStatsRequest& request) { |
730 scoped_refptr<LocalRTCStatsRequest> inner_request( | 730 scoped_refptr<LocalRTCStatsRequest> inner_request( |
731 new rtc::RefCountedObject<LocalRTCStatsRequest>(request)); | 731 new talk_base::RefCountedObject<LocalRTCStatsRequest>(request)); |
732 getStats(inner_request.get()); | 732 getStats(inner_request.get()); |
733 } | 733 } |
734 | 734 |
735 void RTCPeerConnectionHandler::getStats(LocalRTCStatsRequest* request) { | 735 void RTCPeerConnectionHandler::getStats(LocalRTCStatsRequest* request) { |
736 rtc::scoped_refptr<webrtc::StatsObserver> observer( | 736 talk_base::scoped_refptr<webrtc::StatsObserver> observer( |
737 new rtc::RefCountedObject<StatsResponse>(request)); | 737 new talk_base::RefCountedObject<StatsResponse>(request)); |
738 webrtc::MediaStreamTrackInterface* track = NULL; | 738 webrtc::MediaStreamTrackInterface* track = NULL; |
739 if (request->hasSelector()) { | 739 if (request->hasSelector()) { |
740 blink::WebMediaStreamSource::Type type = | 740 blink::WebMediaStreamSource::Type type = |
741 request->component().source().type(); | 741 request->component().source().type(); |
742 std::string track_id = request->component().id().utf8(); | 742 std::string track_id = request->component().id().utf8(); |
743 if (type == blink::WebMediaStreamSource::TypeAudio) { | 743 if (type == blink::WebMediaStreamSource::TypeAudio) { |
744 track = | 744 track = |
745 native_peer_connection_->local_streams()->FindAudioTrack(track_id); | 745 native_peer_connection_->local_streams()->FindAudioTrack(track_id); |
746 if (!track) { | 746 if (!track) { |
747 track = | 747 track = |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
791 // TODO(jiayl): remove the deprecated reliable field once Libjingle is updated | 791 // TODO(jiayl): remove the deprecated reliable field once Libjingle is updated |
792 // to handle that. | 792 // to handle that. |
793 config.reliable = false; | 793 config.reliable = false; |
794 config.id = init.id; | 794 config.id = init.id; |
795 config.ordered = init.ordered; | 795 config.ordered = init.ordered; |
796 config.negotiated = init.negotiated; | 796 config.negotiated = init.negotiated; |
797 config.maxRetransmits = init.maxRetransmits; | 797 config.maxRetransmits = init.maxRetransmits; |
798 config.maxRetransmitTime = init.maxRetransmitTime; | 798 config.maxRetransmitTime = init.maxRetransmitTime; |
799 config.protocol = base::UTF16ToUTF8(init.protocol); | 799 config.protocol = base::UTF16ToUTF8(init.protocol); |
800 | 800 |
801 rtc::scoped_refptr<webrtc::DataChannelInterface> webrtc_channel( | 801 talk_base::scoped_refptr<webrtc::DataChannelInterface> webrtc_channel( |
802 native_peer_connection_->CreateDataChannel(base::UTF16ToUTF8(label), | 802 native_peer_connection_->CreateDataChannel(base::UTF16ToUTF8(label), |
803 &config)); | 803 &config)); |
804 if (!webrtc_channel) { | 804 if (!webrtc_channel) { |
805 DLOG(ERROR) << "Could not create native data channel."; | 805 DLOG(ERROR) << "Could not create native data channel."; |
806 return NULL; | 806 return NULL; |
807 } | 807 } |
808 if (peer_connection_tracker_) | 808 if (peer_connection_tracker_) |
809 peer_connection_tracker_->TrackCreateDataChannel( | 809 peer_connection_tracker_->TrackCreateDataChannel( |
810 this, webrtc_channel.get(), PeerConnectionTracker::SOURCE_LOCAL); | 810 this, webrtc_channel.get(), PeerConnectionTracker::SOURCE_LOCAL); |
811 | 811 |
812 ++num_data_channels_created_; | 812 ++num_data_channels_created_; |
813 | 813 |
814 return new RtcDataChannelHandler(webrtc_channel); | 814 return new RtcDataChannelHandler(webrtc_channel); |
815 } | 815 } |
816 | 816 |
817 blink::WebRTCDTMFSenderHandler* RTCPeerConnectionHandler::createDTMFSender( | 817 blink::WebRTCDTMFSenderHandler* RTCPeerConnectionHandler::createDTMFSender( |
818 const blink::WebMediaStreamTrack& track) { | 818 const blink::WebMediaStreamTrack& track) { |
819 DVLOG(1) << "createDTMFSender."; | 819 DVLOG(1) << "createDTMFSender."; |
820 | 820 |
821 MediaStreamTrack* native_track = MediaStreamTrack::GetTrack(track); | 821 MediaStreamTrack* native_track = MediaStreamTrack::GetTrack(track); |
822 if (!native_track || | 822 if (!native_track || |
823 track.source().type() != blink::WebMediaStreamSource::TypeAudio) { | 823 track.source().type() != blink::WebMediaStreamSource::TypeAudio) { |
824 DLOG(ERROR) << "Could not create DTMF sender from a non-audio track."; | 824 DLOG(ERROR) << "Could not create DTMF sender from a non-audio track."; |
825 return NULL; | 825 return NULL; |
826 } | 826 } |
827 | 827 |
828 webrtc::AudioTrackInterface* audio_track = native_track->GetAudioAdapter(); | 828 webrtc::AudioTrackInterface* audio_track = native_track->GetAudioAdapter(); |
829 rtc::scoped_refptr<webrtc::DtmfSenderInterface> sender( | 829 talk_base::scoped_refptr<webrtc::DtmfSenderInterface> sender( |
830 native_peer_connection_->CreateDtmfSender(audio_track)); | 830 native_peer_connection_->CreateDtmfSender(audio_track)); |
831 if (!sender) { | 831 if (!sender) { |
832 DLOG(ERROR) << "Could not create native DTMF sender."; | 832 DLOG(ERROR) << "Could not create native DTMF sender."; |
833 return NULL; | 833 return NULL; |
834 } | 834 } |
835 if (peer_connection_tracker_) | 835 if (peer_connection_tracker_) |
836 peer_connection_tracker_->TrackCreateDTMFSender(this, track); | 836 peer_connection_tracker_->TrackCreateDTMFSender(this, track); |
837 | 837 |
838 return new RtcDtmfSenderHandler(sender); | 838 return new RtcDtmfSenderHandler(sender); |
839 } | 839 } |
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
998 webrtc::SessionDescriptionInterface* native_desc = | 998 webrtc::SessionDescriptionInterface* native_desc = |
999 dependency_factory_->CreateSessionDescription(type, sdp, error); | 999 dependency_factory_->CreateSessionDescription(type, sdp, error); |
1000 | 1000 |
1001 LOG_IF(ERROR, !native_desc) << "Failed to create native session description." | 1001 LOG_IF(ERROR, !native_desc) << "Failed to create native session description." |
1002 << " Type: " << type << " SDP: " << sdp; | 1002 << " Type: " << type << " SDP: " << sdp; |
1003 | 1003 |
1004 return native_desc; | 1004 return native_desc; |
1005 } | 1005 } |
1006 | 1006 |
1007 } // namespace content | 1007 } // namespace content |
OLD | NEW |