dxd - dynax driver framework 3.0.1d223
cross platform open source driver development framework
Loading...
Searching...
No Matches
dx::coreaudio::server::pin< stream_pin_t > Class Template Reference

a pin as the HAL sees it: the stream object, its format list and every control of this pin, each answering the HAL's property calls from the desc and the device's promoted settings More...

#include <dx_coreaudio_server_pin.h>

Inheritance diagram for dx::coreaudio::server::pin< stream_pin_t >:
Collaboration diagram for dx::coreaudio::server::pin< stream_pin_t >:

Classes

struct  [struct].cache
struct  entry

Public Types

typedef decltype(&mix< int32_t >) mix_t

Public Member Functions

virtual void io (::UInt32 operation, ::UInt32 frames, const ::AudioServerPlugInIOCycleInfo *info, void *main)
 operator::AudioStreamBasicDescription () const
 pin (uint8_t id, typename super::device_t &device, const typename super::device_t::desc::stream::desc &stream_desc, const typename super::desc &pin_desc)
virtual uint32_t property (target target, const ::AudioObjectPropertyAddress &address, void *property, ::UInt32 &size, bool set=false)
 generic pin property handler

Static Public Member Functions

template<typename format_t>
static bool mix (typename stream_pin_t::circular_t &circular, volatile uint64_t &position, const void *main, uint64_t frames, uint32_t channels, uint32_t index, uint32_t interleaved)
 the HAL's interleaved buffer mixed into the ring in the pin's own sample format
static mix_t mixer (const struct dx::stream::format &format)

Public Attributes

struct  cache
uint8_t id
const mix_t mix_ = mixer(this->format)

Protected Attributes

const dx::stream::clock::bitmap & bitmap
super::circular_t * circular = *this
dx::stream::clock::monitor * monitor = nullptr

Detailed Description

template<typename stream_pin_t>
class dx::coreaudio::server::pin< stream_pin_t >

a pin as the HAL sees it: the stream object, its format list and every control of this pin, each answering the HAL's property calls from the desc and the device's promoted settings

Member Typedef Documentation

◆ mix_t

template<typename stream_pin_t>
typedef decltype(&mix<int32_t>) dx::coreaudio::server::pin< stream_pin_t >::mix_t

Constructor & Destructor Documentation

◆ pin()

template<typename stream_pin_t>
dx::coreaudio::server::pin< stream_pin_t >::pin ( uint8_t id,
typename super::device_t & device,
const typename super::device_t::desc::stream::desc & stream_desc,
const typename super::desc & pin_desc )
inline

Member Function Documentation

◆ io()

template<typename stream_pin_t>
virtual void dx::coreaudio::server::pin< stream_pin_t >::io ( ::UInt32 operation,
::UInt32 frames,
const ::AudioServerPlugInIOCycleInfo * info,
void * main )
inlinevirtual
Todo
RT-unsafe: this branch logs (std::clog: heap alloc + os_log) on the coreaudiod IO thread
Todo
whenever a dropout/discontinuity occurs at the default log level. Needs a lock-free
Todo
counter/flag incremented here and drained + logged by a non-RT thread instead, so the
Todo
diagnostic survives at production log levels without doing unsafe work on this thread.
Todo
RT-unsafe: same as the ReadInput branch above (std::clog on the IO thread on dropout).
Here is the call graph for this function:

◆ mix()

template<typename stream_pin_t>
template<typename format_t>
bool dx::coreaudio::server::pin< stream_pin_t >::mix ( typename stream_pin_t::circular_t & circular,
volatile uint64_t & position,
const void * main,
uint64_t frames,
uint32_t channels,
uint32_t index,
uint32_t interleaved )
inlinestatic

the HAL's interleaved buffer mixed into the ring in the pin's own sample format

Here is the caller graph for this function:

◆ mixer()

template<typename stream_pin_t>
mix_t dx::coreaudio::server::pin< stream_pin_t >::mixer ( const struct dx::stream::format & format)
inlinestatic
Here is the call graph for this function:

◆ operator::AudioStreamBasicDescription()

template<typename stream_pin_t>
dx::coreaudio::server::pin< stream_pin_t >::operator::AudioStreamBasicDescription ( ) const
inline
Here is the call graph for this function:
Here is the caller graph for this function:

◆ property()

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

generic pin 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
support sample rate range
Todo
evaluate kAudioStreamPropertyIsActive: seems to never get requested
Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ bitmap

template<typename stream_pin_t>
const dx::stream::clock::bitmap& dx::coreaudio::server::pin< stream_pin_t >::bitmap
protected

◆ cache

◆ circular

template<typename stream_pin_t>
super::circular_t* dx::coreaudio::server::pin< stream_pin_t >::circular = *this
protected

◆ id

template<typename stream_pin_t>
uint8_t dx::coreaudio::server::pin< stream_pin_t >::id

◆ mix_

template<typename stream_pin_t>
const mix_t dx::coreaudio::server::pin< stream_pin_t >::mix_ = mixer(this->format)

◆ monitor

template<typename stream_pin_t>
dx::stream::clock::monitor* dx::coreaudio::server::pin< stream_pin_t >::monitor = nullptr
protected

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

(c) copyright 2009 dynamic acoustics e.U. generated on

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.