| 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::SetOutputScaling(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) << "SetOutputScaling 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 |