OLD | NEW |
1 /* | 1 /* |
2 * Copyright (c) 2004 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2004 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 825 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
836 } | 836 } |
837 | 837 |
838 class WebRtcVoiceMediaChannel::WebRtcAudioSendStream | 838 class WebRtcVoiceMediaChannel::WebRtcAudioSendStream |
839 : public AudioSource::Sink { | 839 : public AudioSource::Sink { |
840 public: | 840 public: |
841 WebRtcAudioSendStream( | 841 WebRtcAudioSendStream( |
842 int ch, | 842 int ch, |
843 webrtc::AudioTransport* voe_audio_transport, | 843 webrtc::AudioTransport* voe_audio_transport, |
844 uint32_t ssrc, | 844 uint32_t ssrc, |
845 const std::string& c_name, | 845 const std::string& c_name, |
| 846 const std::string track_id, |
846 const rtc::Optional<webrtc::AudioSendStream::Config::SendCodecSpec>& | 847 const rtc::Optional<webrtc::AudioSendStream::Config::SendCodecSpec>& |
847 send_codec_spec, | 848 send_codec_spec, |
848 const std::vector<webrtc::RtpExtension>& extensions, | 849 const std::vector<webrtc::RtpExtension>& extensions, |
849 int max_send_bitrate_bps, | 850 int max_send_bitrate_bps, |
850 const rtc::Optional<std::string>& audio_network_adaptor_config, | 851 const rtc::Optional<std::string>& audio_network_adaptor_config, |
851 webrtc::Call* call, | 852 webrtc::Call* call, |
852 webrtc::Transport* send_transport, | 853 webrtc::Transport* send_transport, |
853 const rtc::scoped_refptr<webrtc::AudioEncoderFactory>& encoder_factory) | 854 const rtc::scoped_refptr<webrtc::AudioEncoderFactory>& encoder_factory) |
854 : voe_audio_transport_(voe_audio_transport), | 855 : voe_audio_transport_(voe_audio_transport), |
855 call_(call), | 856 call_(call), |
856 config_(send_transport), | 857 config_(send_transport), |
857 send_side_bwe_with_overhead_( | 858 send_side_bwe_with_overhead_( |
858 webrtc::field_trial::IsEnabled("WebRTC-SendSideBwe-WithOverhead")), | 859 webrtc::field_trial::IsEnabled("WebRTC-SendSideBwe-WithOverhead")), |
859 max_send_bitrate_bps_(max_send_bitrate_bps), | 860 max_send_bitrate_bps_(max_send_bitrate_bps), |
860 rtp_parameters_(CreateRtpParametersWithOneEncoding()) { | 861 rtp_parameters_(CreateRtpParametersWithOneEncoding()) { |
861 RTC_DCHECK_GE(ch, 0); | 862 RTC_DCHECK_GE(ch, 0); |
862 // TODO(solenberg): Once we're not using FakeWebRtcVoiceEngine anymore: | 863 // TODO(solenberg): Once we're not using FakeWebRtcVoiceEngine anymore: |
863 // RTC_DCHECK(voe_audio_transport); | 864 // RTC_DCHECK(voe_audio_transport); |
864 RTC_DCHECK(call); | 865 RTC_DCHECK(call); |
865 RTC_DCHECK(encoder_factory); | 866 RTC_DCHECK(encoder_factory); |
866 config_.rtp.ssrc = ssrc; | 867 config_.rtp.ssrc = ssrc; |
867 config_.rtp.c_name = c_name; | 868 config_.rtp.c_name = c_name; |
868 config_.voe_channel_id = ch; | 869 config_.voe_channel_id = ch; |
869 config_.rtp.extensions = extensions; | 870 config_.rtp.extensions = extensions; |
870 config_.audio_network_adaptor_config = audio_network_adaptor_config; | 871 config_.audio_network_adaptor_config = audio_network_adaptor_config; |
871 config_.encoder_factory = encoder_factory; | 872 config_.encoder_factory = encoder_factory; |
| 873 config_.track_id = track_id; |
872 rtp_parameters_.encodings[0].ssrc = rtc::Optional<uint32_t>(ssrc); | 874 rtp_parameters_.encodings[0].ssrc = rtc::Optional<uint32_t>(ssrc); |
873 | 875 |
874 if (send_codec_spec) { | 876 if (send_codec_spec) { |
875 UpdateSendCodecSpec(*send_codec_spec); | 877 UpdateSendCodecSpec(*send_codec_spec); |
876 } | 878 } |
877 | 879 |
878 stream_ = call_->CreateAudioSendStream(config_); | 880 stream_ = call_->CreateAudioSendStream(config_); |
879 } | 881 } |
880 | 882 |
881 ~WebRtcAudioSendStream() override { | 883 ~WebRtcAudioSendStream() override { |
(...skipping 981 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1863 } | 1865 } |
1864 | 1866 |
1865 // Save the channel to send_streams_, so that RemoveSendStream() can still | 1867 // Save the channel to send_streams_, so that RemoveSendStream() can still |
1866 // delete the channel in case failure happens below. | 1868 // delete the channel in case failure happens below. |
1867 webrtc::AudioTransport* audio_transport = | 1869 webrtc::AudioTransport* audio_transport = |
1868 engine()->voe()->base()->audio_transport(); | 1870 engine()->voe()->base()->audio_transport(); |
1869 | 1871 |
1870 rtc::Optional<std::string> audio_network_adaptor_config = | 1872 rtc::Optional<std::string> audio_network_adaptor_config = |
1871 GetAudioNetworkAdaptorConfig(options_); | 1873 GetAudioNetworkAdaptorConfig(options_); |
1872 WebRtcAudioSendStream* stream = new WebRtcAudioSendStream( | 1874 WebRtcAudioSendStream* stream = new WebRtcAudioSendStream( |
1873 channel, audio_transport, ssrc, sp.cname, send_codec_spec_, | 1875 channel, audio_transport, ssrc, sp.cname, sp.id, send_codec_spec_, |
1874 send_rtp_extensions_, max_send_bitrate_bps_, audio_network_adaptor_config, | 1876 send_rtp_extensions_, max_send_bitrate_bps_, audio_network_adaptor_config, |
1875 call_, this, engine()->encoder_factory_); | 1877 call_, this, engine()->encoder_factory_); |
1876 send_streams_.insert(std::make_pair(ssrc, stream)); | 1878 send_streams_.insert(std::make_pair(ssrc, stream)); |
1877 | 1879 |
1878 // At this point the stream's local SSRC has been updated. If it is the first | 1880 // At this point the stream's local SSRC has been updated. If it is the first |
1879 // send stream, make sure that all the receive streams are updated with the | 1881 // send stream, make sure that all the receive streams are updated with the |
1880 // same SSRC in order to send receiver reports. | 1882 // same SSRC in order to send receiver reports. |
1881 if (send_streams_.size() == 1) { | 1883 if (send_streams_.size() == 1) { |
1882 receiver_reports_ssrc_ = ssrc; | 1884 receiver_reports_ssrc_ = ssrc; |
1883 for (const auto& kv : recv_streams_) { | 1885 for (const auto& kv : recv_streams_) { |
(...skipping 481 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2365 ssrc); | 2367 ssrc); |
2366 if (it != unsignaled_recv_ssrcs_.end()) { | 2368 if (it != unsignaled_recv_ssrcs_.end()) { |
2367 unsignaled_recv_ssrcs_.erase(it); | 2369 unsignaled_recv_ssrcs_.erase(it); |
2368 return true; | 2370 return true; |
2369 } | 2371 } |
2370 return false; | 2372 return false; |
2371 } | 2373 } |
2372 } // namespace cricket | 2374 } // namespace cricket |
2373 | 2375 |
2374 #endif // HAVE_WEBRTC_VOICE | 2376 #endif // HAVE_WEBRTC_VOICE |
OLD | NEW |