Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(192)

Side by Side Diff: webrtc/voice_engine/channel.cc

Issue 1335353005: Remove channel ids from various interfaces. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: rebase Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « webrtc/voice_engine/channel.h ('k') | webrtc/voice_engine/mock/mock_transport.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2012 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 199 matching lines...) Expand 10 before | Expand all | Expand 10 after
210 CriticalSectionScoped cs(&_callbackCritSect); 210 CriticalSectionScoped cs(&_callbackCritSect);
211 if (_rxVadObserverPtr) 211 if (_rxVadObserverPtr)
212 { 212 {
213 _rxVadObserverPtr->OnRxVad(_channelId, vadDecision); 213 _rxVadObserverPtr->OnRxVad(_channelId, vadDecision);
214 } 214 }
215 215
216 return 0; 216 return 0;
217 } 217 }
218 218
219 int 219 int
220 Channel::SendPacket(int channel, const void *data, size_t len) 220 Channel::SendPacket(const void *data, size_t len)
221 { 221 {
222 channel = VoEChannelId(channel);
223 assert(channel == _channelId);
224
225 WEBRTC_TRACE(kTraceStream, kTraceVoice, VoEId(_instanceId,_channelId), 222 WEBRTC_TRACE(kTraceStream, kTraceVoice, VoEId(_instanceId,_channelId),
226 "Channel::SendPacket(channel=%d, len=%" PRIuS ")", channel, 223 "Channel::SendPacket(channel=%d, len=%" PRIuS ")", len);
227 len);
228 224
229 CriticalSectionScoped cs(&_callbackCritSect); 225 CriticalSectionScoped cs(&_callbackCritSect);
230 226
231 if (_transportPtr == NULL) 227 if (_transportPtr == NULL)
232 { 228 {
233 WEBRTC_TRACE(kTraceError, kTraceVoice, VoEId(_instanceId,_channelId), 229 WEBRTC_TRACE(kTraceError, kTraceVoice, VoEId(_instanceId,_channelId),
234 "Channel::SendPacket() failed to send RTP packet due to" 230 "Channel::SendPacket() failed to send RTP packet due to"
235 " invalid transport object"); 231 " invalid transport object");
236 return -1; 232 return -1;
237 } 233 }
238 234
239 uint8_t* bufferToSendPtr = (uint8_t*)data; 235 uint8_t* bufferToSendPtr = (uint8_t*)data;
240 size_t bufferLength = len; 236 size_t bufferLength = len;
241 237
242 int n = _transportPtr->SendPacket(channel, bufferToSendPtr, 238 int n = _transportPtr->SendPacket(bufferToSendPtr, bufferLength);
243 bufferLength);
244 if (n < 0) { 239 if (n < 0) {
245 std::string transport_name = 240 std::string transport_name =
246 _externalTransport ? "external transport" : "WebRtc sockets"; 241 _externalTransport ? "external transport" : "WebRtc sockets";
247 WEBRTC_TRACE(kTraceError, kTraceVoice, 242 WEBRTC_TRACE(kTraceError, kTraceVoice,
248 VoEId(_instanceId,_channelId), 243 VoEId(_instanceId,_channelId),
249 "Channel::SendPacket() RTP transmission using %s failed", 244 "Channel::SendPacket() RTP transmission using %s failed",
250 transport_name.c_str()); 245 transport_name.c_str());
251 return -1; 246 return -1;
252 } 247 }
253 return n; 248 return n;
254 } 249 }
255 250
256 int 251 int
257 Channel::SendRTCPPacket(int channel, const void *data, size_t len) 252 Channel::SendRTCPPacket(const void *data, size_t len)
258 { 253 {
259 channel = VoEChannelId(channel);
260 assert(channel == _channelId);
261
262 WEBRTC_TRACE(kTraceStream, kTraceVoice, VoEId(_instanceId,_channelId), 254 WEBRTC_TRACE(kTraceStream, kTraceVoice, VoEId(_instanceId,_channelId),
263 "Channel::SendRTCPPacket(channel=%d, len=%" PRIuS ")", channel, 255 "Channel::SendRTCPPacket(len=%" PRIuS ")", len);
264 len);
265 256
266 CriticalSectionScoped cs(&_callbackCritSect); 257 CriticalSectionScoped cs(&_callbackCritSect);
267 if (_transportPtr == NULL) 258 if (_transportPtr == NULL)
268 { 259 {
269 WEBRTC_TRACE(kTraceError, kTraceVoice, 260 WEBRTC_TRACE(kTraceError, kTraceVoice,
270 VoEId(_instanceId,_channelId), 261 VoEId(_instanceId,_channelId),
271 "Channel::SendRTCPPacket() failed to send RTCP packet" 262 "Channel::SendRTCPPacket() failed to send RTCP packet"
272 " due to invalid transport object"); 263 " due to invalid transport object");
273 return -1; 264 return -1;
274 } 265 }
275 266
276 uint8_t* bufferToSendPtr = (uint8_t*)data; 267 uint8_t* bufferToSendPtr = (uint8_t*)data;
277 size_t bufferLength = len; 268 size_t bufferLength = len;
278 269
279 int n = _transportPtr->SendRTCPPacket(channel, 270 int n = _transportPtr->SendRTCPPacket(bufferToSendPtr, bufferLength);
280 bufferToSendPtr,
281 bufferLength);
282 if (n < 0) { 271 if (n < 0) {
283 std::string transport_name = 272 std::string transport_name =
284 _externalTransport ? "external transport" : "WebRtc sockets"; 273 _externalTransport ? "external transport" : "WebRtc sockets";
285 WEBRTC_TRACE(kTraceInfo, kTraceVoice, 274 WEBRTC_TRACE(kTraceInfo, kTraceVoice,
286 VoEId(_instanceId,_channelId), 275 VoEId(_instanceId,_channelId),
287 "Channel::SendRTCPPacket() transmission using %s failed", 276 "Channel::SendRTCPPacket() transmission using %s failed",
288 transport_name.c_str()); 277 transport_name.c_str());
289 return -1; 278 return -1;
290 } 279 }
291 return n; 280 return n;
292 } 281 }
293 282
294 void 283 void Channel::OnPlayTelephoneEvent(uint8_t event,
295 Channel::OnPlayTelephoneEvent(int32_t id, 284 uint16_t lengthMs,
296 uint8_t event, 285 uint8_t volume) {
297 uint16_t lengthMs,
298 uint8_t volume)
299 {
300 WEBRTC_TRACE(kTraceStream, kTraceVoice, VoEId(_instanceId,_channelId), 286 WEBRTC_TRACE(kTraceStream, kTraceVoice, VoEId(_instanceId,_channelId),
301 "Channel::OnPlayTelephoneEvent(id=%d, event=%u, lengthMs=%u," 287 "Channel::OnPlayTelephoneEvent(event=%u, lengthMs=%u,"
302 " volume=%u)", id, event, lengthMs, volume); 288 " volume=%u)", event, lengthMs, volume);
303 289
304 if (!_playOutbandDtmfEvent || (event > 15)) 290 if (!_playOutbandDtmfEvent || (event > 15))
305 { 291 {
306 // Ignore callback since feedback is disabled or event is not a 292 // Ignore callback since feedback is disabled or event is not a
307 // Dtmf tone event. 293 // Dtmf tone event.
308 return; 294 return;
309 } 295 }
310 296
311 assert(_outputMixerPtr != NULL); 297 assert(_outputMixerPtr != NULL);
312 298
313 // Start playing out the Dtmf tone (if playout is enabled). 299 // Start playing out the Dtmf tone (if playout is enabled).
314 // Reduce length of tone with 80ms to the reduce risk of echo. 300 // Reduce length of tone with 80ms to the reduce risk of echo.
315 _outputMixerPtr->PlayDtmfTone(event, lengthMs - 80, volume); 301 _outputMixerPtr->PlayDtmfTone(event, lengthMs - 80, volume);
316 } 302 }
317 303
318 void 304 void
319 Channel::OnIncomingSSRCChanged(int32_t id, uint32_t ssrc) 305 Channel::OnIncomingSSRCChanged(uint32_t ssrc)
320 { 306 {
321 WEBRTC_TRACE(kTraceInfo, kTraceVoice, VoEId(_instanceId,_channelId), 307 WEBRTC_TRACE(kTraceInfo, kTraceVoice, VoEId(_instanceId,_channelId),
322 "Channel::OnIncomingSSRCChanged(id=%d, SSRC=%d)", 308 "Channel::OnIncomingSSRCChanged(SSRC=%d)", ssrc);
323 id, ssrc);
324 309
325 // Update ssrc so that NTP for AV sync can be updated. 310 // Update ssrc so that NTP for AV sync can be updated.
326 _rtpRtcpModule->SetRemoteSSRC(ssrc); 311 _rtpRtcpModule->SetRemoteSSRC(ssrc);
327 } 312 }
328 313
329 void Channel::OnIncomingCSRCChanged(int32_t id, 314 void Channel::OnIncomingCSRCChanged(uint32_t CSRC, bool added) {
330 uint32_t CSRC, 315 WEBRTC_TRACE(kTraceInfo, kTraceVoice, VoEId(_instanceId, _channelId),
331 bool added) 316 "Channel::OnIncomingCSRCChanged(CSRC=%d, added=%d)", CSRC,
332 { 317 added);
333 WEBRTC_TRACE(kTraceInfo, kTraceVoice, VoEId(_instanceId,_channelId),
334 "Channel::OnIncomingCSRCChanged(id=%d, CSRC=%d, added=%d)",
335 id, CSRC, added);
336 } 318 }
337 319
338 int32_t 320 int32_t Channel::OnInitializeDecoder(
339 Channel::OnInitializeDecoder(
340 int32_t id,
341 int8_t payloadType, 321 int8_t payloadType,
342 const char payloadName[RTP_PAYLOAD_NAME_SIZE], 322 const char payloadName[RTP_PAYLOAD_NAME_SIZE],
343 int frequency, 323 int frequency,
344 uint8_t channels, 324 uint8_t channels,
345 uint32_t rate) 325 uint32_t rate) {
346 {
347 WEBRTC_TRACE(kTraceInfo, kTraceVoice, VoEId(_instanceId,_channelId), 326 WEBRTC_TRACE(kTraceInfo, kTraceVoice, VoEId(_instanceId,_channelId),
348 "Channel::OnInitializeDecoder(id=%d, payloadType=%d, " 327 "Channel::OnInitializeDecoder(payloadType=%d, "
349 "payloadName=%s, frequency=%u, channels=%u, rate=%u)", 328 "payloadName=%s, frequency=%u, channels=%u, rate=%u)",
350 id, payloadType, payloadName, frequency, channels, rate); 329 payloadType, payloadName, frequency, channels, rate);
351
352 assert(VoEChannelId(id) == _channelId);
353 330
354 CodecInst receiveCodec = {0}; 331 CodecInst receiveCodec = {0};
355 CodecInst dummyCodec = {0}; 332 CodecInst dummyCodec = {0};
356 333
357 receiveCodec.pltype = payloadType; 334 receiveCodec.pltype = payloadType;
358 receiveCodec.plfreq = frequency; 335 receiveCodec.plfreq = frequency;
359 receiveCodec.channels = channels; 336 receiveCodec.channels = channels;
360 receiveCodec.rate = rate; 337 receiveCodec.rate = rate;
361 strncpy(receiveCodec.plname, payloadName, RTP_PAYLOAD_NAME_SIZE - 1); 338 strncpy(receiveCodec.plname, payloadName, RTP_PAYLOAD_NAME_SIZE - 1);
362 339
(...skipping 355 matching lines...) Expand 10 before | Expand all | Expand 10 after
718 _callbackCritSect(*CriticalSectionWrapper::CreateCriticalSection()), 695 _callbackCritSect(*CriticalSectionWrapper::CreateCriticalSection()),
719 volume_settings_critsect_(*CriticalSectionWrapper::CreateCriticalSection()), 696 volume_settings_critsect_(*CriticalSectionWrapper::CreateCriticalSection()),
720 _instanceId(instanceId), 697 _instanceId(instanceId),
721 _channelId(channelId), 698 _channelId(channelId),
722 rtp_header_parser_(RtpHeaderParser::Create()), 699 rtp_header_parser_(RtpHeaderParser::Create()),
723 rtp_payload_registry_( 700 rtp_payload_registry_(
724 new RTPPayloadRegistry(RTPPayloadStrategy::CreateStrategy(true))), 701 new RTPPayloadRegistry(RTPPayloadStrategy::CreateStrategy(true))),
725 rtp_receive_statistics_( 702 rtp_receive_statistics_(
726 ReceiveStatistics::Create(Clock::GetRealTimeClock())), 703 ReceiveStatistics::Create(Clock::GetRealTimeClock())),
727 rtp_receiver_( 704 rtp_receiver_(
728 RtpReceiver::CreateAudioReceiver(VoEModuleId(instanceId, channelId), 705 RtpReceiver::CreateAudioReceiver(Clock::GetRealTimeClock(),
729 Clock::GetRealTimeClock(),
730 this, 706 this,
731 this, 707 this,
732 this, 708 this,
733 rtp_payload_registry_.get())), 709 rtp_payload_registry_.get())),
734 telephone_event_handler_(rtp_receiver_->GetTelephoneEventHandler()), 710 telephone_event_handler_(rtp_receiver_->GetTelephoneEventHandler()),
735 _outputAudioLevel(), 711 _outputAudioLevel(),
736 _externalTransport(false), 712 _externalTransport(false),
737 _inputFilePlayerPtr(NULL), 713 _inputFilePlayerPtr(NULL),
738 _outputFilePlayerPtr(NULL), 714 _outputFilePlayerPtr(NULL),
739 _outputFileRecorderPtr(NULL), 715 _outputFileRecorderPtr(NULL),
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
810 acm_config.neteq_config.enable_fast_accelerate = 786 acm_config.neteq_config.enable_fast_accelerate =
811 config.Get<NetEqFastAccelerate>().enabled; 787 config.Get<NetEqFastAccelerate>().enabled;
812 acm_config.event_log = event_log; 788 acm_config.event_log = event_log;
813 audio_coding_.reset(AudioCodingModule::Create(acm_config)); 789 audio_coding_.reset(AudioCodingModule::Create(acm_config));
814 790
815 _inbandDtmfQueue.ResetDtmf(); 791 _inbandDtmfQueue.ResetDtmf();
816 _inbandDtmfGenerator.Init(); 792 _inbandDtmfGenerator.Init();
817 _outputAudioLevel.Clear(); 793 _outputAudioLevel.Clear();
818 794
819 RtpRtcp::Configuration configuration; 795 RtpRtcp::Configuration configuration;
820 configuration.id = VoEModuleId(instanceId, channelId);
821 configuration.audio = true; 796 configuration.audio = true;
822 configuration.outgoing_transport = this; 797 configuration.outgoing_transport = this;
823 configuration.audio_messages = this; 798 configuration.audio_messages = this;
824 configuration.receive_statistics = rtp_receive_statistics_.get(); 799 configuration.receive_statistics = rtp_receive_statistics_.get();
825 configuration.bandwidth_callback = rtcp_observer_.get(); 800 configuration.bandwidth_callback = rtcp_observer_.get();
826 801
827 _rtpRtcpModule.reset(RtpRtcp::CreateRtpRtcp(configuration)); 802 _rtpRtcpModule.reset(RtpRtcp::CreateRtpRtcp(configuration));
828 803
829 statistics_proxy_.reset(new StatisticsProxy(_rtpRtcpModule->SSRC())); 804 statistics_proxy_.reset(new StatisticsProxy(_rtpRtcpModule->SSRC()));
830 rtp_receive_statistics_->RegisterRtcpStatisticsCallback( 805 rtp_receive_statistics_->RegisterRtcpStatisticsCallback(
(...skipping 3052 matching lines...) Expand 10 before | Expand all | Expand 10 after
3883 int32_t 3858 int32_t
3884 Channel::SendPacketRaw(const void *data, size_t len, bool RTCP) 3859 Channel::SendPacketRaw(const void *data, size_t len, bool RTCP)
3885 { 3860 {
3886 CriticalSectionScoped cs(&_callbackCritSect); 3861 CriticalSectionScoped cs(&_callbackCritSect);
3887 if (_transportPtr == NULL) 3862 if (_transportPtr == NULL)
3888 { 3863 {
3889 return -1; 3864 return -1;
3890 } 3865 }
3891 if (!RTCP) 3866 if (!RTCP)
3892 { 3867 {
3893 return _transportPtr->SendPacket(_channelId, data, len); 3868 return _transportPtr->SendPacket(data, len);
3894 } 3869 }
3895 else 3870 else
3896 { 3871 {
3897 return _transportPtr->SendRTCPPacket(_channelId, data, len); 3872 return _transportPtr->SendRTCPPacket(data, len);
3898 } 3873 }
3899 } 3874 }
3900 3875
3901 void Channel::UpdatePlayoutTimestamp(bool rtcp) { 3876 void Channel::UpdatePlayoutTimestamp(bool rtcp) {
3902 uint32_t playout_timestamp = 0; 3877 uint32_t playout_timestamp = 0;
3903 3878
3904 if (audio_coding_->PlayoutTimestamp(&playout_timestamp) == -1) { 3879 if (audio_coding_->PlayoutTimestamp(&playout_timestamp) == -1) {
3905 // This can happen if this channel has not been received any RTP packet. In 3880 // This can happen if this channel has not been received any RTP packet. In
3906 // this case, NetEq is not capable of computing playout timestamp. 3881 // this case, NetEq is not capable of computing playout timestamp.
3907 return; 3882 return;
(...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after
4148 int64_t min_rtt = 0; 4123 int64_t min_rtt = 0;
4149 if (_rtpRtcpModule->RTT(remoteSSRC, &rtt, &avg_rtt, &min_rtt, &max_rtt) 4124 if (_rtpRtcpModule->RTT(remoteSSRC, &rtt, &avg_rtt, &min_rtt, &max_rtt)
4150 != 0) { 4125 != 0) {
4151 return 0; 4126 return 0;
4152 } 4127 }
4153 return rtt; 4128 return rtt;
4154 } 4129 }
4155 4130
4156 } // namespace voe 4131 } // namespace voe
4157 } // namespace webrtc 4132 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/voice_engine/channel.h ('k') | webrtc/voice_engine/mock/mock_transport.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698