Android-cuttlefish cvd tool
Public Member Functions | Private Member Functions | Private Attributes | List of all members
cuttlefish::AudioMixer Class Reference

#include <audio_mixer.h>

Public Member Functions

 AudioMixer (std::shared_ptr< webrtc_streaming::AudioSink > audio_sink, const AudioMixerSettings &settings)
 
 ~AudioMixer ()
 
void Start ()
 
void Stop ()
 
void OnPlayback (uint32_t stream_id, uint32_t stream_sample_rate, uint8_t stream_channels_count, uint8_t stream_bits_per_channel, float volume, const uint8_t *buffer, size_t size)
 
void OnStreamStopped (uint32_t stream_id)
 

Private Member Functions

void MixerLoop ()
 

Private Attributes

const uint8_t channels_count_
 
const uint32_t sample_rate_
 
const size_t sample_size_bytes_ = sizeof(int16_t)
 
const size_t frame_size_bytes_ = sample_size_bytes_ * channels_count_
 
const size_t chunk_frames_count_ = sample_rate_ / 100
 
std::shared_ptr< webrtc_streaming::AudioSinkaudio_sink_
 
std::mutex mutex_
 
std::vector< uint8_t > mixed_buffer_
 
size_t last_active_frame_ = 0
 
std::unordered_map< uint32_t, size_t > next_frame_
 
std::vector< std::vector< float > > channles_map
 
std::thread mixer_thread_
 
std::atomic< bool > stop_mixer_ {false}
 
std::condition_variable mixer_cv_
 

Constructor & Destructor Documentation

◆ AudioMixer()

cuttlefish::AudioMixer::AudioMixer ( std::shared_ptr< webrtc_streaming::AudioSink audio_sink,
const AudioMixerSettings settings 
)

◆ ~AudioMixer()

cuttlefish::AudioMixer::~AudioMixer ( )

Member Function Documentation

◆ MixerLoop()

void cuttlefish::AudioMixer::MixerLoop ( )
private

◆ OnPlayback()

void cuttlefish::AudioMixer::OnPlayback ( uint32_t  stream_id,
uint32_t  stream_sample_rate,
uint8_t  stream_channels_count,
uint8_t  stream_bits_per_channel,
float  volume,
const uint8_t *  buffer,
size_t  size 
)

◆ OnStreamStopped()

void cuttlefish::AudioMixer::OnStreamStopped ( uint32_t  stream_id)

◆ Start()

void cuttlefish::AudioMixer::Start ( )

◆ Stop()

void cuttlefish::AudioMixer::Stop ( )

Member Data Documentation

◆ audio_sink_

std::shared_ptr<webrtc_streaming::AudioSink> cuttlefish::AudioMixer::audio_sink_
private

◆ channels_count_

const uint8_t cuttlefish::AudioMixer::channels_count_
private

◆ channles_map

std::vector<std::vector<float> > cuttlefish::AudioMixer::channles_map
private
Initial value:
= {{
{1, 0, 0, 0, 0, 0},
{0, 1, 0, 0, 0, 0},
{0, 0, 1, 0, 0, 0},
{0, 0, 0, 1, 0, 0},
{0, 0, 0, 0, 1, 0},
{0, 0, 0, 0, 0, 1},
}}

◆ chunk_frames_count_

const size_t cuttlefish::AudioMixer::chunk_frames_count_ = sample_rate_ / 100
private

◆ frame_size_bytes_

const size_t cuttlefish::AudioMixer::frame_size_bytes_ = sample_size_bytes_ * channels_count_
private

◆ last_active_frame_

size_t cuttlefish::AudioMixer::last_active_frame_ = 0
private

◆ mixed_buffer_

std::vector<uint8_t> cuttlefish::AudioMixer::mixed_buffer_
private

◆ mixer_cv_

std::condition_variable cuttlefish::AudioMixer::mixer_cv_
private

◆ mixer_thread_

std::thread cuttlefish::AudioMixer::mixer_thread_
private

◆ mutex_

std::mutex cuttlefish::AudioMixer::mutex_
private

◆ next_frame_

std::unordered_map<uint32_t, size_t> cuttlefish::AudioMixer::next_frame_
private

◆ sample_rate_

const uint32_t cuttlefish::AudioMixer::sample_rate_
private

◆ sample_size_bytes_

const size_t cuttlefish::AudioMixer::sample_size_bytes_ = sizeof(int16_t)
private

◆ stop_mixer_

std::atomic<bool> cuttlefish::AudioMixer::stop_mixer_ {false}
private

The documentation for this class was generated from the following files: