Twitch SDK (Internal)
Classes | Public Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
ttv::broadcast::AudioStreamer Class Reference

#include <audiostreamer.h>

Classes

struct  LayerProperties
 

Public Member Functions

 AudioStreamer ()
 
virtual ~AudioStreamer ()
 
TTV_ErrorCode SetEncoder (const std::shared_ptr< IAudioEncoder > &encoder)
 
TTV_ErrorCode Initialize (const AudioParams &audioParams)
 
TTV_ErrorCode StartCapture ()
 
void Stop ()
 
void SetInitialTime (uint64_t initialTime)
 
float GetVolume (AudioLayerId layer) const
 
void SetVolume (AudioLayerId layer, float volume)
 
void SetCapturer (AudioLayerId layerId, const std::shared_ptr< IAudioCapture > &capturer)
 
void SetCapturerEnabled (AudioLayerId layer, bool enabled)
 
void GetCapturers (std::vector< std::shared_ptr< IAudioCapture >> &result) const
 
std::shared_ptr< IAudioCaptureGetCapturer (AudioLayerId layer) const
 
void GetEnabledCapturers (std::vector< std::shared_ptr< IAudioCapture >> &result) const
 
bool HasEnabledCapturers () const
 

Private Types

typedef std::queue< std::pair< uint64_t, float > > volumeChanges_t
 

Private Member Functions

void StartCapturers (const std::shared_ptr< IAudioMixer > &mixer)
 
TTV_ErrorCode StopCapturers ()
 
void StopCapture ()
 
TTV_ErrorCode WritePcmAudioFrames (const std::shared_ptr< CaptureContext > &context, uint64_t latestTimeToProcess)
 
TTV_ErrorCode WritePassThroughAudioFrames (const std::shared_ptr< CaptureContext > &context, uint64_t latestTimeToProcess)
 
TTV_ErrorCode SubmitPcmSamplesToMixer (AudioLayerId audioLayerId, const int16_t *samples, size_t numSamples, uint64_t sampleTime)
 
void ProcessCapturers ()
 

Private Attributes

uint32_t mNumPcmSamplesPerChannel
 
uint64_t mInitialTime
 
std::vector< int16_t > mMixedSamplesBuffer
 
std::shared_ptr< IThreadSyncmInitializingThreadSync
 
volatile TTV_ErrorCode mInitializeResult
 
std::map< AudioLayerId, LayerPropertiesmLayers
 
std::shared_ptr< IAudioEncodermAudioEncoder
 
std::shared_ptr< PcmAudioMixermAudioMixer
 
std::shared_ptr< IThreadmDeviceProcessingThread
 
AudioParams mAudioParams
 
std::atomic_bool mDoProcessing
 

Member Typedef Documentation

◆ volumeChanges_t

typedef std::queue<std::pair<uint64_t, float> > ttv::broadcast::AudioStreamer::volumeChanges_t
private

Constructor & Destructor Documentation

◆ AudioStreamer()

ttv::broadcast::AudioStreamer::AudioStreamer ( )

◆ ~AudioStreamer()

virtual ttv::broadcast::AudioStreamer::~AudioStreamer ( )
virtual

Member Function Documentation

◆ GetCapturer()

std::shared_ptr<IAudioCapture> ttv::broadcast::AudioStreamer::GetCapturer ( AudioLayerId  layer) const

◆ GetCapturers()

void ttv::broadcast::AudioStreamer::GetCapturers ( std::vector< std::shared_ptr< IAudioCapture >> &  result) const

◆ GetEnabledCapturers()

void ttv::broadcast::AudioStreamer::GetEnabledCapturers ( std::vector< std::shared_ptr< IAudioCapture >> &  result) const

◆ GetVolume()

float ttv::broadcast::AudioStreamer::GetVolume ( AudioLayerId  layer) const

◆ HasEnabledCapturers()

bool ttv::broadcast::AudioStreamer::HasEnabledCapturers ( ) const

◆ Initialize()

TTV_ErrorCode ttv::broadcast::AudioStreamer::Initialize ( const AudioParams audioParams)

◆ ProcessCapturers()

void ttv::broadcast::AudioStreamer::ProcessCapturers ( )
private

◆ SetCapturer()

void ttv::broadcast::AudioStreamer::SetCapturer ( AudioLayerId  layerId,
const std::shared_ptr< IAudioCapture > &  capturer 
)

◆ SetCapturerEnabled()

void ttv::broadcast::AudioStreamer::SetCapturerEnabled ( AudioLayerId  layer,
bool  enabled 
)

◆ SetEncoder()

TTV_ErrorCode ttv::broadcast::AudioStreamer::SetEncoder ( const std::shared_ptr< IAudioEncoder > &  encoder)

◆ SetInitialTime()

void ttv::broadcast::AudioStreamer::SetInitialTime ( uint64_t  initialTime)

◆ SetVolume()

void ttv::broadcast::AudioStreamer::SetVolume ( AudioLayerId  layer,
float  volume 
)

◆ StartCapture()

TTV_ErrorCode ttv::broadcast::AudioStreamer::StartCapture ( )

◆ StartCapturers()

void ttv::broadcast::AudioStreamer::StartCapturers ( const std::shared_ptr< IAudioMixer > &  mixer)
private

◆ Stop()

void ttv::broadcast::AudioStreamer::Stop ( )

◆ StopCapture()

void ttv::broadcast::AudioStreamer::StopCapture ( )
private

◆ StopCapturers()

TTV_ErrorCode ttv::broadcast::AudioStreamer::StopCapturers ( )
private

◆ SubmitPcmSamplesToMixer()

TTV_ErrorCode ttv::broadcast::AudioStreamer::SubmitPcmSamplesToMixer ( AudioLayerId  audioLayerId,
const int16_t *  samples,
size_t  numSamples,
uint64_t  sampleTime 
)
private

◆ WritePassThroughAudioFrames()

TTV_ErrorCode ttv::broadcast::AudioStreamer::WritePassThroughAudioFrames ( const std::shared_ptr< CaptureContext > &  context,
uint64_t  latestTimeToProcess 
)
private

◆ WritePcmAudioFrames()

TTV_ErrorCode ttv::broadcast::AudioStreamer::WritePcmAudioFrames ( const std::shared_ptr< CaptureContext > &  context,
uint64_t  latestTimeToProcess 
)
private

Member Data Documentation

◆ mAudioEncoder

std::shared_ptr<IAudioEncoder> ttv::broadcast::AudioStreamer::mAudioEncoder
private

◆ mAudioMixer

std::shared_ptr<PcmAudioMixer> ttv::broadcast::AudioStreamer::mAudioMixer
private

◆ mAudioParams

AudioParams ttv::broadcast::AudioStreamer::mAudioParams
private

◆ mDeviceProcessingThread

std::shared_ptr<IThread> ttv::broadcast::AudioStreamer::mDeviceProcessingThread
private

◆ mDoProcessing

std::atomic_bool ttv::broadcast::AudioStreamer::mDoProcessing
private

◆ mInitializeResult

volatile TTV_ErrorCode ttv::broadcast::AudioStreamer::mInitializeResult
private

◆ mInitializingThreadSync

std::shared_ptr<IThreadSync> ttv::broadcast::AudioStreamer::mInitializingThreadSync
private

◆ mInitialTime

uint64_t ttv::broadcast::AudioStreamer::mInitialTime
private

◆ mLayers

std::map<AudioLayerId, LayerProperties> ttv::broadcast::AudioStreamer::mLayers
private

◆ mMixedSamplesBuffer

std::vector<int16_t> ttv::broadcast::AudioStreamer::mMixedSamplesBuffer
private

◆ mNumPcmSamplesPerChannel

uint32_t ttv::broadcast::AudioStreamer::mNumPcmSamplesPerChannel
private

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