1c7a8b08a7cd8d8f37d7f5fb9930d0cdc74baba35solenberg/* 2c7a8b08a7cd8d8f37d7f5fb9930d0cdc74baba35solenberg * Copyright (c) 2015 The WebRTC project authors. All Rights Reserved. 3c7a8b08a7cd8d8f37d7f5fb9930d0cdc74baba35solenberg * 4c7a8b08a7cd8d8f37d7f5fb9930d0cdc74baba35solenberg * Use of this source code is governed by a BSD-style license 5c7a8b08a7cd8d8f37d7f5fb9930d0cdc74baba35solenberg * that can be found in the LICENSE file in the root of the source 6c7a8b08a7cd8d8f37d7f5fb9930d0cdc74baba35solenberg * tree. An additional intellectual property rights grant can be found 7c7a8b08a7cd8d8f37d7f5fb9930d0cdc74baba35solenberg * in the file PATENTS. All contributing project authors may 8c7a8b08a7cd8d8f37d7f5fb9930d0cdc74baba35solenberg * be found in the AUTHORS file in the root of the source tree. 9c7a8b08a7cd8d8f37d7f5fb9930d0cdc74baba35solenberg */ 10c7a8b08a7cd8d8f37d7f5fb9930d0cdc74baba35solenberg 11c7a8b08a7cd8d8f37d7f5fb9930d0cdc74baba35solenberg#ifndef WEBRTC_AUDIO_AUDIO_SEND_STREAM_H_ 12c7a8b08a7cd8d8f37d7f5fb9930d0cdc74baba35solenberg#define WEBRTC_AUDIO_AUDIO_SEND_STREAM_H_ 13c7a8b08a7cd8d8f37d7f5fb9930d0cdc74baba35solenberg 14c7a8b08a7cd8d8f37d7f5fb9930d0cdc74baba35solenberg#include "webrtc/audio_send_stream.h" 15566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenberg#include "webrtc/audio_state.h" 1685a0496b8c4ac01da7c716ea7950093659864c8esolenberg#include "webrtc/base/thread_checker.h" 1713725089ef91f932b37b2447c3f05d9cd9f89984solenberg#include "webrtc/base/scoped_ptr.h" 18c7a8b08a7cd8d8f37d7f5fb9930d0cdc74baba35solenberg 19c7a8b08a7cd8d8f37d7f5fb9930d0cdc74baba35solenbergnamespace webrtc { 20b86d4e4a8dec1eb1b801244a2a97cda66f561d8eStefan Holmerclass CongestionController; 213a94154035fa16e4efd91125311f076b547c38b9solenbergclass VoiceEngine; 223a94154035fa16e4efd91125311f076b547c38b9solenberg 2313725089ef91f932b37b2447c3f05d9cd9f89984solenbergnamespace voe { 2413725089ef91f932b37b2447c3f05d9cd9f89984solenbergclass ChannelProxy; 2513725089ef91f932b37b2447c3f05d9cd9f89984solenberg} // namespace voe 26c7a8b08a7cd8d8f37d7f5fb9930d0cdc74baba35solenberg 2713725089ef91f932b37b2447c3f05d9cd9f89984solenbergnamespace internal { 2885a0496b8c4ac01da7c716ea7950093659864c8esolenbergclass AudioSendStream final : public webrtc::AudioSendStream { 29c7a8b08a7cd8d8f37d7f5fb9930d0cdc74baba35solenberg public: 3085a0496b8c4ac01da7c716ea7950093659864c8esolenberg AudioSendStream(const webrtc::AudioSendStream::Config& config, 31b86d4e4a8dec1eb1b801244a2a97cda66f561d8eStefan Holmer const rtc::scoped_refptr<webrtc::AudioState>& audio_state, 32b86d4e4a8dec1eb1b801244a2a97cda66f561d8eStefan Holmer CongestionController* congestion_controller); 33c7a8b08a7cd8d8f37d7f5fb9930d0cdc74baba35solenberg ~AudioSendStream() override; 34c7a8b08a7cd8d8f37d7f5fb9930d0cdc74baba35solenberg 35c7a8b08a7cd8d8f37d7f5fb9930d0cdc74baba35solenberg // webrtc::SendStream implementation. 36c7a8b08a7cd8d8f37d7f5fb9930d0cdc74baba35solenberg void Start() override; 37c7a8b08a7cd8d8f37d7f5fb9930d0cdc74baba35solenberg void Stop() override; 38c7a8b08a7cd8d8f37d7f5fb9930d0cdc74baba35solenberg void SignalNetworkState(NetworkState state) override; 39c7a8b08a7cd8d8f37d7f5fb9930d0cdc74baba35solenberg bool DeliverRtcp(const uint8_t* packet, size_t length) override; 40c7a8b08a7cd8d8f37d7f5fb9930d0cdc74baba35solenberg 41c7a8b08a7cd8d8f37d7f5fb9930d0cdc74baba35solenberg // webrtc::AudioSendStream implementation. 42b572768efbc1e52b97a5ad98932c667956aba4b8Fredrik Solenberg bool SendTelephoneEvent(int payload_type, uint8_t event, 43b572768efbc1e52b97a5ad98932c667956aba4b8Fredrik Solenberg uint32_t duration_ms) override; 44c7a8b08a7cd8d8f37d7f5fb9930d0cdc74baba35solenberg webrtc::AudioSendStream::Stats GetStats() const override; 45c7a8b08a7cd8d8f37d7f5fb9930d0cdc74baba35solenberg 4685a0496b8c4ac01da7c716ea7950093659864c8esolenberg const webrtc::AudioSendStream::Config& config() const; 47c7a8b08a7cd8d8f37d7f5fb9930d0cdc74baba35solenberg 48c7a8b08a7cd8d8f37d7f5fb9930d0cdc74baba35solenberg private: 493a94154035fa16e4efd91125311f076b547c38b9solenberg VoiceEngine* voice_engine() const; 503a94154035fa16e4efd91125311f076b547c38b9solenberg 5185a0496b8c4ac01da7c716ea7950093659864c8esolenberg rtc::ThreadChecker thread_checker_; 52c7a8b08a7cd8d8f37d7f5fb9930d0cdc74baba35solenberg const webrtc::AudioSendStream::Config config_; 53566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenberg rtc::scoped_refptr<webrtc::AudioState> audio_state_; 5413725089ef91f932b37b2447c3f05d9cd9f89984solenberg rtc::scoped_ptr<voe::ChannelProxy> channel_proxy_; 5585a0496b8c4ac01da7c716ea7950093659864c8esolenberg 5685a0496b8c4ac01da7c716ea7950093659864c8esolenberg RTC_DISALLOW_IMPLICIT_CONSTRUCTORS(AudioSendStream); 57c7a8b08a7cd8d8f37d7f5fb9930d0cdc74baba35solenberg}; 58c7a8b08a7cd8d8f37d7f5fb9930d0cdc74baba35solenberg} // namespace internal 59c7a8b08a7cd8d8f37d7f5fb9930d0cdc74baba35solenberg} // namespace webrtc 60c7a8b08a7cd8d8f37d7f5fb9930d0cdc74baba35solenberg 61c7a8b08a7cd8d8f37d7f5fb9930d0cdc74baba35solenberg#endif // WEBRTC_AUDIO_AUDIO_SEND_STREAM_H_ 62