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 508 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
519 LOG(LS_INFO) << "WebRtcVideoEngine2::~WebRtcVideoEngine2"; | 519 LOG(LS_INFO) << "WebRtcVideoEngine2::~WebRtcVideoEngine2"; |
520 } | 520 } |
521 | 521 |
522 void WebRtcVideoEngine2::Init() { | 522 void WebRtcVideoEngine2::Init() { |
523 LOG(LS_INFO) << "WebRtcVideoEngine2::Init"; | 523 LOG(LS_INFO) << "WebRtcVideoEngine2::Init"; |
524 initialized_ = true; | 524 initialized_ = true; |
525 } | 525 } |
526 | 526 |
527 WebRtcVideoChannel2* WebRtcVideoEngine2::CreateChannel( | 527 WebRtcVideoChannel2* WebRtcVideoEngine2::CreateChannel( |
528 webrtc::Call* call, | 528 webrtc::Call* call, |
529 const VideoOptions& options) { | 529 const MediaChannelOptions& options, |
| 530 const VideoOptions& video_options) { |
530 RTC_DCHECK(initialized_); | 531 RTC_DCHECK(initialized_); |
531 LOG(LS_INFO) << "CreateChannel. Options: " << options.ToString(); | 532 LOG(LS_INFO) << "CreateChannel. Options: " << video_options.ToString(); |
532 return new WebRtcVideoChannel2(call, options, video_codecs_, | 533 return new WebRtcVideoChannel2(call, options, video_options, video_codecs_, |
533 external_encoder_factory_, external_decoder_factory_); | 534 external_encoder_factory_, |
| 535 external_decoder_factory_); |
534 } | 536 } |
535 | 537 |
536 const std::vector<VideoCodec>& WebRtcVideoEngine2::codecs() const { | 538 const std::vector<VideoCodec>& WebRtcVideoEngine2::codecs() const { |
537 return video_codecs_; | 539 return video_codecs_; |
538 } | 540 } |
539 | 541 |
540 RtpCapabilities WebRtcVideoEngine2::GetCapabilities() const { | 542 RtpCapabilities WebRtcVideoEngine2::GetCapabilities() const { |
541 RtpCapabilities capabilities; | 543 RtpCapabilities capabilities; |
542 capabilities.header_extensions.push_back( | 544 capabilities.header_extensions.push_back( |
543 RtpHeaderExtension(kRtpTimestampOffsetHeaderExtension, | 545 RtpHeaderExtension(kRtpTimestampOffsetHeaderExtension, |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
612 0); | 614 0); |
613 | 615 |
614 AddDefaultFeedbackParams(&codec); | 616 AddDefaultFeedbackParams(&codec); |
615 supported_codecs.push_back(codec); | 617 supported_codecs.push_back(codec); |
616 } | 618 } |
617 return supported_codecs; | 619 return supported_codecs; |
618 } | 620 } |
619 | 621 |
620 WebRtcVideoChannel2::WebRtcVideoChannel2( | 622 WebRtcVideoChannel2::WebRtcVideoChannel2( |
621 webrtc::Call* call, | 623 webrtc::Call* call, |
622 const VideoOptions& options, | 624 const MediaChannelOptions& options, |
| 625 const VideoOptions& video_options, |
623 const std::vector<VideoCodec>& recv_codecs, | 626 const std::vector<VideoCodec>& recv_codecs, |
624 WebRtcVideoEncoderFactory* external_encoder_factory, | 627 WebRtcVideoEncoderFactory* external_encoder_factory, |
625 WebRtcVideoDecoderFactory* external_decoder_factory) | 628 WebRtcVideoDecoderFactory* external_decoder_factory) |
626 : call_(call), | 629 : VideoMediaChannel(options), |
| 630 call_(call), |
627 unsignalled_ssrc_handler_(&default_unsignalled_ssrc_handler_), | 631 unsignalled_ssrc_handler_(&default_unsignalled_ssrc_handler_), |
628 external_encoder_factory_(external_encoder_factory), | 632 external_encoder_factory_(external_encoder_factory), |
629 external_decoder_factory_(external_decoder_factory) { | 633 external_decoder_factory_(external_decoder_factory) { |
630 RTC_DCHECK(thread_checker_.CalledOnValidThread()); | 634 RTC_DCHECK(thread_checker_.CalledOnValidThread()); |
631 SetDefaultOptions(); | 635 SetDefaultOptions(); |
632 options_.SetAll(options); | 636 options_.SetAll(video_options); |
633 if (options_.cpu_overuse_detection) | 637 if (options_.cpu_overuse_detection) |
634 signal_cpu_adaptation_ = *options_.cpu_overuse_detection; | 638 signal_cpu_adaptation_ = *options_.cpu_overuse_detection; |
635 rtcp_receiver_report_ssrc_ = kDefaultRtcpReceiverReportSsrc; | 639 rtcp_receiver_report_ssrc_ = kDefaultRtcpReceiverReportSsrc; |
636 sending_ = false; | 640 sending_ = false; |
637 default_send_ssrc_ = 0; | 641 default_send_ssrc_ = 0; |
638 RTC_DCHECK(ValidateCodecFormats(recv_codecs)); | 642 RTC_DCHECK(ValidateCodecFormats(recv_codecs)); |
639 recv_codecs_ = FilterSupportedCodecs(MapCodecs(recv_codecs)); | 643 recv_codecs_ = FilterSupportedCodecs(MapCodecs(recv_codecs)); |
640 } | 644 } |
641 | 645 |
642 void WebRtcVideoChannel2::SetDefaultOptions() { | 646 void WebRtcVideoChannel2::SetDefaultOptions() { |
643 options_.cpu_overuse_detection = rtc::Optional<bool>(true); | 647 options_.cpu_overuse_detection = rtc::Optional<bool>(true); |
644 options_.dscp = rtc::Optional<bool>(false); | |
645 options_.suspend_below_min_bitrate = rtc::Optional<bool>(false); | 648 options_.suspend_below_min_bitrate = rtc::Optional<bool>(false); |
646 options_.screencast_min_bitrate_kbps = rtc::Optional<int>(0); | 649 options_.screencast_min_bitrate_kbps = rtc::Optional<int>(0); |
647 } | 650 } |
648 | 651 |
649 WebRtcVideoChannel2::~WebRtcVideoChannel2() { | 652 WebRtcVideoChannel2::~WebRtcVideoChannel2() { |
650 for (auto& kv : send_streams_) | 653 for (auto& kv : send_streams_) |
651 delete kv.second; | 654 delete kv.second; |
652 for (auto& kv : receive_streams_) | 655 for (auto& kv : receive_streams_) |
653 delete kv.second; | 656 delete kv.second; |
654 } | 657 } |
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
767 // Handle RTCP mode. | 770 // Handle RTCP mode. |
768 if (params.rtcp.reduced_size != send_params_.rtcp.reduced_size) { | 771 if (params.rtcp.reduced_size != send_params_.rtcp.reduced_size) { |
769 changed_params->rtcp_mode = rtc::Optional<webrtc::RtcpMode>( | 772 changed_params->rtcp_mode = rtc::Optional<webrtc::RtcpMode>( |
770 params.rtcp.reduced_size ? webrtc::RtcpMode::kReducedSize | 773 params.rtcp.reduced_size ? webrtc::RtcpMode::kReducedSize |
771 : webrtc::RtcpMode::kCompound); | 774 : webrtc::RtcpMode::kCompound); |
772 } | 775 } |
773 | 776 |
774 return true; | 777 return true; |
775 } | 778 } |
776 | 779 |
| 780 rtc::DiffServCodePoint WebRtcVideoChannel2::MediaTypeDscpValue() const { |
| 781 return rtc::DSCP_AF41; |
| 782 } |
| 783 |
777 bool WebRtcVideoChannel2::SetSendParameters(const VideoSendParameters& params) { | 784 bool WebRtcVideoChannel2::SetSendParameters(const VideoSendParameters& params) { |
778 TRACE_EVENT0("webrtc", "WebRtcVideoChannel2::SetSendParameters"); | 785 TRACE_EVENT0("webrtc", "WebRtcVideoChannel2::SetSendParameters"); |
779 LOG(LS_INFO) << "SetSendParameters: " << params.ToString(); | 786 LOG(LS_INFO) << "SetSendParameters: " << params.ToString(); |
780 ChangedSendParameters changed_params; | 787 ChangedSendParameters changed_params; |
781 if (!GetChangedSendParameters(params, &changed_params)) { | 788 if (!GetChangedSendParameters(params, &changed_params)) { |
782 return false; | 789 return false; |
783 } | 790 } |
784 | 791 |
785 bool bitrate_config_changed = false; | 792 bool bitrate_config_changed = false; |
786 | 793 |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
819 } | 826 } |
820 | 827 |
821 if (changed_params.options) { | 828 if (changed_params.options) { |
822 options_.SetAll(*changed_params.options); | 829 options_.SetAll(*changed_params.options); |
823 { | 830 { |
824 rtc::CritScope lock(&capturer_crit_); | 831 rtc::CritScope lock(&capturer_crit_); |
825 if (options_.cpu_overuse_detection) { | 832 if (options_.cpu_overuse_detection) { |
826 signal_cpu_adaptation_ = *options_.cpu_overuse_detection; | 833 signal_cpu_adaptation_ = *options_.cpu_overuse_detection; |
827 } | 834 } |
828 } | 835 } |
829 rtc::DiffServCodePoint dscp = | |
830 options_.dscp.value_or(false) ? rtc::DSCP_AF41 : rtc::DSCP_DEFAULT; | |
831 MediaChannel::SetDscp(dscp); | |
832 } | 836 } |
833 | 837 |
834 { | 838 { |
835 rtc::CritScope stream_lock(&stream_crit_); | 839 rtc::CritScope stream_lock(&stream_crit_); |
836 for (auto& kv : send_streams_) { | 840 for (auto& kv : send_streams_) { |
837 kv.second->SetSendParameters(changed_params); | 841 kv.second->SetSendParameters(changed_params); |
838 } | 842 } |
839 if (changed_params.codec) { | 843 if (changed_params.codec) { |
840 // Update receive feedback parameters from new codec. | 844 // Update receive feedback parameters from new codec. |
841 LOG(LS_INFO) | 845 LOG(LS_INFO) |
(...skipping 1685 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2527 video_codecs[i].rtx_payload_type = rtx_mapping[video_codecs[i].codec.id]; | 2531 video_codecs[i].rtx_payload_type = rtx_mapping[video_codecs[i].codec.id]; |
2528 } | 2532 } |
2529 } | 2533 } |
2530 | 2534 |
2531 return video_codecs; | 2535 return video_codecs; |
2532 } | 2536 } |
2533 | 2537 |
2534 } // namespace cricket | 2538 } // namespace cricket |
2535 | 2539 |
2536 #endif // HAVE_WEBRTC_VIDEO | 2540 #endif // HAVE_WEBRTC_VIDEO |
OLD | NEW |