OLD | NEW |
1 /* | 1 /* |
2 * libjingle | 2 * libjingle |
3 * Copyright 2004 Google Inc. | 3 * Copyright 2004 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 2268 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2279 } | 2279 } |
2280 LOG(LS_INFO) << "SetOutputVolume to " << volume | 2280 LOG(LS_INFO) << "SetOutputVolume to " << volume |
2281 << " for channel " << ch_id << " and ssrc " << ssrc; | 2281 << " for channel " << ch_id << " and ssrc " << ssrc; |
2282 return true; | 2282 return true; |
2283 } | 2283 } |
2284 | 2284 |
2285 bool WebRtcVoiceMediaChannel::CanInsertDtmf() { | 2285 bool WebRtcVoiceMediaChannel::CanInsertDtmf() { |
2286 return dtmf_allowed_; | 2286 return dtmf_allowed_; |
2287 } | 2287 } |
2288 | 2288 |
2289 bool WebRtcVoiceMediaChannel::InsertDtmf(uint32_t ssrc, | 2289 bool WebRtcVoiceMediaChannel::InsertDtmf(uint32_t ssrc, int event, |
2290 int event, | 2290 int duration) { |
2291 int duration, | |
2292 int flags) { | |
2293 RTC_DCHECK(worker_thread_checker_.CalledOnValidThread()); | 2291 RTC_DCHECK(worker_thread_checker_.CalledOnValidThread()); |
2294 if (!dtmf_allowed_) { | 2292 if (!dtmf_allowed_) { |
2295 return false; | 2293 return false; |
2296 } | 2294 } |
2297 | 2295 |
2298 // Send the event. | 2296 // Send the event. |
2299 if (flags & cricket::DF_SEND) { | 2297 int channel = -1; |
2300 int channel = -1; | 2298 if (ssrc == 0) { |
2301 if (ssrc == 0) { | 2299 if (send_streams_.size() > 0) { |
2302 if (send_streams_.size() > 0) { | 2300 channel = send_streams_.begin()->second->channel(); |
2303 channel = send_streams_.begin()->second->channel(); | |
2304 } | |
2305 } else { | |
2306 channel = GetSendChannelId(ssrc); | |
2307 } | 2301 } |
2308 if (channel == -1) { | 2302 } else { |
2309 LOG(LS_WARNING) << "InsertDtmf - The specified ssrc " | 2303 channel = GetSendChannelId(ssrc); |
2310 << ssrc << " is not in use."; | |
2311 return false; | |
2312 } | |
2313 // Send DTMF using out-of-band DTMF. ("true", as 3rd arg) | |
2314 if (engine()->voe()->dtmf()->SendTelephoneEvent( | |
2315 channel, event, true, duration) == -1) { | |
2316 LOG_RTCERR4(SendTelephoneEvent, channel, event, true, duration); | |
2317 return false; | |
2318 } | |
2319 } | 2304 } |
2320 | 2305 if (channel == -1) { |
2321 // Play the event. | 2306 LOG(LS_WARNING) << "InsertDtmf - The specified ssrc " |
2322 if (flags & cricket::DF_PLAY) { | 2307 << ssrc << " is not in use."; |
2323 // Play DTMF tone locally. | 2308 return false; |
2324 if (engine()->voe()->dtmf()->PlayDtmfTone(event, duration) == -1) { | 2309 } |
2325 LOG_RTCERR2(PlayDtmfTone, event, duration); | 2310 // Send DTMF using out-of-band DTMF. ("true", as 3rd arg) |
2326 return false; | 2311 if (engine()->voe()->dtmf()->SendTelephoneEvent( |
2327 } | 2312 channel, event, true, duration) == -1) { |
| 2313 LOG_RTCERR4(SendTelephoneEvent, channel, event, true, duration); |
| 2314 return false; |
2328 } | 2315 } |
2329 | 2316 |
2330 return true; | 2317 return true; |
2331 } | 2318 } |
2332 | 2319 |
2333 void WebRtcVoiceMediaChannel::OnPacketReceived( | 2320 void WebRtcVoiceMediaChannel::OnPacketReceived( |
2334 rtc::Buffer* packet, const rtc::PacketTime& packet_time) { | 2321 rtc::Buffer* packet, const rtc::PacketTime& packet_time) { |
2335 RTC_DCHECK(worker_thread_checker_.CalledOnValidThread()); | 2322 RTC_DCHECK(worker_thread_checker_.CalledOnValidThread()); |
2336 | 2323 |
2337 uint32_t ssrc = 0; | 2324 uint32_t ssrc = 0; |
(...skipping 314 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2652 } | 2639 } |
2653 } else { | 2640 } else { |
2654 LOG(LS_INFO) << "Stopping playout for channel #" << channel; | 2641 LOG(LS_INFO) << "Stopping playout for channel #" << channel; |
2655 engine()->voe()->base()->StopPlayout(channel); | 2642 engine()->voe()->base()->StopPlayout(channel); |
2656 } | 2643 } |
2657 return true; | 2644 return true; |
2658 } | 2645 } |
2659 } // namespace cricket | 2646 } // namespace cricket |
2660 | 2647 |
2661 #endif // HAVE_WEBRTC_VOICE | 2648 #endif // HAVE_WEBRTC_VOICE |
OLD | NEW |