|
dxd - dynax driver framework 2.6.0d212
cross platform open source driver development framework
|
#include <dx_asio_driver.h>
Classes | |
| class | pause |
| struct | property |
Public Member Functions | |
| driver (const super::match &matching_ids, const char *product_id, ::IUnknown *unknown, ::HRESULT *result) | |
Protected Types | |
| typedef dx::clock< typename device_t::event_t > | clock |
| typedef device_t::desc_t | desc |
Protected Member Functions | |
| dx_catchall_handler(this,) using super void | arrived () override try |
| notify device arrivals completed stub | |
| ::ASIOError | canSampleRate (::ASIOSampleRate samplerate) noexcept override |
| void | conclude () noexcept override |
| 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. | |
| ::ASIOError | controlPanel () noexcept override |
| ::ASIOError | createBuffers (::ASIOBufferInfo *info, long channels, long iosize, ::ASIOCallbacks *callbacks) noexcept override |
| virtual void | detach () noexcept |
| ::ASIOError | disposeBuffers () noexcept override |
| dx_catchall_rethrow () void exception(const exception &exception | |
| dx_catchall_rethrow () void wake() override try | |
| dx_catchall_rethrow () uint32_t samplerate() const try | |
| ::ASIOError | future (long selector, void *) noexcept override |
| ::ASIOError | getBufferSize (long *min, long *max, long *preferred, long *granularity) noexcept override |
| ::ASIOError | getChannelInfo (::ASIOChannelInfo *info) noexcept override |
| ::ASIOError | getChannels (long *ins, long *outs) noexcept override |
| ::ASIOError | getClockSources (::ASIOClockSource *clocks, long *sources) noexcept override |
| void | getDriverName (char *name) noexcept override |
| long | getDriverVersion () noexcept override |
| void | getErrorMessage (char *string) noexcept override |
| ::ASIOError | getLatencies (long *rx, long *tx) noexcept override |
| ::ASIOError | getSamplePosition (::ASIOSamples *samples, ::ASIOTimeStamp *timestamp) noexcept override |
| Inquires the sample position/time stamp pair. | |
| ::ASIOError | getSampleRate (::ASIOSampleRate *samplerate) noexcept override |
| virtual void | halt () noexcept |
| stop and remove clock thread | |
| ::ASIOBool | init (void *) noexcept override |
| void | initialize (const typename std::chrono::high_resolution_clock::duration &duration) |
| void | initialize (uint32_t iosize, const std::vector< bool >(&channel_map)[2]) try |
| realtime & | initialize (const std::chrono::high_resolution_clock::duration &resolution) |
| DECLARE_IUNKNOWN ::HRESULT STDMETHODCALLTYPE | NonDelegatingQueryInterface (const ::IID &riid, void **object) noexcept override |
| void | notify () noexcept override |
| notify change from device requiring streaming reset | |
| void | notify (unsigned int samplerate) noexcept override |
| notify sample rate change from device | |
| operator event_t & () noexcept | |
| operator event_t * () noexcept | |
| ::ASIOError | outputReady () noexcept override |
| void | overload () noexcept override |
| void | process (int64_t timestamp) noexcept override |
| dx_catchall_rethrow() using super void | removed (device_t &device) noexcept override |
| void | run () override try |
| start streaming engine | |
| void | samplerate (uint32_t samplerate) try |
| ::ASIOError | setClockSource (long index) noexcept override |
| ::ASIOError | setSampleRate (::ASIOSampleRate samplerate) noexcept override |
| void | sleep () override try |
| ::ASIOError | start () noexcept override |
| ::ASIOError | stop () noexcept override |
| virtual void | sync (const typename std::chrono::high_resolution_clock::time_point &now) |
| void | sync (const std::chrono::high_resolution_clock::time_point &now) override try |
| virtual void | tick ()=0 |
| void | update () noexcept try |
| virtual clock & | wait (bool reset=false) try |
| ~driver () noexcept | |
Protected Attributes | |
| struct { | |
| circular_t * circular [direction::directions] | |
| force_read force_read | |
| force_write force_write | |
| struct { | |
| 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 |
| ::ASIOCallbacks * | callbacks = nullptr |
| redirect::file | cerr |
| typename pin_t::circular_t * | circular [direction::directions] |
| redirect::file | clog |
| std::shared_ptr< device_t > | device |
| std::chrono::high_resolution_clock::duration | duration |
| event_t | event |
| bool | filtered |
| force_read | force_read |
| force_write | force_write |
| dx_catchall_rethrow() std uint64_t | frame |
| bool | hw_clock |
| uint32_t | interval |
| clock resolution: HW stream frame size in samples | |
| struct { | |
| uint32_t interval | |
| clock resolution: HW stream frame size in samples More... | |
| uint32_t linesize | |
| uint32_t safety_offset | |
| } | io [direction::directions] |
| int32_t ** | io [direction::directions][2] |
| uint32_t | iosize |
| bool | kernel_streaming |
| uint32_t | linesize |
| std::string | log_path |
| dx::stream::clock::monitor * | monitor |
| io[directions][double buffer][channel][sample] | |
| std::mutex | mutex |
| std::chrono::high_resolution_clock::time_point | objective |
| bool | paused = false |
| direction::direction | reference |
| std::atomic< bool > | running |
| uint32_t | safety_offset |
| uint64_t | sample_position = 0 |
| uint32_t | samplerate |
| os_result | status = not_initialized |
| bool | streaming = false |
| keeps track of the start/stop state of the streaming engine | |
| struct { | |
| 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 |
| bool | time_code = false |
| indicate to generate time code | |
| bool | time_info = false |
| indicate ASIO host supports time info | |
| int64_t | trigger |
| resync condition | |
|
protectedinherited |
|
inherited |
|
inlineprotectednoexcept |
|
inline |
|
inlineoverrideprotectedinherited |
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.
|
inlineoverrideprotectednoexcept |
|
inlineoverridenoexceptinherited |
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.
|
inlineoverrideprotectednoexcept |
|
inlineoverrideprotectednoexcept |
|
inlinevirtualnoexceptinherited |
|
inlineoverrideprotectednoexcept |
|
protected |
|
inlineoverrideprotectedvirtual |
Implements dx::stream::engine< device_t, pin_t, driver_t >.
|
inlineinherited |
|
inlineoverrideprotectednoexcept |
|
inlineoverrideprotectednoexcept |
todo set limits for Windows clock if no ASIO clock IRQ is available or if HW clock is already in use
|
inlineoverrideprotectednoexcept |
|
inlineoverrideprotectednoexcept |
|
inlineoverrideprotectednoexcept |
|
inlineoverrideprotectednoexcept |
|
inlineoverrideprotectednoexcept |
|
inlineoverrideprotectednoexcept |
|
inlineoverrideprotectednoexcept |
|
inlineoverrideprotectednoexcept |
Inquires the sample position/time stamp pair.
In order to be able to synchronize properly, the sample position / time stamp pair must refer to the current block, that is, the engine will call ASIOGetSamplePosition() in its bufferSwitch() callback and expect the time for the first sample of the current block. Thus, when requested in the very first bufferSwitch after ASIOStart(), the sample position should be zero, and the time stamp should refer to the very time where the stream was started. It also means that the sample position must be block aligned. The driver must ensure proper interpolation if the system time can not be determined for the block position. The driver is responsible for precise time stamps as it usually has most direct access to lower level resources. Proper behavior of ASIOGetSamplePosition() and ASIOGetLatencies() are essential for precise media synchronization!
| If | no input/output is present, ASE_NotPresent will be returned. If there is no clock, ASE_SPNotAdvancing will be returned. |
| samples | will hold the sample position on return. The sample position is reset to zero when ASIOStart() gets called. |
| timestamp | will hold the system time on return when the sample position was latched |
|
inlineoverrideprotectednoexcept |
|
inlinevirtualnoexceptinherited |
stop and remove clock thread
|
inlineoverrideprotectednoexcept |
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
|
inlineoverrideprotectednoexcept |
|
inlineoverrideprotectedvirtualnoexcept |
notify change from device requiring streaming reset
Reimplemented from dx::clock< device_t::event_t >.
|
inlineoverrideprotectedvirtualnoexcept |
notify sample rate change from device
Reimplemented from dx::stream::engine< device_t, pin_t, driver_t >.
|
inlinenoexceptinherited |
|
inlinenoexceptinherited |
|
inlineoverrideprotectednoexcept |
|
inlineoverrideprotectedvirtualnoexcept |
Reimplemented from dx::stream::engine< device_t, pin_t, driver_t >.
|
inlineoverrideprotectednoexcept |
|
inlineoverrideprotectednoexceptinherited |
|
inlineoverridevirtualinherited |
start streaming engine
Reimplemented from dx::clock< device_t::event_t >.
|
inlineinherited |
|
inlineoverrideprotectednoexcept |
|
inlineoverrideprotectednoexcept |
|
inlineoverrideprotected |
|
inlineoverrideprotectednoexcept |
|
inlineoverrideprotectednoexcept |
|
inlineprotectedvirtualinherited |
|
inlineoverrideprotectedinherited |
|
protectedpure virtualinherited |
|
inlineprotectednoexceptinherited |
|
inlinevirtualinherited |
| struct { ... } dx::stream::engine< device_t, pin_t, driver_t, int32_t, typename pin_t::circular_t >::cache |
|
protected |
|
protected |
|
inherited |
|
protected |
|
protectedinherited |
|
protectedinherited |
|
protected |
|
inherited |
|
inherited |
|
protectedinherited |
|
protectedinherited |
|
inherited |
clock resolution: HW stream frame size in samples
| struct { ... } dx::stream::engine< device_t, pin_t, driver_t, int32_t, typename pin_t::circular_t >::io[direction::directions] |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
inherited |
|
protected |
|
protectedinherited |
io[directions][double buffer][channel][sample]
|
protectedinherited |
|
protected |
|
inherited |
|
protectedinherited |
|
inherited |
|
protected |
|
inherited |
|
protected |
|
protected |
keeps track of the start/stop state of the streaming engine
| struct { ... } dx::stream::engine< device_t, pin_t, driver_t, int32_t, typename pin_t::circular_t >::sync |
|
protected |
indicate to generate time code
|
protected |
indicate ASIO host supports time info
|
inherited |
resync condition
| (c) copyright 2009 dynamic acoustics e.U. | generated on |