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

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

Issue 1364643003: Remove the default send channel in WVoE. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@wvoe_default_receive_channel
Patch Set: merge master Created 5 years, 2 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 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
101 101
102 VoEWrapper* voe() { return voe_wrapper_.get(); } 102 VoEWrapper* voe() { return voe_wrapper_.get(); }
103 int GetLastEngineError(); 103 int GetLastEngineError();
104 104
105 // Set the external ADM. This can only be called before Init. 105 // Set the external ADM. This can only be called before Init.
106 bool SetAudioDeviceModule(webrtc::AudioDeviceModule* adm); 106 bool SetAudioDeviceModule(webrtc::AudioDeviceModule* adm);
107 107
108 // Starts AEC dump using existing file. 108 // Starts AEC dump using existing file.
109 bool StartAecDump(rtc::PlatformFile file); 109 bool StartAecDump(rtc::PlatformFile file);
110 110
111 // Create a VoiceEngine Channel.
112 int CreateMediaVoiceChannel();
113
114 private: 111 private:
115 void Construct(); 112 void Construct();
116 void ConstructCodecs(); 113 void ConstructCodecs();
117 bool GetVoeCodec(int index, webrtc::CodecInst* codec); 114 bool GetVoeCodec(int index, webrtc::CodecInst* codec);
118 bool InitInternal(); 115 bool InitInternal();
119 void SetTraceFilter(int filter); 116 void SetTraceFilter(int filter);
120 void SetTraceOptions(const std::string& options); 117 void SetTraceOptions(const std::string& options);
121 // Every option that is "set" will be applied. Every option not "set" will be 118 // Every option that is "set" will be applied. Every option not "set" will be
122 // ignored. This allows us to selectively turn on and off different options 119 // ignored. This allows us to selectively turn on and off different options
123 // easily at any time. 120 // easily at any time.
124 bool ApplyOptions(const AudioOptions& options); 121 bool ApplyOptions(const AudioOptions& options);
125 122
126 // webrtc::TraceCallback: 123 // webrtc::TraceCallback:
127 void Print(webrtc::TraceLevel level, const char* trace, int length) override; 124 void Print(webrtc::TraceLevel level, const char* trace, int length) override;
128 125
129 // webrtc::VoiceEngineObserver: 126 // webrtc::VoiceEngineObserver:
130 void CallbackOnError(int channel_id, int errCode) override; 127 void CallbackOnError(int channel_id, int errCode) override;
131 128
132 // Given the device type, name, and id, find device id. Return true and 129 // Given the device type, name, and id, find device id. Return true and
133 // set the output parameter rtc_id if successful. 130 // set the output parameter rtc_id if successful.
134 bool FindWebRtcAudioDeviceId( 131 bool FindWebRtcAudioDeviceId(
135 bool is_input, const std::string& dev_name, int dev_id, int* rtc_id); 132 bool is_input, const std::string& dev_name, int dev_id, int* rtc_id);
136 133
137 void StartAecDump(const std::string& filename); 134 void StartAecDump(const std::string& filename);
138 void StopAecDump(); 135 void StopAecDump();
139 int CreateVoiceChannel(VoEWrapper* voe); 136 int CreateVoEChannel();
140 137
141 static const int kDefaultLogSeverity = rtc::LS_WARNING; 138 static const int kDefaultLogSeverity = rtc::LS_WARNING;
142 139
143 // The primary instance of WebRtc VoiceEngine. 140 // The primary instance of WebRtc VoiceEngine.
144 rtc::scoped_ptr<VoEWrapper> voe_wrapper_; 141 rtc::scoped_ptr<VoEWrapper> voe_wrapper_;
145 rtc::scoped_ptr<VoETraceWrapper> tracing_; 142 rtc::scoped_ptr<VoETraceWrapper> tracing_;
146 // The external audio device manager 143 // The external audio device manager
147 webrtc::AudioDeviceModule* adm_; 144 webrtc::AudioDeviceModule* adm_;
148 int log_filter_; 145 int log_filter_;
149 std::string log_options_; 146 std::string log_options_;
(...skipping 23 matching lines...) Expand all
173 // WebRtcVoiceMediaChannel is an implementation of VoiceMediaChannel that uses 170 // WebRtcVoiceMediaChannel is an implementation of VoiceMediaChannel that uses
174 // WebRtc Voice Engine. 171 // WebRtc Voice Engine.
175 class WebRtcVoiceMediaChannel : public VoiceMediaChannel, 172 class WebRtcVoiceMediaChannel : public VoiceMediaChannel,
176 public webrtc::Transport { 173 public webrtc::Transport {
177 public: 174 public:
178 WebRtcVoiceMediaChannel(WebRtcVoiceEngine* engine, 175 WebRtcVoiceMediaChannel(WebRtcVoiceEngine* engine,
179 const AudioOptions& options, 176 const AudioOptions& options,
180 webrtc::Call* call); 177 webrtc::Call* call);
181 ~WebRtcVoiceMediaChannel() override; 178 ~WebRtcVoiceMediaChannel() override;
182 179
183 int default_send_channel_id() const { return default_send_channel_id_; }
184 bool valid() const { return default_send_channel_id_ != -1; }
185 const AudioOptions& options() const { return options_; } 180 const AudioOptions& options() const { return options_; }
186 181
187 bool SetSendParameters(const AudioSendParameters& params) override; 182 bool SetSendParameters(const AudioSendParameters& params) override;
188 bool SetRecvParameters(const AudioRecvParameters& params) override; 183 bool SetRecvParameters(const AudioRecvParameters& params) override;
189 bool SetPlayout(bool playout) override; 184 bool SetPlayout(bool playout) override;
190 bool PausePlayout(); 185 bool PausePlayout();
191 bool ResumePlayout(); 186 bool ResumePlayout();
192 bool SetSend(SendFlags send) override; 187 bool SetSend(SendFlags send) override;
193 bool PauseSend(); 188 bool PauseSend();
194 bool ResumeSend(); 189 bool ResumeSend();
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
251 const std::vector<RtpHeaderExtension>& extensions); 246 const std::vector<RtpHeaderExtension>& extensions);
252 bool SetLocalRenderer(uint32_t ssrc, AudioRenderer* renderer); 247 bool SetLocalRenderer(uint32_t ssrc, AudioRenderer* renderer);
253 bool MuteStream(uint32_t ssrc, bool mute); 248 bool MuteStream(uint32_t ssrc, bool mute);
254 249
255 WebRtcVoiceEngine* engine() { return engine_; } 250 WebRtcVoiceEngine* engine() { return engine_; }
256 int GetLastEngineError() { return engine()->GetLastEngineError(); } 251 int GetLastEngineError() { return engine()->GetLastEngineError(); }
257 int GetOutputLevel(int channel); 252 int GetOutputLevel(int channel);
258 bool GetRedSendCodec(const AudioCodec& red_codec, 253 bool GetRedSendCodec(const AudioCodec& red_codec,
259 const std::vector<AudioCodec>& all_codecs, 254 const std::vector<AudioCodec>& all_codecs,
260 webrtc::CodecInst* send_codec); 255 webrtc::CodecInst* send_codec);
261 bool EnableRtcp(int channel);
262 bool SetPlayout(int channel, bool playout); 256 bool SetPlayout(int channel, bool playout);
263 static Error WebRtcErrorToChannelError(int err_code); 257 static Error WebRtcErrorToChannelError(int err_code);
264 258
265 class WebRtcVoiceChannelRenderer; 259 class WebRtcVoiceChannelRenderer;
266 // Map of ssrc to WebRtcVoiceChannelRenderer object. A new object of 260 // Map of ssrc to WebRtcVoiceChannelRenderer object. A new object of
267 // WebRtcVoiceChannelRenderer will be created for every new stream and 261 // WebRtcVoiceChannelRenderer will be created for every new stream and
268 // will be destroyed when the stream goes away. 262 // will be destroyed when the stream goes away.
269 typedef std::map<uint32_t, WebRtcVoiceChannelRenderer*> ChannelMap; 263 typedef std::map<uint32_t, WebRtcVoiceChannelRenderer*> ChannelMap;
270 typedef int (webrtc::VoERTP_RTCP::* ExtensionSetterFunction)(int, bool, 264 typedef int (webrtc::VoERTP_RTCP::* ExtensionSetterFunction)(int, bool,
271 unsigned char); 265 unsigned char);
272 266
273 void SetNack(int channel, bool nack_enabled); 267 void SetNack(int channel, bool nack_enabled);
274 void SetNack(const ChannelMap& channels, bool nack_enabled);
275 bool SetSendCodec(const webrtc::CodecInst& send_codec); 268 bool SetSendCodec(const webrtc::CodecInst& send_codec);
276 bool SetSendCodec(int channel, const webrtc::CodecInst& send_codec); 269 bool SetSendCodec(int channel, const webrtc::CodecInst& send_codec);
277 bool ChangePlayout(bool playout); 270 bool ChangePlayout(bool playout);
278 bool ChangeSend(SendFlags send); 271 bool ChangeSend(SendFlags send);
279 bool ChangeSend(int channel, SendFlags send); 272 bool ChangeSend(int channel, SendFlags send);
280 void ConfigureSendChannel(int channel);
281 bool ConfigureRecvChannel(int channel); 273 bool ConfigureRecvChannel(int channel);
274 int CreateVoEChannel();
282 bool DeleteChannel(int channel); 275 bool DeleteChannel(int channel);
283 bool IsDefaultChannel(int channel_id) const {
284 return channel_id == default_send_channel_id_;
285 }
286 bool IsDefaultRecvStream(uint32_t ssrc) { 276 bool IsDefaultRecvStream(uint32_t ssrc) {
287 return default_recv_ssrc_ == static_cast<int64_t>(ssrc); 277 return default_recv_ssrc_ == static_cast<int64_t>(ssrc);
288 } 278 }
289 bool SetSendCodecs(int channel, const std::vector<AudioCodec>& codecs); 279 bool SetSendCodecs(int channel, const std::vector<AudioCodec>& codecs);
290 bool SetSendBitrateInternal(int bps); 280 bool SetSendBitrateInternal(int bps);
291 281
292 bool SetHeaderExtension(ExtensionSetterFunction setter, int channel_id, 282 bool SetHeaderExtension(ExtensionSetterFunction setter, int channel_id,
293 const RtpHeaderExtension* extension); 283 const RtpHeaderExtension* extension);
294 void RecreateAudioReceiveStreams(); 284 void RecreateAudioReceiveStreams();
295 void AddAudioReceiveStream(uint32_t ssrc); 285 void AddAudioReceiveStream(uint32_t ssrc);
296 void RemoveAudioReceiveStream(uint32_t ssrc); 286 void RemoveAudioReceiveStream(uint32_t ssrc);
297 bool SetRecvCodecsInternal(const std::vector<AudioCodec>& new_codecs); 287 bool SetRecvCodecsInternal(const std::vector<AudioCodec>& new_codecs);
298 288
299 bool SetChannelRecvRtpHeaderExtensions( 289 bool SetChannelRecvRtpHeaderExtensions(
300 int channel_id, 290 int channel_id,
301 const std::vector<RtpHeaderExtension>& extensions); 291 const std::vector<RtpHeaderExtension>& extensions);
302 bool SetChannelSendRtpHeaderExtensions( 292 bool SetChannelSendRtpHeaderExtensions(
303 int channel_id, 293 int channel_id,
304 const std::vector<RtpHeaderExtension>& extensions); 294 const std::vector<RtpHeaderExtension>& extensions);
305 295
306 rtc::ThreadChecker thread_checker_; 296 rtc::ThreadChecker thread_checker_;
307 297
308 WebRtcVoiceEngine* const engine_; 298 WebRtcVoiceEngine* const engine_;
309 const int default_send_channel_id_;
310 std::vector<AudioCodec> recv_codecs_; 299 std::vector<AudioCodec> recv_codecs_;
311 std::vector<AudioCodec> send_codecs_; 300 std::vector<AudioCodec> send_codecs_;
312 rtc::scoped_ptr<webrtc::CodecInst> send_codec_; 301 rtc::scoped_ptr<webrtc::CodecInst> send_codec_;
313 bool send_bitrate_setting_; 302 bool send_bitrate_setting_;
314 int send_bitrate_bps_; 303 int send_bitrate_bps_;
315 AudioOptions options_; 304 AudioOptions options_;
316 bool dtmf_allowed_; 305 bool dtmf_allowed_;
317 bool desired_playout_; 306 bool desired_playout_;
318 bool nack_enabled_; 307 bool nack_enabled_;
319 bool playout_; 308 bool playout_;
320 bool typing_noise_detected_; 309 bool typing_noise_detected_;
321 SendFlags desired_send_; 310 SendFlags desired_send_;
322 SendFlags send_; 311 SendFlags send_;
323 webrtc::Call* const call_; 312 webrtc::Call* const call_;
324 313
325 // SSRC of unsignalled receive stream, or -1 if there isn't one. 314 // SSRC of unsignalled receive stream, or -1 if there isn't one.
326 int64_t default_recv_ssrc_ = -1; 315 int64_t default_recv_ssrc_ = -1;
327 // Volume for unsignalled stream, which may be set before the stream exists. 316 // Volume for unsignalled stream, which may be set before the stream exists.
328 double default_recv_volume_ = 1.0; 317 double default_recv_volume_ = 1.0;
329 318
319 uint32_t first_send_ssrc_ = -1;
pthatcher1 2015/10/15 05:15:04 Can you comment more on what this means and when i
the sun 2015/10/15 12:07:12 Done.
320
330 // send_channels_ contains the channels which are being used for sending. 321 // send_channels_ contains the channels which are being used for sending.
331 // When the default channel (default_send_channel_id) is used for sending, it 322 // When the default channel (default_send_channel_id) is used for sending, it
332 // is contained in send_channels_, otherwise not. 323 // is contained in send_channels_, otherwise not.
333 ChannelMap send_channels_; 324 ChannelMap send_channels_;
334 std::vector<RtpHeaderExtension> send_extensions_; 325 std::vector<RtpHeaderExtension> send_extensions_;
335 ChannelMap receive_channels_; 326 ChannelMap receive_channels_;
336 std::map<uint32_t, webrtc::AudioReceiveStream*> receive_streams_; 327 std::map<uint32_t, webrtc::AudioReceiveStream*> receive_streams_;
337 std::map<uint32_t, StreamParams> receive_stream_params_; 328 std::map<uint32_t, StreamParams> receive_stream_params_;
338 // receive_channels_ can be read from WebRtc callback thread. Access from 329 // receive_channels_ can be read from WebRtc callback thread. Access from
339 // the WebRtc thread must be synchronized with edits on the worker thread. 330 // the WebRtc thread must be synchronized with edits on the worker thread.
340 // Reads on the worker thread are ok. 331 // Reads on the worker thread are ok.
341 std::vector<RtpHeaderExtension> receive_extensions_; 332 std::vector<RtpHeaderExtension> receive_extensions_;
342 std::vector<webrtc::RtpExtension> recv_rtp_extensions_; 333 std::vector<webrtc::RtpExtension> recv_rtp_extensions_;
343 }; 334 };
344 335
345 } // namespace cricket 336 } // namespace cricket
346 337
347 #endif // TALK_MEDIA_WEBRTCVOICEENGINE_H_ 338 #endif // TALK_MEDIA_WEBRTCVOICEENGINE_H_
OLDNEW
« no previous file with comments | « no previous file | talk/media/webrtc/webrtcvoiceengine.cc » ('j') | talk/media/webrtc/webrtcvoiceengine.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698