| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (c) 2014 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2014 The WebRTC project authors. All Rights Reserved. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
| 5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
| 6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
| 7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
| 8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
| 9 */ | 9 */ |
| 10 | 10 |
| (...skipping 506 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 517 LOG(LS_INFO) << "Creating default receive stream for SSRC=" << ssrc << "."; | 517 LOG(LS_INFO) << "Creating default receive stream for SSRC=" << ssrc << "."; |
| 518 if (!channel->AddRecvStream(sp, true)) { | 518 if (!channel->AddRecvStream(sp, true)) { |
| 519 LOG(LS_WARNING) << "Could not create default receive stream."; | 519 LOG(LS_WARNING) << "Could not create default receive stream."; |
| 520 } | 520 } |
| 521 | 521 |
| 522 channel->SetSink(ssrc, default_sink_); | 522 channel->SetSink(ssrc, default_sink_); |
| 523 default_recv_ssrc_ = ssrc; | 523 default_recv_ssrc_ = ssrc; |
| 524 return kDeliverPacket; | 524 return kDeliverPacket; |
| 525 } | 525 } |
| 526 | 526 |
| 527 rtc::VideoSinkInterface<VideoFrame>* | 527 rtc::VideoSinkInterface<webrtc::VideoFrame>* |
| 528 DefaultUnsignalledSsrcHandler::GetDefaultSink() const { | 528 DefaultUnsignalledSsrcHandler::GetDefaultSink() const { |
| 529 return default_sink_; | 529 return default_sink_; |
| 530 } | 530 } |
| 531 | 531 |
| 532 void DefaultUnsignalledSsrcHandler::SetDefaultSink( | 532 void DefaultUnsignalledSsrcHandler::SetDefaultSink( |
| 533 VideoMediaChannel* channel, | 533 VideoMediaChannel* channel, |
| 534 rtc::VideoSinkInterface<VideoFrame>* sink) { | 534 rtc::VideoSinkInterface<webrtc::VideoFrame>* sink) { |
| 535 default_sink_ = sink; | 535 default_sink_ = sink; |
| 536 if (default_recv_ssrc_ != 0) { | 536 if (default_recv_ssrc_ != 0) { |
| 537 channel->SetSink(default_recv_ssrc_, default_sink_); | 537 channel->SetSink(default_recv_ssrc_, default_sink_); |
| 538 } | 538 } |
| 539 } | 539 } |
| 540 | 540 |
| 541 WebRtcVideoEngine2::WebRtcVideoEngine2() | 541 WebRtcVideoEngine2::WebRtcVideoEngine2() |
| 542 : initialized_(false), | 542 : initialized_(false), |
| 543 external_decoder_factory_(NULL), | 543 external_decoder_factory_(NULL), |
| 544 external_encoder_factory_(NULL) { | 544 external_encoder_factory_(NULL) { |
| (...skipping 514 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1059 return true; | 1059 return true; |
| 1060 } | 1060 } |
| 1061 | 1061 |
| 1062 // TODO(nisse): The enable argument was used for mute logic which has | 1062 // TODO(nisse): The enable argument was used for mute logic which has |
| 1063 // been moved to VideoBroadcaster. So remove the argument from this | 1063 // been moved to VideoBroadcaster. So remove the argument from this |
| 1064 // method. | 1064 // method. |
| 1065 bool WebRtcVideoChannel2::SetVideoSend( | 1065 bool WebRtcVideoChannel2::SetVideoSend( |
| 1066 uint32_t ssrc, | 1066 uint32_t ssrc, |
| 1067 bool enable, | 1067 bool enable, |
| 1068 const VideoOptions* options, | 1068 const VideoOptions* options, |
| 1069 rtc::VideoSourceInterface<cricket::VideoFrame>* source) { | 1069 rtc::VideoSourceInterface<webrtc::VideoFrame>* source) { |
| 1070 TRACE_EVENT0("webrtc", "SetVideoSend"); | 1070 TRACE_EVENT0("webrtc", "SetVideoSend"); |
| 1071 RTC_DCHECK(ssrc != 0); | 1071 RTC_DCHECK(ssrc != 0); |
| 1072 LOG(LS_INFO) << "SetVideoSend (ssrc= " << ssrc << ", enable = " << enable | 1072 LOG(LS_INFO) << "SetVideoSend (ssrc= " << ssrc << ", enable = " << enable |
| 1073 << ", options: " << (options ? options->ToString() : "nullptr") | 1073 << ", options: " << (options ? options->ToString() : "nullptr") |
| 1074 << ", source = " << (source ? "(source)" : "nullptr") << ")"; | 1074 << ", source = " << (source ? "(source)" : "nullptr") << ")"; |
| 1075 | 1075 |
| 1076 rtc::CritScope stream_lock(&stream_crit_); | 1076 rtc::CritScope stream_lock(&stream_crit_); |
| 1077 const auto& kv = send_streams_.find(ssrc); | 1077 const auto& kv = send_streams_.find(ssrc); |
| 1078 if (kv == send_streams_.end()) { | 1078 if (kv == send_streams_.end()) { |
| 1079 // Allow unknown ssrc only if source is null. | 1079 // Allow unknown ssrc only if source is null. |
| (...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1300 if (stream == receive_streams_.end()) { | 1300 if (stream == receive_streams_.end()) { |
| 1301 LOG(LS_ERROR) << "Stream not found for ssrc: " << ssrc; | 1301 LOG(LS_ERROR) << "Stream not found for ssrc: " << ssrc; |
| 1302 return false; | 1302 return false; |
| 1303 } | 1303 } |
| 1304 DeleteReceiveStream(stream->second); | 1304 DeleteReceiveStream(stream->second); |
| 1305 receive_streams_.erase(stream); | 1305 receive_streams_.erase(stream); |
| 1306 | 1306 |
| 1307 return true; | 1307 return true; |
| 1308 } | 1308 } |
| 1309 | 1309 |
| 1310 bool WebRtcVideoChannel2::SetSink(uint32_t ssrc, | 1310 bool WebRtcVideoChannel2::SetSink( |
| 1311 rtc::VideoSinkInterface<VideoFrame>* sink) { | 1311 uint32_t ssrc, |
| 1312 rtc::VideoSinkInterface<webrtc::VideoFrame>* sink) { |
| 1312 LOG(LS_INFO) << "SetSink: ssrc:" << ssrc << " " | 1313 LOG(LS_INFO) << "SetSink: ssrc:" << ssrc << " " |
| 1313 << (sink ? "(ptr)" : "nullptr"); | 1314 << (sink ? "(ptr)" : "nullptr"); |
| 1314 if (ssrc == 0) { | 1315 if (ssrc == 0) { |
| 1315 default_unsignalled_ssrc_handler_.SetDefaultSink(this, sink); | 1316 default_unsignalled_ssrc_handler_.SetDefaultSink(this, sink); |
| 1316 return true; | 1317 return true; |
| 1317 } | 1318 } |
| 1318 | 1319 |
| 1319 rtc::CritScope stream_lock(&stream_crit_); | 1320 rtc::CritScope stream_lock(&stream_crit_); |
| 1320 std::map<uint32_t, WebRtcVideoReceiveStream*>::iterator it = | 1321 std::map<uint32_t, WebRtcVideoReceiveStream*>::iterator it = |
| 1321 receive_streams_.find(ssrc); | 1322 receive_streams_.find(ssrc); |
| (...skipping 269 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1591 } | 1592 } |
| 1592 | 1593 |
| 1593 WebRtcVideoChannel2::WebRtcVideoSendStream::~WebRtcVideoSendStream() { | 1594 WebRtcVideoChannel2::WebRtcVideoSendStream::~WebRtcVideoSendStream() { |
| 1594 if (stream_ != NULL) { | 1595 if (stream_ != NULL) { |
| 1595 call_->DestroyVideoSendStream(stream_); | 1596 call_->DestroyVideoSendStream(stream_); |
| 1596 } | 1597 } |
| 1597 DestroyVideoEncoder(&allocated_encoder_); | 1598 DestroyVideoEncoder(&allocated_encoder_); |
| 1598 } | 1599 } |
| 1599 | 1600 |
| 1600 void WebRtcVideoChannel2::WebRtcVideoSendStream::OnFrame( | 1601 void WebRtcVideoChannel2::WebRtcVideoSendStream::OnFrame( |
| 1601 const VideoFrame& frame) { | 1602 const webrtc::VideoFrame& frame) { |
| 1602 TRACE_EVENT0("webrtc", "WebRtcVideoSendStream::OnFrame"); | 1603 TRACE_EVENT0("webrtc", "WebRtcVideoSendStream::OnFrame"); |
| 1603 webrtc::VideoFrame video_frame(frame.video_frame_buffer(), | 1604 webrtc::VideoFrame video_frame(frame.video_frame_buffer(), |
| 1604 frame.rotation(), | 1605 frame.rotation(), |
| 1605 frame.timestamp_us()); | 1606 frame.timestamp_us()); |
| 1606 | 1607 |
| 1607 rtc::CritScope cs(&lock_); | 1608 rtc::CritScope cs(&lock_); |
| 1608 | 1609 |
| 1609 if (video_frame.width() != last_frame_info_.width || | 1610 if (video_frame.width() != last_frame_info_.width || |
| 1610 video_frame.height() != last_frame_info_.height || | 1611 video_frame.height() != last_frame_info_.height || |
| 1611 video_frame.rotation() != last_frame_info_.rotation || | 1612 video_frame.rotation() != last_frame_info_.rotation || |
| (...skipping 18 matching lines...) Expand all Loading... |
| 1630 | 1631 |
| 1631 // Forward frame to the encoder regardless if we are sending or not. This is | 1632 // Forward frame to the encoder regardless if we are sending or not. This is |
| 1632 // to ensure that the encoder can be reconfigured with the correct frame size | 1633 // to ensure that the encoder can be reconfigured with the correct frame size |
| 1633 // as quickly as possible. | 1634 // as quickly as possible. |
| 1634 encoder_sink_->OnFrame(video_frame); | 1635 encoder_sink_->OnFrame(video_frame); |
| 1635 } | 1636 } |
| 1636 | 1637 |
| 1637 bool WebRtcVideoChannel2::WebRtcVideoSendStream::SetVideoSend( | 1638 bool WebRtcVideoChannel2::WebRtcVideoSendStream::SetVideoSend( |
| 1638 bool enable, | 1639 bool enable, |
| 1639 const VideoOptions* options, | 1640 const VideoOptions* options, |
| 1640 rtc::VideoSourceInterface<cricket::VideoFrame>* source) { | 1641 rtc::VideoSourceInterface<webrtc::VideoFrame>* source) { |
| 1641 TRACE_EVENT0("webrtc", "WebRtcVideoSendStream::SetVideoSend"); | 1642 TRACE_EVENT0("webrtc", "WebRtcVideoSendStream::SetVideoSend"); |
| 1642 RTC_DCHECK_RUN_ON(&thread_checker_); | 1643 RTC_DCHECK_RUN_ON(&thread_checker_); |
| 1643 | 1644 |
| 1644 // Ignore |options| pointer if |enable| is false. | 1645 // Ignore |options| pointer if |enable| is false. |
| 1645 bool options_present = enable && options; | 1646 bool options_present = enable && options; |
| 1646 bool source_changing = source_ != source; | 1647 bool source_changing = source_ != source; |
| 1647 | 1648 |
| 1648 if (options_present) { | 1649 if (options_present) { |
| 1649 VideoOptions old_options = parameters_.options; | 1650 VideoOptions old_options = parameters_.options; |
| 1650 parameters_.options.SetAll(*options); | 1651 parameters_.options.SetAll(*options); |
| (...skipping 735 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2386 } | 2387 } |
| 2387 | 2388 |
| 2388 sink_->OnFrame(frame); | 2389 sink_->OnFrame(frame); |
| 2389 } | 2390 } |
| 2390 | 2391 |
| 2391 bool WebRtcVideoChannel2::WebRtcVideoReceiveStream::IsDefaultStream() const { | 2392 bool WebRtcVideoChannel2::WebRtcVideoReceiveStream::IsDefaultStream() const { |
| 2392 return default_stream_; | 2393 return default_stream_; |
| 2393 } | 2394 } |
| 2394 | 2395 |
| 2395 void WebRtcVideoChannel2::WebRtcVideoReceiveStream::SetSink( | 2396 void WebRtcVideoChannel2::WebRtcVideoReceiveStream::SetSink( |
| 2396 rtc::VideoSinkInterface<cricket::VideoFrame>* sink) { | 2397 rtc::VideoSinkInterface<webrtc::VideoFrame>* sink) { |
| 2397 rtc::CritScope crit(&sink_lock_); | 2398 rtc::CritScope crit(&sink_lock_); |
| 2398 sink_ = sink; | 2399 sink_ = sink; |
| 2399 } | 2400 } |
| 2400 | 2401 |
| 2401 std::string | 2402 std::string |
| 2402 WebRtcVideoChannel2::WebRtcVideoReceiveStream::GetCodecNameFromPayloadType( | 2403 WebRtcVideoChannel2::WebRtcVideoReceiveStream::GetCodecNameFromPayloadType( |
| 2403 int payload_type) { | 2404 int payload_type) { |
| 2404 for (const webrtc::VideoReceiveStream::Decoder& decoder : config_.decoders) { | 2405 for (const webrtc::VideoReceiveStream::Decoder& decoder : config_.decoders) { |
| 2405 if (decoder.payload_type == payload_type) { | 2406 if (decoder.payload_type == payload_type) { |
| 2406 return decoder.payload_name; | 2407 return decoder.payload_name; |
| (...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2574 rtx_mapping[video_codecs[i].codec.id] != | 2575 rtx_mapping[video_codecs[i].codec.id] != |
| 2575 ulpfec_config.red_payload_type) { | 2576 ulpfec_config.red_payload_type) { |
| 2576 video_codecs[i].rtx_payload_type = rtx_mapping[video_codecs[i].codec.id]; | 2577 video_codecs[i].rtx_payload_type = rtx_mapping[video_codecs[i].codec.id]; |
| 2577 } | 2578 } |
| 2578 } | 2579 } |
| 2579 | 2580 |
| 2580 return video_codecs; | 2581 return video_codecs; |
| 2581 } | 2582 } |
| 2582 | 2583 |
| 2583 } // namespace cricket | 2584 } // namespace cricket |
| OLD | NEW |