dxd - dynax driver framework 2.2.0d85
cross platform open source driver development framework
|
generic streaming engine More...
#include <dx_stream_engine.h>
Public Types | |
typedef device_t::desc | desc |
typedef decltype(matching_ids) | match |
typedef decltype(matching_ids) | match |
Public Attributes | |
T | elements |
STL member. | |
K | keys |
STL member. | |
bool | launched {} |
log | log |
const char * | product_id |
io::registry | registry |
std::deque< setup > | setup |
uint32_t | version |
Protected Member Functions | |
void | add (const device_id_t &device_id) override try |
adds a new device to the device list | |
dx_catchall_handler(this,) using super 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 try |
replaces std::map::clear to call virtual notification methods | |
void | conclude () noexcept override try |
conclude notification: object will be removed. If you overwrite conclude() you also need to overwrite destructor and check if its needed to be called from there. | |
engine (const typename super::match &matching_ids, const char *id) | |
virtual void | notify (uint32_t) noexcept |
notify sample rate change from device | |
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 |
void | tick () override try |
void | update () noexcept try |
virtual | ~engine () noexcept |
Protected Attributes | ||
struct { | ||
circular_t * circular [direction::directions] | ||
force_read force_read | ||
force_write force_write | ||
struct { | ||
volatile uint32_t * samplerate | ||
} observer | ||
struct { | ||
bool engine_driven | ||
pins do not provide any means of driving streaming More... | ||
struct { | ||
uint32_t interval | ||
clock resolution: HW stream frame size in samples More... | ||
uint32_t linesize | ||
uint32_t safety_offset | ||
} io [direction::directions] | ||
direction::direction reference | ||
uint32_t samplerate | ||
int64_t trigger | ||
resync condition More... | ||
} sync | ||
} | cache | |
std::shared_ptr< device_t > | device | |
uint64_t | frame = 0 | |
bool | hw_clock = false | |
io_t ** | io [direction::directions][2] {} | |
uint32_t | iosize = 0 | |
bool | kernel_streaming = false | |
std::vector<::GUID > | matching_ids | |
dx::stream::clock::monitor * | monitor = nullptr | |
io[directions][double buffer][channel][sample] | ||
struct dx::proxy::driver::notification | notification | |
std::shared_ptr< pin_t > | pin [direction::directions] | |
generic streaming engine
in | case of an error returned by the underlaying API the device class throws a dx::exception. |
typedef device_t::desc dx::stream::engine< device_t, pin_t, driver_t, io_t, circular_t >::desc |
|
inherited |
|
inherited |
|
inlineprotected |
|
inlineprotectedvirtualnoexcept |
|
inlineoverrideprotectedvirtualinherited |
adds a new device to the device list
dx::exception |
Implements dx::driver< decltype(device_t::id)>.
Reimplemented in dx::virtuel::driver< device_t >.
|
inlineinherited |
|
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.
Reimplemented from dx::map::driver< device_t >.
|
inlineprotectedvirtualinherited |
notify specific device arrival stub
Reimplemented in dx::coreaudio::server::plugin< pin_t, device_t, driver_t >, and dx::coremidi::server::plugin< stream_pin_t, device_t, driver_t >.
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inline |
|
inline |
|
inline |
|
inline |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inline |
|
inline |
|
inline |
|
inline |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inline |
|
inline |
|
inline |
|
inline |
|
inlineprotectednoexceptinherited |
replaces std::map::clear to call virtual notification methods
|
inlineoverrideprotectedvirtualnoexceptinherited |
conclude notification: object will be removed. If you overwrite conclude() you also need to overwrite destructor and check if its needed to be called from there.
Reimplemented from dx::object.
|
inlinevirtualnoexcept |
|
inlineoverridenoexceptinherited |
notification exception handler
|
pure virtualnoexceptinherited |
notification exception handler
Implemented in dx::device< std::string >, dx::device<::AudioObjectID >, dx::device<::io_service_t >, dx::device< id_t >, dx::proxy::device, dx::usb::platform::device, and dx::proxy::device.
|
inlinevirtualnoexcept |
|
inlineoverridenoexcept |
stop streaming engine
|
inlineoverridevirtualnoexceptinherited |
log object class information
Reimplemented from dx::object.
|
inline |
|
inlineoverridevirtualinherited |
launch notification: object mounted and ready to use
Reimplemented from dx::object.
|
inlinevirtualinherited |
launch notification: object mounted and ready to use
Reimplemented from dx::object.
|
inlineprotectedvirtualnoexcept |
notify sample rate change from device
Reimplemented in dx::asio< device_t, pin_t, driver_t >.
|
protectedpure virtualnoexcept |
Implemented in dx::asio< device_t, pin_t, driver_t >, dx::test::driver< super_device_t, audio_pin_t, int32_t, dx::test::device< typename audio_pin_t::circular_t, super_device_t >, dx::proxy::driver< dx::test::device< typename audio_pin_t::circular_t, super_device_t > >, dx::stream::engine< dx::test::device< typename audio_pin_t::circular_t, super_device_t >, audio_pin_t, int32_t, typename audio_pin_t::circular_t, dx::proxy::driver< dx::test::device< typename audio_pin_t::circular_t, super_device_t > > > >, dx::test::driver< super_device_t, audio_pin_t, int32_t, dx::test::device< typename audio_pin_t::circular_t, super_device_t >, dx::virtuel::driver< dx::test::device< typename audio_pin_t::circular_t, super_device_t > >, dx::stream::engine< dx::test::device< typename audio_pin_t::circular_t, super_device_t >, audio_pin_t, dx::virtuel::driver< dx::test::device< typename audio_pin_t::circular_t, super_device_t > >, int32_t > >, dx::test::driver< super_device_t, audio_pin_t, int32_t, dx::test::midi::device< typename audio_pin_t::circular_t, super_device_t, typename midi_pin_t::circular_t >, dx::proxy::driver< dx::test::midi::device< typename audio_pin_t::circular_t, super_device_t, typename midi_pin_t::circular_t > >, dx::stream::engine< dx::test::midi::device< typename audio_pin_t::circular_t, super_device_t, typename midi_pin_t::circular_t >, audio_pin_t, dx::proxy::driver< dx::test::midi::device< typename audio_pin_t::circular_t, super_device_t, typename midi_pin_t::circular_t > >, int32_t > >, and dx::test::driver< super_device_t, audio_pin_t, io_t, device_t, driver_t, engine_t >.
|
inlineoverridevirtualinherited |
finds and removes a device from the device list
dx::exception |
Reimplemented from dx::map::driver< device_t >.
|
inlineinherited |
|
inlineprotectedvirtualnoexceptinherited |
notify device removals completed stub
Reimplemented from dx::driver< decltype(device_t::id)>.
|
inlineoverrideprotectedvirtualnoexcept |
notify specific device removal stub
Reimplemented from dx::map::driver< device_t >.
|
inlineoverride |
start streaming engine
|
inline |
|
inline |
|
inlineoverrideprotected |
|
inlineoverrideprotected |
|
inlineprotectednoexcept |
struct { ... } dx::stream::engine< device_t, pin_t, driver_t, io_t, circular_t >::cache |
circular_t* dx::stream::engine< device_t, pin_t, driver_t, io_t, circular_t >::circular[direction::directions] |
|
protected |
|
inherited |
STL member.
bool dx::stream::engine< device_t, pin_t, driver_t, io_t, circular_t >::engine_driven |
pins do not provide any means of driving streaming
force_read dx::stream::engine< device_t, pin_t, driver_t, io_t, circular_t >::force_read |
force_write dx::stream::engine< device_t, pin_t, driver_t, io_t, circular_t >::force_write |
|
protected |
|
protected |
uint32_t dx::stream::engine< device_t, pin_t, driver_t, io_t, circular_t >::interval |
clock resolution: HW stream frame size in samples
struct { ... } dx::stream::engine< device_t, pin_t, driver_t, io_t, circular_t >::io[direction::directions] |
|
protected |
|
protected |
|
protected |
|
inherited |
STL member.
|
inherited |
uint32_t dx::stream::engine< device_t, pin_t, driver_t, io_t, circular_t >::linesize |
|
inherited |
|
protectedinherited |
|
protected |
io[directions][double buffer][channel][sample]
|
protectedinherited |
struct { ... } dx::stream::engine< device_t, pin_t, driver_t, io_t, circular_t >::observer |
|
protected |
|
inherited |
direction::direction dx::stream::engine< device_t, pin_t, driver_t, io_t, circular_t >::reference |
|
inherited |
uint32_t dx::stream::engine< device_t, pin_t, driver_t, io_t, circular_t >::safety_offset {} |
volatile uint32_t* dx::stream::engine< device_t, pin_t, driver_t, io_t, circular_t >::samplerate |
uint32_t dx::stream::engine< device_t, pin_t, driver_t, io_t, circular_t >::samplerate |
|
inherited |
struct { ... } dx::stream::engine< device_t, pin_t, driver_t, io_t, circular_t >::sync |
int64_t dx::stream::engine< device_t, pin_t, driver_t, io_t, circular_t >::trigger |
resync condition
|
inherited |
(c) copyright 2009 dynamic acoustics e.U. | generated on Thu Jan 23 2025 |