| OLD | NEW |
| 1 /* | 1 /* |
| 2 * libjingle | 2 * libjingle |
| 3 * Copyright 2014 Google Inc. | 3 * Copyright 2014 Google Inc. |
| 4 * | 4 * |
| 5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
| 6 * modification, are permitted provided that the following conditions are met: | 6 * modification, are permitted provided that the following conditions are met: |
| 7 * | 7 * |
| 8 * 1. Redistributions of source code must retain the above copyright notice, | 8 * 1. Redistributions of source code must retain the above copyright notice, |
| 9 * this list of conditions and the following disclaimer. | 9 * this list of conditions and the following disclaimer. |
| 10 * 2. Redistributions in binary form must reproduce the above copyright notice, | 10 * 2. Redistributions in binary form must reproduce the above copyright notice, |
| (...skipping 593 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 604 const VideoOptions& options, | 604 const VideoOptions& options, |
| 605 VoiceMediaChannel* voice_channel) { | 605 VoiceMediaChannel* voice_channel) { |
| 606 DCHECK(initialized_); | 606 DCHECK(initialized_); |
| 607 LOG(LS_INFO) << "CreateChannel: " | 607 LOG(LS_INFO) << "CreateChannel: " |
| 608 << (voice_channel != NULL ? "With" : "Without") | 608 << (voice_channel != NULL ? "With" : "Without") |
| 609 << " voice channel. Options: " << options.ToString(); | 609 << " voice channel. Options: " << options.ToString(); |
| 610 WebRtcVideoChannel2* channel = | 610 WebRtcVideoChannel2* channel = |
| 611 new WebRtcVideoChannel2(call_factory_, voice_engine_, | 611 new WebRtcVideoChannel2(call_factory_, voice_engine_, |
| 612 static_cast<WebRtcVoiceMediaChannel*>(voice_channel), options, | 612 static_cast<WebRtcVoiceMediaChannel*>(voice_channel), options, |
| 613 external_encoder_factory_, external_decoder_factory_); | 613 external_encoder_factory_, external_decoder_factory_); |
| 614 if (!channel->Init()) { | 614 if (!channel->Init(video_codecs_)) { |
| 615 delete channel; | 615 delete channel; |
| 616 return NULL; | 616 return NULL; |
| 617 } | 617 } |
| 618 channel->SetRecvCodecs(video_codecs_); | |
| 619 return channel; | 618 return channel; |
| 620 } | 619 } |
| 621 | 620 |
| 622 const std::vector<VideoCodec>& WebRtcVideoEngine2::codecs() const { | 621 const std::vector<VideoCodec>& WebRtcVideoEngine2::codecs() const { |
| 623 return video_codecs_; | 622 return video_codecs_; |
| 624 } | 623 } |
| 625 | 624 |
| 626 const std::vector<RtpHeaderExtension>& | 625 const std::vector<RtpHeaderExtension>& |
| 627 WebRtcVideoEngine2::rtp_header_extensions() const { | 626 WebRtcVideoEngine2::rtp_header_extensions() const { |
| 628 return rtp_header_extensions_; | 627 return rtp_header_extensions_; |
| (...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 814 } | 813 } |
| 815 | 814 |
| 816 WebRtcVideoChannel2::~WebRtcVideoChannel2() { | 815 WebRtcVideoChannel2::~WebRtcVideoChannel2() { |
| 817 DetachVoiceChannel(); | 816 DetachVoiceChannel(); |
| 818 for (auto& kv : send_streams_) | 817 for (auto& kv : send_streams_) |
| 819 delete kv.second; | 818 delete kv.second; |
| 820 for (auto& kv : receive_streams_) | 819 for (auto& kv : receive_streams_) |
| 821 delete kv.second; | 820 delete kv.second; |
| 822 } | 821 } |
| 823 | 822 |
| 824 bool WebRtcVideoChannel2::Init() { return true; } | 823 bool WebRtcVideoChannel2::Init(const std::vector<VideoCodec>& recv_codecs) { |
| 824 SetRecvCodecs(recv_codecs); |
| 825 return true; |
| 826 } |
| 825 | 827 |
| 826 void WebRtcVideoChannel2::DetachVoiceChannel() { | 828 void WebRtcVideoChannel2::DetachVoiceChannel() { |
| 827 DCHECK(thread_checker_.CalledOnValidThread()); | 829 DCHECK(thread_checker_.CalledOnValidThread()); |
| 828 if (voice_channel_) { | 830 if (voice_channel_) { |
| 829 voice_channel_->SetCall(nullptr); | 831 voice_channel_->SetCall(nullptr); |
| 830 voice_channel_ = nullptr; | 832 voice_channel_ = nullptr; |
| 831 } | 833 } |
| 832 } | 834 } |
| 833 | 835 |
| 834 bool WebRtcVideoChannel2::CodecIsExternallySupported( | 836 bool WebRtcVideoChannel2::CodecIsExternallySupported( |
| (...skipping 658 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1493 webrtc::PacketReceiver::DELIVERY_OK) { | 1495 webrtc::PacketReceiver::DELIVERY_OK) { |
| 1494 LOG(LS_WARNING) << "Failed to deliver RTCP packet."; | 1496 LOG(LS_WARNING) << "Failed to deliver RTCP packet."; |
| 1495 } | 1497 } |
| 1496 } | 1498 } |
| 1497 | 1499 |
| 1498 void WebRtcVideoChannel2::OnReadyToSend(bool ready) { | 1500 void WebRtcVideoChannel2::OnReadyToSend(bool ready) { |
| 1499 LOG(LS_VERBOSE) << "OnReadyToSend: " << (ready ? "Ready." : "Not ready."); | 1501 LOG(LS_VERBOSE) << "OnReadyToSend: " << (ready ? "Ready." : "Not ready."); |
| 1500 call_->SignalNetworkState(ready ? webrtc::kNetworkUp : webrtc::kNetworkDown); | 1502 call_->SignalNetworkState(ready ? webrtc::kNetworkUp : webrtc::kNetworkDown); |
| 1501 } | 1503 } |
| 1502 | 1504 |
| 1503 bool WebRtcVideoChannel2::MuteStream(uint32 ssrc, bool mute) { | 1505 bool WebRtcVideoChannel2::MuteStream(uint32 ssrc, bool mute, |
| 1506 const VideoOptions* options) { |
| 1504 LOG(LS_VERBOSE) << "MuteStream: " << ssrc << " -> " | 1507 LOG(LS_VERBOSE) << "MuteStream: " << ssrc << " -> " |
| 1505 << (mute ? "mute" : "unmute"); | 1508 << (mute ? "mute" : "unmute"); |
| 1506 DCHECK(ssrc != 0); | 1509 DCHECK(ssrc != 0); |
| 1507 rtc::CritScope stream_lock(&stream_crit_); | 1510 rtc::CritScope stream_lock(&stream_crit_); |
| 1508 if (send_streams_.find(ssrc) == send_streams_.end()) { | 1511 if (send_streams_.find(ssrc) == send_streams_.end()) { |
| 1509 LOG(LS_ERROR) << "No sending stream on ssrc " << ssrc; | 1512 LOG(LS_ERROR) << "No sending stream on ssrc " << ssrc; |
| 1510 return false; | 1513 return false; |
| 1511 } | 1514 } |
| 1512 | 1515 |
| 1513 send_streams_[ssrc]->MuteStream(mute); | 1516 send_streams_[ssrc]->MuteStream(mute); |
| 1514 return true; | 1517 |
| 1518 if (!mute && options) { |
| 1519 return SetOptions(*options); |
| 1520 } else { |
| 1521 return true; |
| 1522 } |
| 1515 } | 1523 } |
| 1516 | 1524 |
| 1517 bool WebRtcVideoChannel2::SetRecvRtpHeaderExtensions( | 1525 bool WebRtcVideoChannel2::SetRecvRtpHeaderExtensions( |
| 1518 const std::vector<RtpHeaderExtension>& extensions) { | 1526 const std::vector<RtpHeaderExtension>& extensions) { |
| 1519 TRACE_EVENT0("webrtc", "WebRtcVideoChannel2::SetRecvRtpHeaderExtensions"); | 1527 TRACE_EVENT0("webrtc", "WebRtcVideoChannel2::SetRecvRtpHeaderExtensions"); |
| 1520 LOG(LS_INFO) << "SetRecvRtpHeaderExtensions: " | 1528 LOG(LS_INFO) << "SetRecvRtpHeaderExtensions: " |
| 1521 << RtpExtensionsToString(extensions); | 1529 << RtpExtensionsToString(extensions); |
| 1522 if (!ValidateRtpHeaderExtensionIds(extensions)) | 1530 if (!ValidateRtpHeaderExtensionIds(extensions)) |
| 1523 return false; | 1531 return false; |
| 1524 | 1532 |
| (...skipping 1224 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2749 video_codecs[i].rtx_payload_type = rtx_mapping[video_codecs[i].codec.id]; | 2757 video_codecs[i].rtx_payload_type = rtx_mapping[video_codecs[i].codec.id]; |
| 2750 } | 2758 } |
| 2751 } | 2759 } |
| 2752 | 2760 |
| 2753 return video_codecs; | 2761 return video_codecs; |
| 2754 } | 2762 } |
| 2755 | 2763 |
| 2756 } // namespace cricket | 2764 } // namespace cricket |
| 2757 | 2765 |
| 2758 #endif // HAVE_WEBRTC_VIDEO | 2766 #endif // HAVE_WEBRTC_VIDEO |
| OLD | NEW |