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

Side by Side Diff: talk/media/webrtc/webrtcvoiceengine.cc

Issue 1327933002: Full impl of NnChannel::SetSendParameters and NnChannel::SetRecvParameters (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Got rid of SetChannelOptions 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
OLDNEW
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 568 matching lines...) Expand 10 before | Expand all | Expand 10 after
579 return AUDIO_SEND | AUDIO_RECV; 579 return AUDIO_SEND | AUDIO_RECV;
580 } 580 }
581 581
582 VoiceMediaChannel* WebRtcVoiceEngine::CreateChannel( 582 VoiceMediaChannel* WebRtcVoiceEngine::CreateChannel(
583 const AudioOptions& options) { 583 const AudioOptions& options) {
584 WebRtcVoiceMediaChannel* ch = new WebRtcVoiceMediaChannel(this); 584 WebRtcVoiceMediaChannel* ch = new WebRtcVoiceMediaChannel(this);
585 if (!ch->valid()) { 585 if (!ch->valid()) {
586 delete ch; 586 delete ch;
587 return nullptr; 587 return nullptr;
588 } 588 }
589 if (!ch->SetOptions(options)) { 589 // TODO(solenberg): !!!!! SetParameters with only options?
590 LOG(LS_WARNING) << "Failed to set options while creating channel."; 590 // if (!ch->SetOptions(options)) {
591 } 591 // LOG(LS_WARNING) << "Failed to set options while creating channel.";
592 // }
pthatcher1 2015/09/04 23:21:16 Same here: they just need to be remembered for lat
the sun 2015/09/11 15:03:03 Done.
592 return ch; 593 return ch;
593 } 594 }
594 595
595 bool WebRtcVoiceEngine::SetOptions(const AudioOptions& options) { 596 bool WebRtcVoiceEngine::SetOptions(const AudioOptions& options) {
596 if (!ApplyOptions(options)) { 597 if (!ApplyOptions(options)) {
597 return false; 598 return false;
598 } 599 }
599 options_ = options; 600 options_ = options;
600 return true; 601 return true;
601 } 602 }
(...skipping 2456 matching lines...) Expand 10 before | Expand all | Expand 10 after
3058 // Make sure not sending the same packet to default channel more than once. 3059 // Make sure not sending the same packet to default channel more than once.
3059 if (IsDefaultChannel(ch.second->channel()) && 3060 if (IsDefaultChannel(ch.second->channel()) &&
3060 has_sent_to_default_channel) 3061 has_sent_to_default_channel)
3061 continue; 3062 continue;
3062 3063
3063 engine()->voe()->network()->ReceivedRTCPPacket( 3064 engine()->voe()->network()->ReceivedRTCPPacket(
3064 ch.second->channel(), packet->data(), packet->size()); 3065 ch.second->channel(), packet->data(), packet->size());
3065 } 3066 }
3066 } 3067 }
3067 3068
3068 bool WebRtcVoiceMediaChannel::MuteStream(uint32 ssrc, bool muted) { 3069 bool WebRtcVoiceMediaChannel::MuteStream(uint32 ssrc, bool mute,
3070 const AudioOptions* options) {
3069 int channel = (ssrc == 0) ? voe_channel() : GetSendChannelNum(ssrc); 3071 int channel = (ssrc == 0) ? voe_channel() : GetSendChannelNum(ssrc);
3070 if (channel == -1) { 3072 if (channel == -1) {
3071 LOG(LS_WARNING) << "The specified ssrc " << ssrc << " is not in use."; 3073 LOG(LS_WARNING) << "The specified ssrc " << ssrc << " is not in use.";
3072 return false; 3074 return false;
3073 } 3075 }
3074 if (engine()->voe()->volume()->SetInputMute(channel, muted) == -1) { 3076 if (engine()->voe()->volume()->SetInputMute(channel, mute) == -1) {
3075 LOG_RTCERR2(SetInputMute, channel, muted); 3077 LOG_RTCERR2(SetInputMute, channel, mute);
3076 return false; 3078 return false;
3077 } 3079 }
3078 // We set the AGC to mute state only when all the channels are muted. 3080 // We set the AGC to mute state only when all the channels are muted.
3079 // This implementation is not ideal, instead we should signal the AGC when 3081 // This implementation is not ideal, instead we should signal the AGC when
3080 // the mic channel is muted/unmuted. We can't do it today because there 3082 // the mic channel is muted/unmuted. We can't do it today because there
3081 // is no good way to know which stream is mapping to the mic channel. 3083 // is no good way to know which stream is mapping to the mic channel.
3082 bool all_muted = muted; 3084 bool all_muted = mute;
3083 for (const auto& ch : send_channels_) { 3085 for (const auto& ch : send_channels_) {
3084 if (!all_muted) { 3086 if (!all_muted) {
3085 break; 3087 break;
3086 } 3088 }
3087 if (engine()->voe()->volume()->GetInputMute(ch.second->channel(), 3089 if (engine()->voe()->volume()->GetInputMute(ch.second->channel(),
3088 all_muted)) { 3090 all_muted)) {
3089 LOG_RTCERR1(GetInputMute, ch.second->channel()); 3091 LOG_RTCERR1(GetInputMute, ch.second->channel());
3090 return false; 3092 return false;
3091 } 3093 }
3092 } 3094 }
3093 3095
3094 webrtc::AudioProcessing* ap = engine()->voe()->base()->audio_processing(); 3096 webrtc::AudioProcessing* ap = engine()->voe()->base()->audio_processing();
3095 if (ap) 3097 if (ap)
3096 ap->set_output_will_be_muted(all_muted); 3098 ap->set_output_will_be_muted(all_muted);
3097 return true; 3099
3100 if (!mute && options) {
3101 return SetOptions(*options);
3102 } else {
3103 return true;
3104 }
3098 } 3105 }
3099 3106
3100 // TODO(minyue): SetMaxSendBandwidth() is subject to be renamed to 3107 // TODO(minyue): SetMaxSendBandwidth() is subject to be renamed to
3101 // SetMaxSendBitrate() in future. 3108 // SetMaxSendBitrate() in future.
3102 bool WebRtcVoiceMediaChannel::SetMaxSendBandwidth(int bps) { 3109 bool WebRtcVoiceMediaChannel::SetMaxSendBandwidth(int bps) {
3103 LOG(LS_INFO) << "WebRtcVoiceMediaChannel::SetMaxSendBandwidth."; 3110 LOG(LS_INFO) << "WebRtcVoiceMediaChannel::SetMaxSendBandwidth.";
3104 3111
3105 return SetSendBitrateInternal(bps); 3112 return SetSendBitrateInternal(bps);
3106 } 3113 }
3107 3114
(...skipping 539 matching lines...) Expand 10 before | Expand all | Expand 10 after
3647 3654
3648 int WebRtcSoundclipStream::Rewind() { 3655 int WebRtcSoundclipStream::Rewind() {
3649 mem_.Rewind(); 3656 mem_.Rewind();
3650 // Return -1 to keep VoiceEngine from looping. 3657 // Return -1 to keep VoiceEngine from looping.
3651 return (loop_) ? 0 : -1; 3658 return (loop_) ? 0 : -1;
3652 } 3659 }
3653 3660
3654 } // namespace cricket 3661 } // namespace cricket
3655 3662
3656 #endif // HAVE_WEBRTC_VOICE 3663 #endif // HAVE_WEBRTC_VOICE
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698