dxd - dynax driver framework 2.3.0d118
cross platform open source driver development framework
Loading...
Searching...
No Matches
dx::coreaudio::server::device< pin_t > Class Template Reference

CoreAudio server streaming device. More...

#include <dx_coreaudio_server_device.h>

+ Inheritance diagram for dx::coreaudio::server::device< pin_t >:
+ Collaboration diagram for dx::coreaudio::server::device< pin_t >:

Public Member Functions

virtual dx_catchall_rethrow() std void add_client (const ::AudioServerPlugInClientInfo *info) try
 
virtual void create_pins () try
 
template<typename driver_t >
 device (driver_t &driver, decltype(super::id)&id, const typename super::desc &desc)
 
 dx_catchall_rethrow () template< typename driver_t > device(driver_t &driver
 
 dx_catchall_rethrow () virtual void configure(target target
 configure: handle device configuration change requests configure will only receive requests targetted to the device
 
 dx_catchall_rethrow () void launch() override try
 
redirect::indent indent (std::clog)
 
pin_t & pin (::AudioObjectID id)
 
pin_t & pin (target target)
 
virtual uint32_t property (target target, const ::AudioObjectPropertyAddress &address, void *property, ::UInt32 &size, bool set=false) try
 generic device property handler
 
 submit (target.id,{ .mSelector=static_cast<::AudioObjectPropertySelector >(action),.mScope=::kAudioObjectPropertyScopeGlobal})
 
 switch (action)
 
decltype(super::id uid (this->puuid)
 

Public Attributes

::UInt64 action
 
decltype(super::id) & id: super(driver
 
decltype(super::id) id
 
uint8_t idx = 0
 
std::deque< pin_t > pins
 
::UInt64 void *info try
 

Detailed Description

template<typename pin_t>
class dx::coreaudio::server::device< pin_t >

CoreAudio server streaming device.

In contrast to the hierarchical dx device tree design the device keeps a list of all pins and all streams to better reflect the CoreAudio architecture.

Constructor & Destructor Documentation

◆ device()

template<typename pin_t >
template<typename driver_t >
dx::coreaudio::server::device< pin_t >::device ( driver_t & driver,
decltype(super::id)& id,
const typename super::desc & desc )
inline

Member Function Documentation

◆ add_client()

template<typename pin_t >
virtual dx_catchall_rethrow() std void dx::coreaudio::server::device< pin_t >::add_client ( const ::AudioServerPlugInClientInfo * info)
inlinevirtual

◆ create_pins()

template<typename pin_t >
virtual void dx::coreaudio::server::device< pin_t >::create_pins ( )
inlinevirtual

creates pins from dx::device description and adds it as CoreAudio entity to the CoreAudio device

register all audio pins across all streams

Todo
make sync ref stream selectable from stream::desc
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dx_catchall_rethrow() [1/3]

template<typename pin_t >
dx::coreaudio::server::device< pin_t >::dx_catchall_rethrow ( ) &

◆ dx_catchall_rethrow() [2/3]

template<typename pin_t >
dx::coreaudio::server::device< pin_t >::dx_catchall_rethrow ( )

configure: handle device configuration change requests configure will only receive requests targetted to the device

◆ dx_catchall_rethrow() [3/3]

template<typename pin_t >
dx::coreaudio::server::device< pin_t >::dx_catchall_rethrow ( )
inlineoverride

◆ indent()

template<typename pin_t >
redirect::indent dx::coreaudio::server::device< pin_t >::indent ( std::clog )
+ Here is the caller graph for this function:

◆ pin() [1/2]

template<typename pin_t >
pin_t & dx::coreaudio::server::device< pin_t >::pin ( ::AudioObjectID id)
inline
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ pin() [2/2]

template<typename pin_t >
pin_t & dx::coreaudio::server::device< pin_t >::pin ( target target)
inline
+ Here is the call graph for this function:

◆ property()

template<typename pin_t >
virtual uint32_t dx::coreaudio::server::device< pin_t >::property ( target target,
const ::AudioObjectPropertyAddress & address,
void * property,
::UInt32 & size,
bool set = false )
inlinevirtual

generic device property handler

  • has property (property= null)
  • get property
  • get property size (property= null)
  • set property (set= true)
  • is property settable (property= null, set= true)
Todo
provide channel names
Todo
evaluate if setting of kAudioDevicePropertySafetyOffset should be supported
Todo
keep track and return running state of pin
Todo
kAudioSelectorControlPropertyAvailableItems: calc clock # settings offset for multiple clock support
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ submit()

template<typename pin_t >
dx::coreaudio::server::device< pin_t >::submit ( target. id,
{ .mSelector=static_cast<::AudioObjectPropertySelector >(action),.mScope=::kAudioObjectPropertyScopeGlobal}  )
+ Here is the caller graph for this function:

◆ switch()

template<typename pin_t >
dx::coreaudio::server::device< pin_t >::switch ( action )
inline
+ Here is the call graph for this function:

◆ uid()

template<typename pin_t >
decltype(super::id dx::coreaudio::server::device< pin_t >::uid ( this-> puuid)
inline

Member Data Documentation

◆ action

template<typename pin_t >
::UInt64 dx::coreaudio::server::device< pin_t >::action

◆ circular

template<typename pin_t >
pin_t::circular_t* dx::coreaudio::server::device< pin_t >::circular

◆ count

template<typename pin_t >
uint64_t dx::coreaudio::server::device< pin_t >::count

cached sync cycle count to evaluate timesamp generation

◆ [struct]

struct { ... } dx::coreaudio::server::device< pin_t >::cycle

◆ direction

template<typename pin_t >
dx::stream::direction::direction dx::coreaudio::server::device< pin_t >::direction

◆ engine_driven

template<typename pin_t >
bool dx::coreaudio::server::device< pin_t >::engine_driven

pins do not provide any means of driving streaming

◆ id [1/2]

template<typename pin_t >
decltype(super::id) & dx::coreaudio::server::device< pin_t >::id

◆ id [2/2]

template<typename pin_t >
decltype(super::id) dx::coreaudio::server::device< pin_t >::id

◆ idx

template<typename pin_t >
uint8_t dx::coreaudio::server::device< pin_t >::idx = 0

◆ lines

template<typename pin_t >
uint32_t dx::coreaudio::server::device< pin_t >::lines

sample lines per sync cycle (per timestamp generation)

◆ linesize

template<typename pin_t >
uint32_t dx::coreaudio::server::device< pin_t >::linesize

size of all channels in bytes per sample

◆ offset

template<typename pin_t >
uint32_t dx::coreaudio::server::device< pin_t >::offset

timestamp generation offset to zero reference on seed change

◆ pins

template<typename pin_t >
std::deque<pin_t> dx::coreaudio::server::device< pin_t >::pins

◆ [struct]

struct { ... } dx::coreaudio::server::device< pin_t >::reference

◆ safety_offset

template<typename pin_t >
uint32_t dx::coreaudio::server::device< pin_t >::safety_offset[2]

RX/TX safety offsets;.

◆ seed

template<typename pin_t >
uint64_t dx::coreaudio::server::device< pin_t >::seed

◆ try

template<typename pin_t >
::UInt64 void* info dx::coreaudio::server::device< pin_t >::try
Initial value:
{
if(this->driver.log.interface.setup>= log::level::debug)
std::clog<< class_name<< "<"<< static_cast<unsigned int>(idx)<< ">::"<< __FUNCTION__<<
" "<< target<<
": "<< to(static_cast<uint32_t>(action))<<
" info:"<< reinterpret_cast<const uint64_t&>(info)<<
std::endl
::UInt64 action
Definition dx_coreaudio_server_device.h:881
uint8_t idx
Definition dx_coreaudio_server_device.h:68
std::string to(uint32_t fourchar)
Definition dx_common.h:473
unsigned int uint32_t
Definition wdk/dxd_base.h:110
unsigned __int64 uint64_t
Definition wdk/dxd_base.h:112

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

(c) copyright 2009 dynamic acoustics e.U. generated on Fri May 16 2025

a closed source license may be obtained by requesting a written permission from dynamic acoustics e.U.
however - governmental use generally and military use especially is strictly prohibited though.