| 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 2496 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 2507   if (engine()->voe()->processing()->SetTypingDetectionParameters( | 2507   if (engine()->voe()->processing()->SetTypingDetectionParameters( | 
| 2508           time_window, cost_per_typing, | 2508           time_window, cost_per_typing, | 
| 2509           reporting_threshold, penalty_decay, type_event_delay) == -1) { | 2509           reporting_threshold, penalty_decay, type_event_delay) == -1) { | 
| 2510     // In case of error, log the info and continue | 2510     // In case of error, log the info and continue | 
| 2511     LOG_RTCERR5(SetTypingDetectionParameters, time_window, | 2511     LOG_RTCERR5(SetTypingDetectionParameters, time_window, | 
| 2512                 cost_per_typing, reporting_threshold, penalty_decay, | 2512                 cost_per_typing, reporting_threshold, penalty_decay, | 
| 2513                 type_event_delay); | 2513                 type_event_delay); | 
| 2514   } | 2514   } | 
| 2515 } | 2515 } | 
| 2516 | 2516 | 
| 2517 bool WebRtcVoiceMediaChannel::SetOutputScaling(uint32_t ssrc, | 2517 bool WebRtcVoiceMediaChannel::SetOutputVolume(uint32_t ssrc, double volume) { | 
| 2518                                                double left, |  | 
| 2519                                                double right) { |  | 
| 2520   RTC_DCHECK(thread_checker_.CalledOnValidThread()); | 2518   RTC_DCHECK(thread_checker_.CalledOnValidThread()); | 
| 2521   rtc::CritScope lock(&receive_channels_cs_); | 2519   rtc::CritScope lock(&receive_channels_cs_); | 
| 2522   // Collect the channels to scale the output volume. | 2520   // Collect the channels to scale the output volume. | 
| 2523   std::vector<int> channels; | 2521   std::vector<int> channels; | 
| 2524   if (0 == ssrc) {  // Collect all channels, including the default one. | 2522   if (0 == ssrc) {  // Collect all channels, including the default one. | 
| 2525     // Default channel is not in receive_channels_ if it is not being used for | 2523     // Default channel is not in receive_channels_ if it is not being used for | 
| 2526     // playout. | 2524     // playout. | 
| 2527     if (default_receive_ssrc_ == 0) | 2525     if (default_receive_ssrc_ == 0) | 
| 2528       channels.push_back(voe_channel()); | 2526       channels.push_back(voe_channel()); | 
| 2529     for (const auto& ch : receive_channels_) { | 2527     for (const auto& ch : receive_channels_) { | 
| 2530       channels.push_back(ch.second->channel()); | 2528       channels.push_back(ch.second->channel()); | 
| 2531     } | 2529     } | 
| 2532   } else {  // Collect only the channel of the specified ssrc. | 2530   } else {  // Collect only the channel of the specified ssrc. | 
| 2533     int channel = GetReceiveChannelId(ssrc); | 2531     int channel = GetReceiveChannelId(ssrc); | 
| 2534     if (-1 == channel) { | 2532     if (-1 == channel) { | 
| 2535       LOG(LS_WARNING) << "Cannot find channel for ssrc:" << ssrc; | 2533       LOG(LS_WARNING) << "Cannot find channel for ssrc:" << ssrc; | 
| 2536       return false; | 2534       return false; | 
| 2537     } | 2535     } | 
| 2538     channels.push_back(channel); | 2536     channels.push_back(channel); | 
| 2539   } | 2537   } | 
| 2540 | 2538 | 
| 2541   // Scale the output volume for the collected channels. We first normalize to |  | 
| 2542   // scale the volume and then set the left and right pan. |  | 
| 2543   float scale = static_cast<float>(std::max(left, right)); |  | 
| 2544   if (scale > 0.0001f) { |  | 
| 2545     left /= scale; |  | 
| 2546     right /= scale; |  | 
| 2547   } |  | 
| 2548   for (int ch_id : channels) { | 2539   for (int ch_id : channels) { | 
| 2549     if (-1 == engine()->voe()->volume()->SetChannelOutputVolumeScaling( | 2540     if (-1 == engine()->voe()->volume()->SetChannelOutputVolumeScaling( | 
| 2550         ch_id, scale)) { | 2541         ch_id, volume)) { | 
| 2551       LOG_RTCERR2(SetChannelOutputVolumeScaling, ch_id, scale); | 2542       LOG_RTCERR2(SetChannelOutputVolumeScaling, ch_id, volume); | 
| 2552       return false; | 2543       return false; | 
| 2553     } | 2544     } | 
| 2554     if (-1 == engine()->voe()->volume()->SetOutputVolumePan( | 2545     LOG(LS_INFO) << "SetOutputVolume to " << volume | 
| 2555         ch_id, static_cast<float>(left), static_cast<float>(right))) { |  | 
| 2556       LOG_RTCERR3(SetOutputVolumePan, ch_id, left, right); |  | 
| 2557       // Do not return if fails. SetOutputVolumePan is not available for all |  | 
| 2558       // pltforms. |  | 
| 2559     } |  | 
| 2560     LOG(LS_INFO) << "SetOutputScaling to left=" << left * scale |  | 
| 2561                  << " right=" << right * scale |  | 
| 2562                  << " for channel " << ch_id << " and ssrc " << ssrc; | 2546                  << " for channel " << ch_id << " and ssrc " << ssrc; | 
| 2563   } | 2547   } | 
| 2564   return true; | 2548   return true; | 
| 2565 } | 2549 } | 
| 2566 | 2550 | 
| 2567 bool WebRtcVoiceMediaChannel::CanInsertDtmf() { | 2551 bool WebRtcVoiceMediaChannel::CanInsertDtmf() { | 
| 2568   return dtmf_allowed_; | 2552   return dtmf_allowed_; | 
| 2569 } | 2553 } | 
| 2570 | 2554 | 
| 2571 bool WebRtcVoiceMediaChannel::InsertDtmf(uint32_t ssrc, | 2555 bool WebRtcVoiceMediaChannel::InsertDtmf(uint32_t ssrc, | 
| (...skipping 648 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 3220       LOG(LS_WARNING) << "Unknown codec " << ToString(codec); | 3204       LOG(LS_WARNING) << "Unknown codec " << ToString(codec); | 
| 3221       return false; | 3205       return false; | 
| 3222     } | 3206     } | 
| 3223   } | 3207   } | 
| 3224   return true; | 3208   return true; | 
| 3225 } | 3209 } | 
| 3226 | 3210 | 
| 3227 }  // namespace cricket | 3211 }  // namespace cricket | 
| 3228 | 3212 | 
| 3229 #endif  // HAVE_WEBRTC_VOICE | 3213 #endif  // HAVE_WEBRTC_VOICE | 
| OLD | NEW | 
|---|