OLD | NEW |
1 /* | 1 /* |
2 * libjingle | 2 * libjingle |
3 * Copyright 2012 Google Inc. | 3 * Copyright 2012 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 1164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1175 } | 1175 } |
1176 | 1176 |
1177 void WebRtcSession::SetAudioSend(uint32 ssrc, bool enable, | 1177 void WebRtcSession::SetAudioSend(uint32 ssrc, bool enable, |
1178 const cricket::AudioOptions& options, | 1178 const cricket::AudioOptions& options, |
1179 cricket::AudioRenderer* renderer) { | 1179 cricket::AudioRenderer* renderer) { |
1180 ASSERT(signaling_thread()->IsCurrent()); | 1180 ASSERT(signaling_thread()->IsCurrent()); |
1181 if (!voice_channel_) { | 1181 if (!voice_channel_) { |
1182 LOG(LS_ERROR) << "SetAudioSend: No audio channel exists."; | 1182 LOG(LS_ERROR) << "SetAudioSend: No audio channel exists."; |
1183 return; | 1183 return; |
1184 } | 1184 } |
1185 if (!voice_channel_->SetLocalRenderer(ssrc, renderer)) { | 1185 if (!voice_channel_->SetAudioSend(ssrc, !enable, &options, renderer)) { |
1186 // SetRenderer() can fail if the ssrc does not match any send channel. | |
1187 LOG(LS_ERROR) << "SetAudioSend: ssrc is incorrect: " << ssrc; | 1186 LOG(LS_ERROR) << "SetAudioSend: ssrc is incorrect: " << ssrc; |
1188 return; | |
1189 } | 1187 } |
1190 if (!voice_channel_->MuteStream(ssrc, !enable)) { | |
1191 // Allow that MuteStream fail if |enable| is false but assert otherwise. | |
1192 // This in the normal case when the underlying media channel has already | |
1193 // been deleted. | |
1194 ASSERT(enable == false); | |
1195 return; | |
1196 } | |
1197 if (enable) | |
1198 voice_channel_->SetChannelOptions(options); | |
1199 } | 1188 } |
1200 | 1189 |
1201 void WebRtcSession::SetAudioPlayoutVolume(uint32 ssrc, double volume) { | 1190 void WebRtcSession::SetAudioPlayoutVolume(uint32 ssrc, double volume) { |
1202 ASSERT(signaling_thread()->IsCurrent()); | 1191 ASSERT(signaling_thread()->IsCurrent()); |
1203 ASSERT(volume >= 0 && volume <= 10); | 1192 ASSERT(volume >= 0 && volume <= 10); |
1204 if (!voice_channel_) { | 1193 if (!voice_channel_) { |
1205 LOG(LS_ERROR) << "SetAudioPlayoutVolume: No audio channel exists."; | 1194 LOG(LS_ERROR) << "SetAudioPlayoutVolume: No audio channel exists."; |
1206 return; | 1195 return; |
1207 } | 1196 } |
1208 | 1197 |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1247 } | 1236 } |
1248 } | 1237 } |
1249 | 1238 |
1250 void WebRtcSession::SetVideoSend(uint32 ssrc, bool enable, | 1239 void WebRtcSession::SetVideoSend(uint32 ssrc, bool enable, |
1251 const cricket::VideoOptions* options) { | 1240 const cricket::VideoOptions* options) { |
1252 ASSERT(signaling_thread()->IsCurrent()); | 1241 ASSERT(signaling_thread()->IsCurrent()); |
1253 if (!video_channel_) { | 1242 if (!video_channel_) { |
1254 LOG(LS_WARNING) << "SetVideoSend: No video channel exists."; | 1243 LOG(LS_WARNING) << "SetVideoSend: No video channel exists."; |
1255 return; | 1244 return; |
1256 } | 1245 } |
1257 if (!video_channel_->MuteStream(ssrc, !enable)) { | 1246 if (!video_channel_->SetVideoSend(ssrc, !enable, options)) { |
1258 // Allow that MuteStream fail if |enable| is false but assert otherwise. | 1247 // Allow that MuteStream fail if |enable| is false but assert otherwise. |
1259 // This in the normal case when the underlying media channel has already | 1248 // This in the normal case when the underlying media channel has already |
1260 // been deleted. | 1249 // been deleted. |
1261 ASSERT(enable == false); | 1250 ASSERT(enable == false); |
1262 return; | |
1263 } | 1251 } |
1264 if (enable && options) | |
1265 video_channel_->SetChannelOptions(*options); | |
1266 } | 1252 } |
1267 | 1253 |
1268 bool WebRtcSession::CanInsertDtmf(const std::string& track_id) { | 1254 bool WebRtcSession::CanInsertDtmf(const std::string& track_id) { |
1269 ASSERT(signaling_thread()->IsCurrent()); | 1255 ASSERT(signaling_thread()->IsCurrent()); |
1270 if (!voice_channel_) { | 1256 if (!voice_channel_) { |
1271 LOG(LS_ERROR) << "CanInsertDtmf: No audio channel exists."; | 1257 LOG(LS_ERROR) << "CanInsertDtmf: No audio channel exists."; |
1272 return false; | 1258 return false; |
1273 } | 1259 } |
1274 uint32 send_ssrc = 0; | 1260 uint32 send_ssrc = 0; |
1275 // The Dtmf is negotiated per channel not ssrc, so we only check if the ssrc | 1261 // The Dtmf is negotiated per channel not ssrc, so we only check if the ssrc |
(...skipping 821 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2097 | 2083 |
2098 if (!srtp_cipher.empty()) { | 2084 if (!srtp_cipher.empty()) { |
2099 metrics_observer_->AddHistogramSample(srtp_name, srtp_cipher); | 2085 metrics_observer_->AddHistogramSample(srtp_name, srtp_cipher); |
2100 } | 2086 } |
2101 if (!ssl_cipher.empty()) { | 2087 if (!ssl_cipher.empty()) { |
2102 metrics_observer_->AddHistogramSample(ssl_name, ssl_cipher); | 2088 metrics_observer_->AddHistogramSample(ssl_name, ssl_cipher); |
2103 } | 2089 } |
2104 } | 2090 } |
2105 | 2091 |
2106 } // namespace webrtc | 2092 } // namespace webrtc |
OLD | NEW |