dxd - dynax driver framework 2.1.0d73
cross platform open source driver development framework
Loading...
Searching...
No Matches
dx::stream::engine< device_t, pin_t, io_t, circular_t, driver_t > Class Template Referenceabstract

generic streaming engine More...

#include <dx_stream_engine.h>

+ Inheritance diagram for dx::stream::engine< device_t, pin_t, io_t, circular_t, driver_t >:
+ Collaboration diagram for dx::stream::engine< device_t, pin_t, io_t, circular_t, driver_t >:

Public Types

typedef device_t::desc desc
 
typedef decltype(matching_dictionaries) match
 
typedef ::GUID match
 

Public Member Functions

 catch (...)
 
 catch (...)
 
 catch (...)
 
 catch (...)
 
 catch (const dx::exception &__dx_exception)
 
 catch (const dx::exception &__dx_exception)
 
 catch (const dx::exception &__dx_exception)
 
 catch (const dx::exception &__dx_exception)
 
 catch (const std::exception &__std_exception)
 
 catch (const std::exception &__std_exception)
 
 catch (const std::exception &__std_exception)
 
 catch (const std::exception &__std_exception)
 
virtual void conclude () noexcept
 
void conclude () noexcept override
 
::CFStringRef copy () const
 
virtual void detach () noexcept
 
 dx_catchall () static void idle(int64_t nsec)
 
 dx_catchall () static void idle(uint64_t timeout) noexcept
 
virtual void exception (const exception &exception, bool filtered=false) const noexcept try
 notification exception handler
 
virtual void exception (const exception &exception, bool filtered=false) const noexcept try
 notification exception handler
 
device_t * find (std::string uid) const noexcept
 Finds the device by guid.
The user is responsible for making sure the device list cannot be modified during find().
 
virtual void free () noexcept
 
void halt () noexcept override
 stop streaming engine
 
CFTypeID id () noexcept
 
CFTypeID id () noexcept
 
CFTypeID id () noexcept
 
CFTypeID id () noexcept
 
CFTypeID id () noexcept
 
CFTypeID id () noexcept
 
CFTypeID id () noexcept
 
CFTypeID id () noexcept
 
CFTypeID id () noexcept
 
CFTypeID id () noexcept
 
referenceinitialize (cf_object_t cf_object, bool retain=true)
 
template<unsigned int max_channels>
void initialize (uint32_t iosize, uint64_t channel_map[2][(max_channels+63)/64]) try
 
virtual void launch ()
 
virtual void launch ()
 
 operator bool () const noexcept
 
 operator cf_object_t () const noexcept
 
 operator const char * () const
 
 operator double () const noexcept
 Skips whitespace; returns 0.0 on error.
 
 operator int32_t () const noexcept
 Skips whitespace; returns 0 on error, MAX or -MAX on overflow.
 
 operator std::string () const
 
template<typename petty_t = cf_object_t, typename = typename std::enable_if_t <!std::is_same_v<petty_t, ::CFTypeRef>>>
 operator type<> () const noexcept
 
bool operator!= (::CFStringRef value) const noexcept
 
bool operator!= (cf_object_t cf_object) const noexcept
 
bool operator!= (value_t value)
 
::CFMutableStringRef operator+ (::CFStringRef value) const noexcept
 
::CFMutableStringRef operator+ (const char *value) const noexcept
 
 operator::CFDataRef () const noexcept
 
 operator::CFTypeID () const noexcept
 
template<typename petty_t = cf_object_t, typename = typename std::enable_if_t <!std::is_same_v<petty_t, ::CFTypeRef>>>
 operator::CFTypeRef () const noexcept
 
bool operator< (::CFStringRef value) const noexcept
 
bool operator< (value_t value)
 
bool operator<= (::CFStringRef value) const noexcept
 
bool operator<= (value_t value)
 
bool operator== (::CFStringRef value) const noexcept
 
bool operator== (cf_object_t cf_object) const noexcept
 
bool operator== (value_t value)
 
bool operator> (::CFStringRef value) const noexcept
 
bool operator> (value_t value)
 
bool operator>= (::CFStringRef value) const noexcept
 
bool operator>= (value_t value)
 
referencerelease () noexcept
 
referenceretain () noexcept
 
void run () override try
 start streaming engine
 
uint32_t samplerate () const try
 
void samplerate (uint32_t samplerate) try
 

Static Public Member Functions

::CFTypeID id () noexcept
 

Public Attributes

::CFStringRef cf_type_desc = nullptr
 
::CFStringRef cf_type_id = nullptr
 
elements
 STL member.
 
bool launched = false
 
log log {}
 
dx::log log {}
 
cf::preference preference
 
dx::registry preference
 
dx::generic::driver::setup setup
 

Protected Types

typedef driver< device_t > driver
 

Protected Member Functions

dx_catchall_handler(this,) using driver_t void arrived () override try
 notify device arrivals completed stub
 
virtual void arrived (device_t &)
 notify specific device arrival stub
 
 catch (...)
 
 catch (...)
 
 catch (...)
 
 catch (const dx::exception &__dx_exception)
 
 catch (const dx::exception &__dx_exception)
 
 catch (const dx::exception &__dx_exception)
 
 catch (const std::exception &__std_exception)
 
 catch (const std::exception &__std_exception)
 
 catch (const std::exception &__std_exception)
 
void clear () noexcept
 replaces std::deque::clear to call virtual notification methods
 
 engine (const typename driver::match &match, const char *id)
 
realtimeinitialize (const std::chrono::high_resolution_clock::duration &resolution)
 
void initialize (const typename clock_t::duration &duration)
 
virtual void notify () noexcept
 notify change from device requiring streaming reset
 
virtual void notify (uint32_t) noexcept
 notify sample rate change from device
 
 operator::CFRunLoopSourceRef () const noexcept
 
 operator::IONotificationPortRef () const noexcept
 
 operator::mach_port_t () const noexcept
 
virtual void overload () noexcept
 
virtual void process (int64_t timestamp) noexcept=0
 
virtual void removed () noexcept
 notify device removals completed stub
 
void removed (device_t &device) noexcept override
 notify specific device removal stub
 
void sync (const std::chrono::high_resolution_clock::time_point &now) override try
 
virtual void sync (const typename clock_t::time_point &now)
 
void tick () override try
 
void update () noexcept try
 
void wait () try
 
virtual ~engine () noexcept
 

Protected Attributes

struct { 
 
   circular_t *   circular [directions
 
   force_read   force_read 
 
   force_write   force_write 
 
   struct { 
 
      volatile uint32_t *   samplerate 
 
   }   observer 
 
   struct { 
 
      uint32_t   interval 
 clock resolution: HW stream frame size in samples More...
 
      uint32_t   linesize 
 
      circular *   reference 
 
      uint32_t   safety_offset [directions
 
      uint32_t   samplerate 
 
      int64_t   trigger 
 
   }   sync 
 
cache 
 
cf_object_t cf_object = nullptr
 
std::shared_ptr< device_t > device
 
clock_t::duration duration = clock_t::duration::zero()
 
uint64_t frame = 0
 
bool hw_clock = false
 
io_t ** io [directions][2] {}
 
uint32_t iosize = 0
 
bool kernel_streaming = false
 
dx::stream::clock::monitormonitor = nullptr
 io[directions][double buffer][channel][sample]
 
std::mutex mutex
 
clock_t::time_point objective
 
std::shared_ptr< pin_t > pin [directions]
 
std::atomic< bool > running
 
os_result status = not_initialized
 

Detailed Description

template<typename device_t, typename pin_t, typename io_t = int32_t, typename circular_t = typename pin_t::circular_t, typename driver_t = driver<device_t>>
class dx::stream::engine< device_t, pin_t, io_t, circular_t, driver_t >

generic streaming engine

Exceptions
incase of an error returned by the underlaying API the device class throws a dx::exception.

Member Typedef Documentation

◆ desc

template<typename device_t , typename pin_t , typename io_t = int32_t, typename circular_t = typename pin_t::circular_t, typename driver_t = driver<device_t>>
typedef device_t::desc dx::stream::engine< device_t, pin_t, io_t, circular_t, driver_t >::desc

◆ driver

template<typename device_t , typename pin_t , typename io_t = int32_t, typename circular_t = typename pin_t::circular_t, typename driver_t = driver<device_t>>
typedef driver<device_t> dx::stream::engine< device_t, pin_t, io_t, circular_t, driver_t >::driver
protected

◆ match [1/2]

typedef decltype(matching_dictionaries) dx::generic::driver::match
inherited

◆ match [2/2]

typedef ::GUID dx::generic::driver::match
inherited

Constructor & Destructor Documentation

◆ engine()

template<typename device_t , typename pin_t , typename io_t = int32_t, typename circular_t = typename pin_t::circular_t, typename driver_t = driver<device_t>>
dx::stream::engine< device_t, pin_t, io_t, circular_t, driver_t >::engine ( const typename driver::match & match,
const char * id )
inlineprotected
+ Here is the call graph for this function:

◆ ~engine()

template<typename device_t , typename pin_t , typename io_t = int32_t, typename circular_t = typename pin_t::circular_t, typename driver_t = driver<device_t>>
virtual dx::stream::engine< device_t, pin_t, io_t, circular_t, driver_t >::~engine ( )
inlineprotectedvirtualnoexcept
+ Here is the call graph for this function:

Member Function Documentation

◆ arrived() [1/2]

template<typename device_t , typename pin_t , typename io_t = int32_t, typename circular_t = typename pin_t::circular_t, typename driver_t = driver<device_t>>
dx_catchall_handler(this,) using driver_t void dx::stream::engine< device_t, pin_t, io_t, circular_t, driver_t >::arrived ( )
inlineoverrideprotectedvirtual

notify device arrivals completed stub

pin creation exception caught here to allow device inspection even if streaming is not possible - most likely due to exclusive access.

Todo
forward pin creation exception to be thrown at engine::start()

Reimplemented from dx::driver< device_t >.

+ Here is the call graph for this function:

◆ arrived() [2/2]

template<class device_t = device>
virtual void dx::driver< device_t >::arrived ( device_t & )
inlineprotectedvirtualinherited

◆ catch() [1/21]

template<typename device_t , typename pin_t , typename io_t = int32_t, typename circular_t = typename pin_t::circular_t, typename driver_t = driver<device_t>>
dx::stream::engine< device_t, pin_t, io_t, circular_t, driver_t >::catch ( ...)
inlineprotected

◆ catch() [2/21]

template<typename device_t , typename pin_t , typename io_t = int32_t, typename circular_t = typename pin_t::circular_t, typename driver_t = driver<device_t>>
dx::stream::engine< device_t, pin_t, io_t, circular_t, driver_t >::catch ( ...)
inlineprotected

◆ catch() [3/21]

template<typename device_t , typename pin_t , typename io_t = int32_t, typename circular_t = typename pin_t::circular_t, typename driver_t = driver<device_t>>
dx::stream::engine< device_t, pin_t, io_t, circular_t, driver_t >::catch ( ...)
inlineprotected

◆ catch() [4/21]

template<typename device_t , typename pin_t , typename io_t = int32_t, typename circular_t = typename pin_t::circular_t, typename driver_t = driver<device_t>>
dx::stream::engine< device_t, pin_t, io_t, circular_t, driver_t >::catch ( ...)
inline

◆ catch() [5/21]

template<typename device_t , typename pin_t , typename io_t = int32_t, typename circular_t = typename pin_t::circular_t, typename driver_t = driver<device_t>>
dx::stream::engine< device_t, pin_t, io_t, circular_t, driver_t >::catch ( ...)
inline

◆ catch() [6/21]

template<typename device_t , typename pin_t , typename io_t = int32_t, typename circular_t = typename pin_t::circular_t, typename driver_t = driver<device_t>>
dx::stream::engine< device_t, pin_t, io_t, circular_t, driver_t >::catch ( ...)
inline

◆ catch() [7/21]

template<typename device_t , typename pin_t , typename io_t = int32_t, typename circular_t = typename pin_t::circular_t, typename driver_t = driver<device_t>>
dx::stream::engine< device_t, pin_t, io_t, circular_t, driver_t >::catch ( ...)
inline

◆ catch() [8/21]

template<typename device_t , typename pin_t , typename io_t = int32_t, typename circular_t = typename pin_t::circular_t, typename driver_t = driver<device_t>>
dx::stream::engine< device_t, pin_t, io_t, circular_t, driver_t >::catch ( const dx::exception & __dx_exception)
inlineprotected

◆ catch() [9/21]

template<typename device_t , typename pin_t , typename io_t = int32_t, typename circular_t = typename pin_t::circular_t, typename driver_t = driver<device_t>>
dx::stream::engine< device_t, pin_t, io_t, circular_t, driver_t >::catch ( const dx::exception & __dx_exception)
inlineprotected

◆ catch() [10/21]

template<typename device_t , typename pin_t , typename io_t = int32_t, typename circular_t = typename pin_t::circular_t, typename driver_t = driver<device_t>>
dx::stream::engine< device_t, pin_t, io_t, circular_t, driver_t >::catch ( const dx::exception & __dx_exception)
inlineprotected

◆ catch() [11/21]

template<typename device_t , typename pin_t , typename io_t = int32_t, typename circular_t = typename pin_t::circular_t, typename driver_t = driver<device_t>>
dx::stream::engine< device_t, pin_t, io_t, circular_t, driver_t >::catch ( const dx::exception & __dx_exception)
inline

◆ catch() [12/21]

template<typename device_t , typename pin_t , typename io_t = int32_t, typename circular_t = typename pin_t::circular_t, typename driver_t = driver<device_t>>
dx::stream::engine< device_t, pin_t, io_t, circular_t, driver_t >::catch ( const dx::exception & __dx_exception)
inline

◆ catch() [13/21]

template<typename device_t , typename pin_t , typename io_t = int32_t, typename circular_t = typename pin_t::circular_t, typename driver_t = driver<device_t>>
dx::stream::engine< device_t, pin_t, io_t, circular_t, driver_t >::catch ( const dx::exception & __dx_exception)
inline

◆ catch() [14/21]

template<typename device_t , typename pin_t , typename io_t = int32_t, typename circular_t = typename pin_t::circular_t, typename driver_t = driver<device_t>>
dx::stream::engine< device_t, pin_t, io_t, circular_t, driver_t >::catch ( const dx::exception & __dx_exception)
inline

◆ catch() [15/21]

template<typename device_t , typename pin_t , typename io_t = int32_t, typename circular_t = typename pin_t::circular_t, typename driver_t = driver<device_t>>
dx::stream::engine< device_t, pin_t, io_t, circular_t, driver_t >::catch ( const std::exception & __std_exception)
inlineprotected

◆ catch() [16/21]

template<typename device_t , typename pin_t , typename io_t = int32_t, typename circular_t = typename pin_t::circular_t, typename driver_t = driver<device_t>>
dx::stream::engine< device_t, pin_t, io_t, circular_t, driver_t >::catch ( const std::exception & __std_exception)
inlineprotected

◆ catch() [17/21]

template<typename device_t , typename pin_t , typename io_t = int32_t, typename circular_t = typename pin_t::circular_t, typename driver_t = driver<device_t>>
dx::stream::engine< device_t, pin_t, io_t, circular_t, driver_t >::catch ( const std::exception & __std_exception)
inlineprotected

◆ catch() [18/21]

template<typename device_t , typename pin_t , typename io_t = int32_t, typename circular_t = typename pin_t::circular_t, typename driver_t = driver<device_t>>
dx::stream::engine< device_t, pin_t, io_t, circular_t, driver_t >::catch ( const std::exception & __std_exception)
inline

◆ catch() [19/21]

template<typename device_t , typename pin_t , typename io_t = int32_t, typename circular_t = typename pin_t::circular_t, typename driver_t = driver<device_t>>
dx::stream::engine< device_t, pin_t, io_t, circular_t, driver_t >::catch ( const std::exception & __std_exception)
inline

◆ catch() [20/21]

template<typename device_t , typename pin_t , typename io_t = int32_t, typename circular_t = typename pin_t::circular_t, typename driver_t = driver<device_t>>
dx::stream::engine< device_t, pin_t, io_t, circular_t, driver_t >::catch ( const std::exception & __std_exception)
inline

◆ catch() [21/21]

template<typename device_t , typename pin_t , typename io_t = int32_t, typename circular_t = typename pin_t::circular_t, typename driver_t = driver<device_t>>
dx::stream::engine< device_t, pin_t, io_t, circular_t, driver_t >::catch ( const std::exception & __std_exception)
inline

◆ clear()

template<class device_t = device>
void dx::driver< device_t >::clear ( )
inlineprotectednoexceptinherited

replaces std::deque::clear to call virtual notification methods

Todo
check if exception catching needed for device::conclude()
+ Here is the call graph for this function:

◆ conclude() [1/2]

template<class device_t = device>
virtual void dx::driver< device_t >::conclude ( )
inlinevirtualnoexceptinherited

Reimplemented from dx::generic::driver.

◆ conclude() [2/2]

template<class device_t = device>
void dx::driver< device_t >::conclude ( )
inlineoverridevirtualnoexceptinherited

Reimplemented from dx::generic::driver.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ copy()

::CFStringRef dx::cf::__string< ::CFStringRef >::copy ( ) const
inlineinherited

◆ detach()

template<typename device_t , typename pin_t , typename io_t = int32_t, typename circular_t = typename pin_t::circular_t, typename driver_t = driver<device_t>>
virtual void dx::stream::engine< device_t, pin_t, io_t, circular_t, driver_t >::detach ( )
inlinevirtualnoexcept
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dx_catchall() [1/2]

dx::generic::driver::dx_catchall ( )
inlineinherited
+ Here is the caller graph for this function:

◆ dx_catchall() [2/2]

dx::generic::driver::dx_catchall ( )
inlinenoexceptinherited

◆ exception() [1/2]

virtual void dx::generic::driver::exception ( const exception & exception,
bool filtered = false ) const
inlinevirtualnoexceptinherited

notification exception handler

Reimplemented in dx::asio< device_t, pin_t >.

+ Here is the caller graph for this function:

◆ exception() [2/2]

virtual void dx::generic::driver::exception ( const exception & exception,
bool filtered = false ) const
inlinevirtualnoexceptinherited

notification exception handler

Reimplemented in dx::asio< device_t, pin_t >.

◆ find()

template<class device_t = device>
device_t * dx::driver< device_t >::find ( std::string uid) const
inlinenoexceptinherited

Finds the device by guid.
The user is responsible for making sure the device list cannot be modified during find().

Exceptions
n/athis method does not throw exceptions

◆ free()

template<typename device_t , typename pin_t , typename io_t = int32_t, typename circular_t = typename pin_t::circular_t, typename driver_t = driver<device_t>>
virtual void dx::stream::engine< device_t, pin_t, io_t, circular_t, driver_t >::free ( )
inlinevirtualnoexcept
Todo
replace test for valid pin by overwise keeping track of allocated channels
+ Here is the caller graph for this function:

◆ halt()

template<typename device_t , typename pin_t , typename io_t = int32_t, typename circular_t = typename pin_t::circular_t, typename driver_t = driver<device_t>>
void dx::stream::engine< device_t, pin_t, io_t, circular_t, driver_t >::halt ( )
inlineoverridevirtualnoexcept

stop streaming engine

Reimplemented from dx::clock< scope_t, clock_t >.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ id() [1/11]

template<typename cf_object_t >
::CFTypeID dx::cf::reference< cf_object_t >::id ( )
staticnoexceptinherited
+ Here is the caller graph for this function:

◆ id() [2/11]

CFTypeID dx::cf::reference<::CFDictionaryRef >::id ( )
inlinenoexceptinherited

◆ id() [3/11]

CFTypeID dx::cf::reference<::CFMutableDictionaryRef >::id ( )
inlinenoexceptinherited

◆ id() [4/11]

CFTypeID dx::cf::reference<::CFNumberRef >::id ( )
inlinenoexceptinherited

◆ id() [5/11]

CFTypeID dx::cf::reference<::CFStringRef >::id ( )
inlinenoexceptinherited

◆ id() [6/11]

CFTypeID dx::cf::reference<::CFArrayRef >::id ( )
inlinenoexceptinherited

◆ id() [7/11]

CFTypeID dx::cf::reference<::CFURLRef >::id ( )
inlinenoexceptinherited

◆ id() [8/11]

CFTypeID dx::cf::reference<::CFBundleRef >::id ( )
inlinenoexceptinherited

◆ id() [9/11]

CFTypeID dx::cf::reference<::CFDataRef >::id ( )
inlinenoexceptinherited

◆ id() [10/11]

CFTypeID dx::cf::reference<::CFUUIDRef >::id ( )
inlinenoexceptinherited

◆ id() [11/11]

CFTypeID dx::cf::reference<::SCPreferencesRef >::id ( )
inlinenoexceptinherited

◆ initialize() [1/4]

template<typename cf_object_t >
reference & dx::cf::reference< cf_object_t >::initialize ( cf_object_t cf_object,
bool retain = true )
inlineinherited
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ initialize() [2/4]

realtime & dx::thread::prio::realtime::initialize ( const std::chrono::high_resolution_clock::duration & resolution)
inlineinherited
Todo
dx::thread::prio: replace experimental hardcoded preemption limit with real limit obtained from machine
+ Here is the caller graph for this function:

◆ initialize() [3/4]

template<enum scope scope_t = user, typename clock_t = std::chrono::high_resolution_clock>
void dx::clock< scope_t, clock_t >::initialize ( const typename clock_t::duration & duration)
inlineinherited
+ Here is the caller graph for this function:

◆ initialize() [4/4]

template<typename device_t , typename pin_t , typename io_t = int32_t, typename circular_t = typename pin_t::circular_t, typename driver_t = driver<device_t>>
template<unsigned int max_channels>
void dx::stream::engine< device_t, pin_t, io_t, circular_t, driver_t >::initialize ( uint32_t iosize,
uint64_t channel_map[2][(max_channels+63)/64] )
inline
Todo
clock already runnning with different iosize: check if engine should be initialized with current iosize
Todo
stream::engine::initialize(): define sync reference pin
+ Here is the call graph for this function:

◆ launch() [1/2]

virtual void dx::generic::driver::launch ( )
inlinevirtualinherited
+ Here is the caller graph for this function:

◆ launch() [2/2]

virtual void dx::generic::driver::launch ( )
inlinevirtualinherited
+ Here is the call graph for this function:

◆ notify() [1/2]

template<typename device_t , typename pin_t , typename io_t = int32_t, typename circular_t = typename pin_t::circular_t, typename driver_t = driver<device_t>>
virtual void dx::clock< scope_t, clock_t >::notify ( )
inlineprotectedvirtualnoexcept

notify change from device requiring streaming reset

Reimplemented from dx::clock< scope_t, clock_t >.

Reimplemented in dx::test::driver< super_device_t, audio_pin_t, midi_pin_t, io_t, device_t, driver_t, engine_t >.

+ Here is the caller graph for this function:

◆ notify() [2/2]

template<typename device_t , typename pin_t , typename io_t = int32_t, typename circular_t = typename pin_t::circular_t, typename driver_t = driver<device_t>>
virtual void dx::stream::engine< device_t, pin_t, io_t, circular_t, driver_t >::notify ( uint32_t )
inlineprotectedvirtualnoexcept

notify sample rate change from device

Reimplemented in dx::asio< device_t, pin_t >.

◆ operator bool()

template<typename cf_object_t >
dx::cf::reference< cf_object_t >::operator bool ( ) const
inlinenoexceptinherited

◆ operator cf_object_t()

template<typename cf_object_t >
dx::cf::reference< cf_object_t >::operator cf_object_t ( ) const
inlinenoexceptinherited

◆ operator const char *()

dx::cf::__string< ::CFStringRef >::operator const char * ( ) const
inlineinherited

◆ operator double()

dx::cf::__string< ::CFStringRef >::operator double ( ) const
inlinenoexceptinherited

Skips whitespace; returns 0.0 on error.

◆ operator int32_t()

dx::cf::__string< ::CFStringRef >::operator int32_t ( ) const
inlinenoexceptinherited

Skips whitespace; returns 0 on error, MAX or -MAX on overflow.

◆ operator std::string()

dx::cf::__string< ::CFStringRef >::operator std::string ( ) const
inlineinherited

◆ operator type<>()

template<typename cf_object_t >
template<typename petty_t = cf_object_t, typename = typename std::enable_if_t <!std::is_same_v<petty_t, ::CFTypeRef>>>
dx::cf::reference< cf_object_t >::operator type<> ( ) const
noexceptinherited

◆ operator!=() [1/3]

bool dx::cf::__string< ::CFStringRef >::operator!= ( ::CFStringRef value) const
inlinenoexceptinherited

◆ operator!=() [2/3]

template<typename cf_object_t >
bool dx::cf::reference< cf_object_t >::operator!= ( cf_object_t cf_object) const
inlinenoexceptinherited

◆ operator!=() [3/3]

bool dx::cf::__string< ::CFStringRef >::operator!= ( value_t value)
inlineinherited

◆ operator+() [1/2]

::CFMutableStringRef dx::cf::__string< ::CFStringRef >::operator+ ( ::CFStringRef value) const
inlinenoexceptinherited

◆ operator+() [2/2]

::CFMutableStringRef dx::cf::__string< ::CFStringRef >::operator+ ( const char * value) const
inlinenoexceptinherited

◆ operator::CFDataRef()

dx::cf::__string< ::CFStringRef >::operator::CFDataRef ( ) const
inlinenoexceptinherited

◆ operator::CFRunLoopSourceRef()

dx::io::power::operator::CFRunLoopSourceRef ( ) const
inlinenoexceptinherited

◆ operator::CFTypeID()

template<typename cf_object_t >
dx::cf::reference< cf_object_t >::operator::CFTypeID ( ) const
inlinenoexceptinherited

◆ operator::CFTypeRef()

template<typename cf_object_t >
template<typename petty_t = cf_object_t, typename = typename std::enable_if_t <!std::is_same_v<petty_t, ::CFTypeRef>>>
dx::cf::reference< cf_object_t >::operator::CFTypeRef ( ) const
inlinenoexceptinherited

◆ operator::IONotificationPortRef()

dx::io::power::operator::IONotificationPortRef ( ) const
inlinenoexceptinherited

◆ operator::mach_port_t()

dx::io::power::operator::mach_port_t ( ) const
inlinenoexceptinherited

◆ operator<() [1/2]

bool dx::cf::__string< ::CFStringRef >::operator< ( ::CFStringRef value) const
inlinenoexceptinherited

◆ operator<() [2/2]

bool dx::cf::__string< ::CFStringRef >::operator< ( value_t value)
inlineinherited

◆ operator<=() [1/2]

bool dx::cf::__string< ::CFStringRef >::operator<= ( ::CFStringRef value) const
inlinenoexceptinherited

◆ operator<=() [2/2]

bool dx::cf::__string< ::CFStringRef >::operator<= ( value_t value)
inlineinherited

◆ operator==() [1/3]

bool dx::cf::__string< ::CFStringRef >::operator== ( ::CFStringRef value) const
inlinenoexceptinherited

◆ operator==() [2/3]

template<typename cf_object_t >
bool dx::cf::reference< cf_object_t >::operator== ( cf_object_t cf_object) const
inlinenoexceptinherited

◆ operator==() [3/3]

bool dx::cf::__string< ::CFStringRef >::operator== ( value_t value)
inlineinherited

◆ operator>() [1/2]

bool dx::cf::__string< ::CFStringRef >::operator> ( ::CFStringRef value) const
inlinenoexceptinherited

◆ operator>() [2/2]

bool dx::cf::__string< ::CFStringRef >::operator> ( value_t value)
inlineinherited

◆ operator>=() [1/2]

bool dx::cf::__string< ::CFStringRef >::operator>= ( ::CFStringRef value) const
inlinenoexceptinherited

◆ operator>=() [2/2]

bool dx::cf::__string< ::CFStringRef >::operator>= ( value_t value)
inlineinherited

◆ overload()

template<typename device_t , typename pin_t , typename io_t = int32_t, typename circular_t = typename pin_t::circular_t, typename driver_t = driver<device_t>>
virtual void dx::stream::engine< device_t, pin_t, io_t, circular_t, driver_t >::overload ( )
inlineprotectedvirtualnoexcept

Reimplemented in dx::asio< device_t, pin_t >.

+ Here is the caller graph for this function:

◆ process()

template<typename device_t , typename pin_t , typename io_t = int32_t, typename circular_t = typename pin_t::circular_t, typename driver_t = driver<device_t>>
virtual void dx::stream::engine< device_t, pin_t, io_t, circular_t, driver_t >::process ( int64_t timestamp)
protectedpure virtualnoexcept

Implemented in dx::asio< device_t, pin_t >, and dx::test::driver< super_device_t, audio_pin_t, midi_pin_t, io_t, device_t, driver_t, engine_t >.

+ Here is the caller graph for this function:

◆ release()

template<typename cf_object_t >
reference & dx::cf::reference< cf_object_t >::release ( )
inlinenoexceptinherited
+ Here is the caller graph for this function:

◆ removed() [1/2]

template<class device_t = device>
virtual void dx::generic::driver::removed ( )
inlineprotectedvirtualnoexceptinherited

notify device removals completed stub

Reimplemented from dx::generic::driver.

◆ removed() [2/2]

template<typename device_t , typename pin_t , typename io_t = int32_t, typename circular_t = typename pin_t::circular_t, typename driver_t = driver<device_t>>
void dx::stream::engine< device_t, pin_t, io_t, circular_t, driver_t >::removed ( device_t & )
inlineoverrideprotectedvirtualnoexcept

notify specific device removal stub

Reimplemented from dx::driver< device_t >.

+ Here is the call graph for this function:

◆ retain()

template<typename cf_object_t >
reference & dx::cf::reference< cf_object_t >::retain ( )
inlinenoexceptinherited
+ Here is the caller graph for this function:

◆ run()

template<typename device_t , typename pin_t , typename io_t = int32_t, typename circular_t = typename pin_t::circular_t, typename driver_t = driver<device_t>>
void dx::stream::engine< device_t, pin_t, io_t, circular_t, driver_t >::run ( )
inlineoverridevirtual

start streaming engine

Reimplemented from dx::clock< scope_t, clock_t >.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ samplerate() [1/2]

template<typename device_t , typename pin_t , typename io_t = int32_t, typename circular_t = typename pin_t::circular_t, typename driver_t = driver<device_t>>
uint32_t dx::stream::engine< device_t, pin_t, io_t, circular_t, driver_t >::samplerate ( ) const
inline

◆ samplerate() [2/2]

template<typename device_t , typename pin_t , typename io_t = int32_t, typename circular_t = typename pin_t::circular_t, typename driver_t = driver<device_t>>
void dx::stream::engine< device_t, pin_t, io_t, circular_t, driver_t >::samplerate ( uint32_t samplerate)
inline
+ Here is the call graph for this function:

◆ sync() [1/2]

template<typename device_t , typename pin_t , typename io_t = int32_t, typename circular_t = typename pin_t::circular_t, typename driver_t = driver<device_t>>
void dx::stream::engine< device_t, pin_t, io_t, circular_t, driver_t >::sync ( const std::chrono::high_resolution_clock::time_point & now)
inlineoverrideprotected
+ Here is the call graph for this function:

◆ sync() [2/2]

template<enum scope scope_t = user, typename clock_t = std::chrono::high_resolution_clock>
virtual void dx::clock< scope_t, clock_t >::sync ( const typename clock_t::time_point & now)
inlineprotectedvirtualinherited
+ Here is the caller graph for this function:

◆ tick()

template<typename device_t , typename pin_t , typename io_t = int32_t, typename circular_t = typename pin_t::circular_t, typename driver_t = driver<device_t>>
void dx::stream::engine< device_t, pin_t, io_t, circular_t, driver_t >::tick ( )
inlineoverrideprotectedvirtual
Todo
enable re-sync with correct rx/tx position dependent clock event time point

Implements dx::clock< scope_t, clock_t >.

+ Here is the call graph for this function:

◆ update()

template<typename device_t , typename pin_t , typename io_t = int32_t, typename circular_t = typename pin_t::circular_t, typename driver_t = driver<device_t>>
void dx::stream::engine< device_t, pin_t, io_t, circular_t, driver_t >::update ( )
inlineprotectednoexcept
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ wait()

template<enum scope scope_t = user, typename clock_t = std::chrono::high_resolution_clock>
void dx::clock< scope_t, clock_t >::wait ( )
inlineinherited

Member Data Documentation

◆ [struct]

struct { ... } dx::stream::engine< device_t, pin_t, io_t, circular_t, driver_t >::cache

◆ cf_object

template<typename cf_object_t >
cf_object_t dx::cf::reference< cf_object_t >::cf_object = nullptr
protectedinherited

◆ cf_type_desc

template<typename cf_object_t >
::CFStringRef dx::cf::reference< cf_object_t >::cf_type_desc = nullptr
inherited

◆ cf_type_id

template<typename cf_object_t >
::CFStringRef dx::cf::reference< cf_object_t >::cf_type_id = nullptr
inherited

◆ circular

template<typename device_t , typename pin_t , typename io_t = int32_t, typename circular_t = typename pin_t::circular_t, typename driver_t = driver<device_t>>
circular_t* dx::stream::engine< device_t, pin_t, io_t, circular_t, driver_t >::circular[directions]

◆ device

template<typename device_t , typename pin_t , typename io_t = int32_t, typename circular_t = typename pin_t::circular_t, typename driver_t = driver<device_t>>
std::shared_ptr<device_t> dx::stream::engine< device_t, pin_t, io_t, circular_t, driver_t >::device
protected

◆ duration

template<enum scope scope_t = user, typename clock_t = std::chrono::high_resolution_clock>
clock_t::duration dx::clock< scope_t, clock_t >::duration = clock_t::duration::zero()
protectedinherited
Todo
evaluate clock::status replacement (exception?)

◆ elements

T std::deque< T >::elements
inherited

STL member.

◆ force_read

template<typename device_t , typename pin_t , typename io_t = int32_t, typename circular_t = typename pin_t::circular_t, typename driver_t = driver<device_t>>
force_read dx::stream::engine< device_t, pin_t, io_t, circular_t, driver_t >::force_read

◆ force_write

template<typename device_t , typename pin_t , typename io_t = int32_t, typename circular_t = typename pin_t::circular_t, typename driver_t = driver<device_t>>
force_write dx::stream::engine< device_t, pin_t, io_t, circular_t, driver_t >::force_write

◆ frame

template<typename device_t , typename pin_t , typename io_t = int32_t, typename circular_t = typename pin_t::circular_t, typename driver_t = driver<device_t>>
uint64_t dx::stream::engine< device_t, pin_t, io_t, circular_t, driver_t >::frame = 0
protected

◆ hw_clock

template<typename device_t , typename pin_t , typename io_t = int32_t, typename circular_t = typename pin_t::circular_t, typename driver_t = driver<device_t>>
bool dx::stream::engine< device_t, pin_t, io_t, circular_t, driver_t >::hw_clock = false
protected

◆ interval

template<typename device_t , typename pin_t , typename io_t = int32_t, typename circular_t = typename pin_t::circular_t, typename driver_t = driver<device_t>>
uint32_t dx::stream::engine< device_t, pin_t, io_t, circular_t, driver_t >::interval

clock resolution: HW stream frame size in samples

◆ io

template<typename device_t , typename pin_t , typename io_t = int32_t, typename circular_t = typename pin_t::circular_t, typename driver_t = driver<device_t>>
io_t** dx::stream::engine< device_t, pin_t, io_t, circular_t, driver_t >::io[directions][2] {}
protected

◆ iosize

template<typename device_t , typename pin_t , typename io_t = int32_t, typename circular_t = typename pin_t::circular_t, typename driver_t = driver<device_t>>
uint32_t dx::stream::engine< device_t, pin_t, io_t, circular_t, driver_t >::iosize = 0
protected

◆ kernel_streaming

template<typename device_t , typename pin_t , typename io_t = int32_t, typename circular_t = typename pin_t::circular_t, typename driver_t = driver<device_t>>
bool dx::stream::engine< device_t, pin_t, io_t, circular_t, driver_t >::kernel_streaming = false
protected

◆ launched

template<class device_t = device>
bool dx::driver< device_t >::launched = false
inherited

◆ linesize

template<typename device_t , typename pin_t , typename io_t = int32_t, typename circular_t = typename pin_t::circular_t, typename driver_t = driver<device_t>>
uint32_t dx::stream::engine< device_t, pin_t, io_t, circular_t, driver_t >::linesize

◆ log [1/2]

log dx::generic::driver::log {}
inherited

◆ log [2/2]

dx::log dx::generic::driver::log {}
inherited

◆ monitor

template<typename device_t , typename pin_t , typename io_t = int32_t, typename circular_t = typename pin_t::circular_t, typename driver_t = driver<device_t>>
dx::stream::clock::monitor* dx::stream::engine< device_t, pin_t, io_t, circular_t, driver_t >::monitor = nullptr
protected

io[directions][double buffer][channel][sample]

◆ mutex

template<enum scope scope_t = user, typename clock_t = std::chrono::high_resolution_clock>
std::mutex dx::clock< scope_t, clock_t >::mutex
protectedinherited

◆ objective

template<enum scope scope_t = user, typename clock_t = std::chrono::high_resolution_clock>
clock_t::time_point dx::clock< scope_t, clock_t >::objective
protectedinherited

◆ [struct]

struct { ... } dx::stream::engine< device_t, pin_t, io_t, circular_t, driver_t >::observer

◆ pin

template<typename device_t , typename pin_t , typename io_t = int32_t, typename circular_t = typename pin_t::circular_t, typename driver_t = driver<device_t>>
std::shared_ptr<pin_t> dx::stream::engine< device_t, pin_t, io_t, circular_t, driver_t >::pin[directions]
protected

◆ preference [1/2]

cf::preference dx::generic::driver::preference
inherited

◆ preference [2/2]

dx::registry dx::generic::driver::preference
inherited

◆ reference

template<typename device_t , typename pin_t , typename io_t = int32_t, typename circular_t = typename pin_t::circular_t, typename driver_t = driver<device_t>>
circular* dx::stream::engine< device_t, pin_t, io_t, circular_t, driver_t >::reference

◆ running

template<enum scope scope_t = user, typename clock_t = std::chrono::high_resolution_clock>
std::atomic<bool> dx::clock< scope_t, clock_t >::running
protectedinherited

◆ safety_offset

template<typename device_t , typename pin_t , typename io_t = int32_t, typename circular_t = typename pin_t::circular_t, typename driver_t = driver<device_t>>
uint32_t dx::stream::engine< device_t, pin_t, io_t, circular_t, driver_t >::safety_offset {}

◆ samplerate [1/2]

template<typename device_t , typename pin_t , typename io_t = int32_t, typename circular_t = typename pin_t::circular_t, typename driver_t = driver<device_t>>
volatile uint32_t* dx::stream::engine< device_t, pin_t, io_t, circular_t, driver_t >::samplerate

◆ samplerate [2/2]

template<typename device_t , typename pin_t , typename io_t = int32_t, typename circular_t = typename pin_t::circular_t, typename driver_t = driver<device_t>>
uint32_t dx::stream::engine< device_t, pin_t, io_t, circular_t, driver_t >::samplerate

◆ setup

dx::generic::driver::setup dx::generic::driver::setup
inherited

◆ status

template<enum scope scope_t = user, typename clock_t = std::chrono::high_resolution_clock>
os_result dx::clock< scope_t, clock_t >::status = not_initialized
protectedinherited

◆ [struct]

struct { ... } dx::stream::engine< device_t, pin_t, io_t, circular_t, driver_t >::sync

◆ trigger

template<typename device_t , typename pin_t , typename io_t = int32_t, typename circular_t = typename pin_t::circular_t, typename driver_t = driver<device_t>>
int64_t dx::stream::engine< device_t, pin_t, io_t, circular_t, driver_t >::trigger

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

(c) copyright 2009 dynamic acoustics e.U. generated on Fri Nov 15 2024

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.