Kodi Documentation 22.0
Kodi is an open source media player and entertainment hub.
Loading...
Searching...
No Matches
ActiveAE::CActiveAESink Class Reference

#include <ActiveAESink.h>

Inheritance diagram for ActiveAE::CActiveAESink:
CThread

Public Member Functions

 CActiveAESink (CEvent *inMsgEvent)
 
 ~CActiveAESink ()
 
void EnumerateSinkList (bool force, std::string driver)
 
void EnumerateOutputDevices (AEDeviceList &devices, bool passthrough)
 
std::string ValidateOuputDevice (const std::string &device, bool passthrough) const
 
void Start ()
 
void Dispose ()
 
AEDeviceType GetDeviceType (const std::string &device)
 
bool HasPassthroughDevice ()
 
bool SupportsFormat (const std::string &device, AEAudioFormat &format)
 
bool DeviceExist (std::string driver, const std::string &device)
 
bool NeedIecPack () const
 

Public Attributes

CSinkControlProtocol m_controlPort
 
CSinkDataProtocol m_dataPort
 

Protected Types

enum  { CHECK_SWAP , NEED_CONVERT , NEED_BYTESWAP , SKIP_SWAP }
 

Protected Member Functions

void Process () override
 
void StateMachine (int signal, Protocol *port, Message *msg)
 
void PrintSinks (std::string &driver)
 
void GetDeviceFriendlyName (const std::string &device)
 
void OpenSink ()
 
void ReturnBuffers ()
 
void SetSilenceTimer ()
 
bool NeedIECPacking ()
 
unsigned int OutputSamples (CSampleBuffer *samples)
 
void SwapInit (CSampleBuffer *samples)
 
void GenerateNoise ()
 

Protected Attributes

CEvent m_outMsgEvent
 
CEventm_inMsgEvent
 
int m_state
 
bool m_bStateMachineSelfTrigger
 
std::chrono::milliseconds m_extTimeout
 
std::chrono::minutes m_silenceTimeOut {std::chrono::minutes::zero()}
 
bool m_extError
 
std::chrono::milliseconds m_extSilenceTimeout
 
bool m_extAppFocused
 
bool m_extStreaming
 
XbmcThreads::EndTime m_extSilenceTimer
 
CSampleBuffer m_sampleOfSilence
 
enum ActiveAE::CActiveAESink:: { ... }  m_swapState
 
std::vector< uint8_tm_mergeBuffer
 
std::string m_deviceFriendlyName
 
std::string m_device
 
std::vector< AE::AESinkInfom_sinkInfoList
 
std::unique_ptr< IAESinkm_sink
 
AEAudioFormat m_sinkFormat
 
AEAudioFormat m_requestedFormat
 
CEngineStatsm_stats
 
float m_volume
 
int m_sinkLatency
 
std::unique_ptr< CAEBitstreamPackerm_packer
 
bool m_needIecPack {false}
 
bool m_streamNoise
 

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
protected
Enumerator
CHECK_SWAP 
NEED_CONVERT 
NEED_BYTESWAP 
SKIP_SWAP 

Constructor & Destructor Documentation

◆ CActiveAESink()

CActiveAESink::CActiveAESink ( CEvent * inMsgEvent)
explicit

◆ ~CActiveAESink()

CActiveAESink::~CActiveAESink ( )
default

Member Function Documentation

◆ DeviceExist()

bool CActiveAESink::DeviceExist ( std::string driver,
const std::string & device )

◆ Dispose()

void CActiveAESink::Dispose ( )

◆ EnumerateOutputDevices()

void CActiveAESink::EnumerateOutputDevices ( AEDeviceList & devices,
bool passthrough )

◆ EnumerateSinkList()

void CActiveAESink::EnumerateSinkList ( bool force,
std::string driver )

◆ GenerateNoise()

void CActiveAESink::GenerateNoise ( )
protected

◆ GetDeviceFriendlyName()

void CActiveAESink::GetDeviceFriendlyName ( const std::string & device)
protected

◆ GetDeviceType()

AEDeviceType CActiveAESink::GetDeviceType ( const std::string & device)

◆ HasPassthroughDevice()

bool CActiveAESink::HasPassthroughDevice ( )

◆ NeedIecPack()

bool ActiveAE::CActiveAESink::NeedIecPack ( ) const
inline

◆ NeedIECPacking()

bool CActiveAESink::NeedIECPacking ( )
protected

◆ OpenSink()

void CActiveAESink::OpenSink ( )
protected

◆ OutputSamples()

unsigned int CActiveAESink::OutputSamples ( CSampleBuffer * samples)
protected

◆ PrintSinks()

void CActiveAESink::PrintSinks ( std::string & driver)
protected

◆ Process()

void CActiveAESink::Process ( void )
overrideprotectedvirtual

Reimplemented from CThread.

◆ ReturnBuffers()

void CActiveAESink::ReturnBuffers ( )
protected

◆ SetSilenceTimer()

void CActiveAESink::SetSilenceTimer ( )
protected

◆ Start()

void CActiveAESink::Start ( )

◆ StateMachine()

void CActiveAESink::StateMachine ( int signal,
Protocol * port,
Message * msg )
protected
Todo
use max raw packet size, for now use max size of an IEC packed packet maxIECPpacket > maxRawPacket for raw packets frameSize is set to 1

◆ SupportsFormat()

bool CActiveAESink::SupportsFormat ( const std::string & device,
AEAudioFormat & format )

◆ SwapInit()

void CActiveAESink::SwapInit ( CSampleBuffer * samples)
protected

◆ ValidateOuputDevice()

std::string CActiveAESink::ValidateOuputDevice ( const std::string & device,
bool passthrough ) const

Member Data Documentation

◆ m_bStateMachineSelfTrigger

bool ActiveAE::CActiveAESink::m_bStateMachineSelfTrigger
protected

◆ m_controlPort

CSinkControlProtocol ActiveAE::CActiveAESink::m_controlPort

◆ m_dataPort

CSinkDataProtocol ActiveAE::CActiveAESink::m_dataPort

◆ m_device

std::string ActiveAE::CActiveAESink::m_device
protected

◆ m_deviceFriendlyName

std::string ActiveAE::CActiveAESink::m_deviceFriendlyName
protected

◆ m_extAppFocused

bool ActiveAE::CActiveAESink::m_extAppFocused
protected

◆ m_extError

bool ActiveAE::CActiveAESink::m_extError
protected

◆ m_extSilenceTimeout

std::chrono::milliseconds ActiveAE::CActiveAESink::m_extSilenceTimeout
protected

◆ m_extSilenceTimer

XbmcThreads::EndTime ActiveAE::CActiveAESink::m_extSilenceTimer
protected

◆ m_extStreaming

bool ActiveAE::CActiveAESink::m_extStreaming
protected

◆ m_extTimeout

std::chrono::milliseconds ActiveAE::CActiveAESink::m_extTimeout
protected

◆ m_inMsgEvent

CEvent* ActiveAE::CActiveAESink::m_inMsgEvent
protected

◆ m_mergeBuffer

std::vector<uint8_t> ActiveAE::CActiveAESink::m_mergeBuffer
protected

◆ m_needIecPack

bool ActiveAE::CActiveAESink::m_needIecPack {false}
protected

◆ m_outMsgEvent

CEvent ActiveAE::CActiveAESink::m_outMsgEvent
protected

◆ m_packer

std::unique_ptr<CAEBitstreamPacker> ActiveAE::CActiveAESink::m_packer
protected

◆ m_requestedFormat

AEAudioFormat ActiveAE::CActiveAESink::m_requestedFormat
protected

◆ m_sampleOfSilence

CSampleBuffer ActiveAE::CActiveAESink::m_sampleOfSilence
protected

◆ m_silenceTimeOut

std::chrono::minutes ActiveAE::CActiveAESink::m_silenceTimeOut {std::chrono::minutes::zero()}
protected

◆ m_sink

std::unique_ptr<IAESink> ActiveAE::CActiveAESink::m_sink
protected

◆ m_sinkFormat

AEAudioFormat ActiveAE::CActiveAESink::m_sinkFormat
protected

◆ m_sinkInfoList

std::vector<AE::AESinkInfo> ActiveAE::CActiveAESink::m_sinkInfoList
protected

◆ m_sinkLatency

int ActiveAE::CActiveAESink::m_sinkLatency
protected

◆ m_state

int ActiveAE::CActiveAESink::m_state
protected

◆ m_stats

CEngineStats* ActiveAE::CActiveAESink::m_stats
protected

◆ m_streamNoise

bool ActiveAE::CActiveAESink::m_streamNoise
protected

◆ []

enum { ... } ActiveAE::CActiveAESink::m_swapState

◆ m_volume

float ActiveAE::CActiveAESink::m_volume
protected

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