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 262 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
273 Settable<bool> extended_filter_aec_; | 273 Settable<bool> extended_filter_aec_; |
274 Settable<bool> delay_agnostic_aec_; | 274 Settable<bool> delay_agnostic_aec_; |
275 Settable<bool> experimental_ns_; | 275 Settable<bool> experimental_ns_; |
276 }; | 276 }; |
277 | 277 |
278 // WebRtcVoiceMediaChannel is an implementation of VoiceMediaChannel that uses | 278 // WebRtcVoiceMediaChannel is an implementation of VoiceMediaChannel that uses |
279 // WebRtc Voice Engine. | 279 // WebRtc Voice Engine. |
280 class WebRtcVoiceMediaChannel : public VoiceMediaChannel, | 280 class WebRtcVoiceMediaChannel : public VoiceMediaChannel, |
281 public webrtc::Transport { | 281 public webrtc::Transport { |
282 public: | 282 public: |
283 explicit WebRtcVoiceMediaChannel(WebRtcVoiceEngine *engine); | 283 WebRtcVoiceMediaChannel(WebRtcVoiceEngine *engine, |
| 284 const AudioOptions& options); |
284 ~WebRtcVoiceMediaChannel() override; | 285 ~WebRtcVoiceMediaChannel() override; |
285 | 286 |
286 int voe_channel() const { return voe_channel_; } | 287 int voe_channel() const { return voe_channel_; } |
287 bool valid() const { return voe_channel_ != -1; } | 288 bool valid() const { return voe_channel_ != -1; } |
288 const AudioOptions& options() const { return options_; } | 289 const AudioOptions& options() const { return options_; } |
289 | 290 |
290 bool SetSendParameters(const AudioSendParameters& params) override; | 291 bool SetSendParameters(const AudioSendParameters& params) override; |
291 bool SetRecvParameters(const AudioRecvParameters& params) override; | 292 bool SetRecvParameters(const AudioRecvParameters& params) override; |
292 bool SetOptions(const AudioOptions& options) override; | |
293 bool SetRecvCodecs(const std::vector<AudioCodec>& codecs) override; | |
294 bool SetSendCodecs(const std::vector<AudioCodec>& codecs) override; | |
295 bool SetRecvRtpHeaderExtensions( | |
296 const std::vector<RtpHeaderExtension>& extensions) override; | |
297 bool SetSendRtpHeaderExtensions( | |
298 const std::vector<RtpHeaderExtension>& extensions) override; | |
299 bool SetPlayout(bool playout) override; | 293 bool SetPlayout(bool playout) override; |
300 bool PausePlayout(); | 294 bool PausePlayout(); |
301 bool ResumePlayout(); | 295 bool ResumePlayout(); |
302 bool SetSend(SendFlags send) override; | 296 bool SetSend(SendFlags send) override; |
303 bool PauseSend(); | 297 bool PauseSend(); |
304 bool ResumeSend(); | 298 bool ResumeSend(); |
305 bool SetAudioSend(uint32 ssrc, bool mute, const AudioOptions* options, | 299 bool SetAudioSend(uint32 ssrc, bool mute, const AudioOptions* options, |
306 AudioRenderer* renderer) override; | 300 AudioRenderer* renderer) override; |
307 bool AddSendStream(const StreamParams& sp) override; | 301 bool AddSendStream(const StreamParams& sp) override; |
308 bool RemoveSendStream(uint32 ssrc) override; | 302 bool RemoveSendStream(uint32 ssrc) override; |
(...skipping 13 matching lines...) Expand all Loading... |
322 bool SetRingbackTone(const char* buf, int len) override; | 316 bool SetRingbackTone(const char* buf, int len) override; |
323 bool PlayRingbackTone(uint32 ssrc, bool play, bool loop) override; | 317 bool PlayRingbackTone(uint32 ssrc, bool play, bool loop) override; |
324 bool CanInsertDtmf() override; | 318 bool CanInsertDtmf() override; |
325 bool InsertDtmf(uint32 ssrc, int event, int duration, int flags) override; | 319 bool InsertDtmf(uint32 ssrc, int event, int duration, int flags) override; |
326 | 320 |
327 void OnPacketReceived(rtc::Buffer* packet, | 321 void OnPacketReceived(rtc::Buffer* packet, |
328 const rtc::PacketTime& packet_time) override; | 322 const rtc::PacketTime& packet_time) override; |
329 void OnRtcpReceived(rtc::Buffer* packet, | 323 void OnRtcpReceived(rtc::Buffer* packet, |
330 const rtc::PacketTime& packet_time) override; | 324 const rtc::PacketTime& packet_time) override; |
331 void OnReadyToSend(bool ready) override {} | 325 void OnReadyToSend(bool ready) override {} |
332 bool SetMaxSendBandwidth(int bps) override; | |
333 bool GetStats(VoiceMediaInfo* info) override; | 326 bool GetStats(VoiceMediaInfo* info) override; |
334 // Gets last reported error from WebRtc voice engine. This should be only | 327 // Gets last reported error from WebRtc voice engine. This should be only |
335 // called in response a failure. | 328 // called in response a failure. |
336 void GetLastMediaError(uint32* ssrc, | 329 void GetLastMediaError(uint32* ssrc, |
337 VoiceMediaChannel::Error* error) override; | 330 VoiceMediaChannel::Error* error) override; |
338 | 331 |
339 // implements Transport interface | 332 // implements Transport interface |
340 int SendPacket(int channel, const void* data, size_t len) override { | 333 int SendPacket(int channel, const void* data, size_t len) override { |
341 rtc::Buffer packet(reinterpret_cast<const uint8_t*>(data), len, | 334 rtc::Buffer packet(reinterpret_cast<const uint8_t*>(data), len, |
342 kMaxRtpPacketLen); | 335 kMaxRtpPacketLen); |
343 return VoiceMediaChannel::SendPacket(&packet) ? static_cast<int>(len) : -1; | 336 return VoiceMediaChannel::SendPacket(&packet) ? static_cast<int>(len) : -1; |
344 } | 337 } |
345 | 338 |
346 int SendRTCPPacket(int channel, const void* data, size_t len) override { | 339 int SendRTCPPacket(int channel, const void* data, size_t len) override { |
347 rtc::Buffer packet(reinterpret_cast<const uint8_t*>(data), len, | 340 rtc::Buffer packet(reinterpret_cast<const uint8_t*>(data), len, |
348 kMaxRtpPacketLen); | 341 kMaxRtpPacketLen); |
349 return VoiceMediaChannel::SendRtcp(&packet) ? static_cast<int>(len) : -1; | 342 return VoiceMediaChannel::SendRtcp(&packet) ? static_cast<int>(len) : -1; |
350 } | 343 } |
351 | 344 |
352 bool FindSsrc(int channel_num, uint32* ssrc); | 345 bool FindSsrc(int channel_num, uint32* ssrc); |
353 void OnError(uint32 ssrc, int error); | 346 void OnError(uint32 ssrc, int error); |
354 | 347 |
355 bool sending() const { return send_ != SEND_NOTHING; } | 348 bool sending() const { return send_ != SEND_NOTHING; } |
356 int GetReceiveChannelNum(uint32 ssrc) const; | 349 int GetReceiveChannelNum(uint32 ssrc) const; |
357 int GetSendChannelNum(uint32 ssrc) const; | 350 int GetSendChannelNum(uint32 ssrc) const; |
358 | 351 |
359 void SetCall(webrtc::Call* call); | 352 void SetCall(webrtc::Call* call); |
360 | 353 |
361 private: | 354 private: |
| 355 bool SetSendCodecs(const std::vector<AudioCodec>& codecs); |
| 356 bool SetSendRtpHeaderExtensions( |
| 357 const std::vector<RtpHeaderExtension>& extensions); |
| 358 bool SetOptions(const AudioOptions& options); |
| 359 bool SetMaxSendBandwidth(int bps); |
| 360 bool SetRecvCodecs(const std::vector<AudioCodec>& codecs); |
| 361 bool SetRecvRtpHeaderExtensions( |
| 362 const std::vector<RtpHeaderExtension>& extensions); |
362 bool SetLocalRenderer(uint32 ssrc, AudioRenderer* renderer); | 363 bool SetLocalRenderer(uint32 ssrc, AudioRenderer* renderer); |
363 bool MuteStream(uint32 ssrc, bool mute); | 364 bool MuteStream(uint32 ssrc, bool mute); |
| 365 |
364 WebRtcVoiceEngine* engine() { return engine_; } | 366 WebRtcVoiceEngine* engine() { return engine_; } |
365 int GetLastEngineError() { return engine()->GetLastEngineError(); } | 367 int GetLastEngineError() { return engine()->GetLastEngineError(); } |
366 int GetOutputLevel(int channel); | 368 int GetOutputLevel(int channel); |
367 bool GetRedSendCodec(const AudioCodec& red_codec, | 369 bool GetRedSendCodec(const AudioCodec& red_codec, |
368 const std::vector<AudioCodec>& all_codecs, | 370 const std::vector<AudioCodec>& all_codecs, |
369 webrtc::CodecInst* send_codec); | 371 webrtc::CodecInst* send_codec); |
370 bool EnableRtcp(int channel); | 372 bool EnableRtcp(int channel); |
371 bool ResetRecvCodecs(int channel); | 373 bool ResetRecvCodecs(int channel); |
372 bool SetPlayout(int channel, bool playout); | 374 bool SetPlayout(int channel, bool playout); |
373 static uint32 ParseSsrc(const void* data, size_t len, bool rtcp); | 375 static uint32 ParseSsrc(const void* data, size_t len, bool rtcp); |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
453 std::vector<webrtc::RtpExtension> recv_rtp_extensions_; | 455 std::vector<webrtc::RtpExtension> recv_rtp_extensions_; |
454 | 456 |
455 // Do not lock this on the VoE media processor thread; potential for deadlock | 457 // Do not lock this on the VoE media processor thread; potential for deadlock |
456 // exists. | 458 // exists. |
457 mutable rtc::CriticalSection receive_channels_cs_; | 459 mutable rtc::CriticalSection receive_channels_cs_; |
458 }; | 460 }; |
459 | 461 |
460 } // namespace cricket | 462 } // namespace cricket |
461 | 463 |
462 #endif // TALK_MEDIA_WEBRTCVOICEENGINE_H_ | 464 #endif // TALK_MEDIA_WEBRTCVOICEENGINE_H_ |
OLD | NEW |