|
dxd - dynax driver framework 3.0.0d222
cross platform open source driver development framework
|
WASAPI client streaming device interface class. More...
#include <dx_wasapi_client_device.h>
Classes | |
| struct | property |
| beside the generic settings: the share mode this device's endpoints are opened in, which decides whether a rate other than the engine's mix format is reachable at all More... | |
Public Types | |
| typedef desc_t | desc_t |
| typedef event | event_t |
| typedef std::conditional_t< std::is_void_v< group_t >, dx::stream::group< device >, group_t > | group_t |
| bus devices driving their groups' tick pass their own group type | |
| typedef promoted< uint32_t >::template preference< decltype(dx::stream::control< dx::device< std::string, preference_t > >::preference)> | source_t |
Public Member Functions | |
| _device (decltype(super::driver)&driver, decltype(super::id)&id) | |
| the WASAPI stream device class constructor | |
| void | attach (channel_t **io[dx::stream::direction::directions][2], const std::vector< bool >(&channel_map)[2]) |
| void | conclude () noexcept override |
| ends every group's session before the device's resources go; the start counts stay with their holders | |
| void | exception (const dx::exception &exception, bool filtered=false) const noexcept override |
| virtual uint64_t | frame () const |
| virtual bool | hw_clock () const noexcept |
| virtual void | hw_clock (abstract::event *hw_clock, uint32_t iosize) |
| registers a consumer with the device's clock: it is signalled every iosize samples of the clock's own advance. A bus whose driver owns the clock hands the registration on instead | |
| void | info (std::ostream &os) noexcept override |
| std::shared_ptr< stream_t > | open (const typename desc_t::stream::desc &desc) |
| the desc's stream: the registered one, else created, registered and launched | |
| group_t & | operator[] (const typename desc_t::stream::desc &stream) |
| the stream's group, created on first use | |
| _device & | reset () |
| virtual std::pair< source_t &, bool > | source (const struct desc_t::stream &stream) |
| the stream's source selector, created on first use: the preference by stream target, the value an index into the stream's sources | |
| std::string | string (uint8_t) |
| void | wake () override |
| ~_device () override | |
Public Attributes | |
| dx::shared::lockfree::list< registration > | clock |
| the tick walks it without a lock | |
| promoted< uint32_t >::preference< decltype(super::preference)> | clocksource |
| dx::stream::clock::consumer | consumer |
| abstract::event * | event |
| std::map< decltype(desc_t::stream::group), group_t > | group |
| streaming groups by desc::stream::group id: every stream of this device is registered with its group - behind the settings its groups listen to, so they go first | |
| struct { | |
| struct registration { | |
| dx::stream::clock::consumer consumer | |
| abstract::event * event | |
| volatile bool reset {} | |
| } | |
| dx::shared::lockfree::list< registration > clock | |
| the tick walks it without a lock More... | |
| uint32_t iosize | |
| staging value for registration paths without their own iosize argument (macOS CF property bridge) More... | |
| std::mutex mutex | |
| the registrations' writers More... | |
| std::map< abstract::event *, std::unique_ptr< registration > > registrations | |
| } | hw |
| promoted< std::string >::preference< decltype(super::preference)> | icon |
| promoted< uint32_t >::preference< decltype(super::preference)> | iosize |
| uint32_t | iosize |
| staging value for registration paths without their own iosize argument (macOS CF property bridge) | |
| dx::stream::device::monitor | monitor |
| std::mutex | mutex |
| the registrations' writers | |
| std::map< abstract::event *, std::unique_ptr< registration > > | registrations |
| promoted< uint32_t >::preference< decltype(super::preference)> | samplerate |
| std::map< decltype(desc_t::stream::target.idx()), source_t > | sources |
| promoted< uint32_t > | start {0} |
| promoted< bool > | started {false} |
| promoted< structdesc_t::stream * >::template preference< decltype(super::preference), uint32_t > | sync_reference |
| dx::stream::device::monitor | version |
Static Public Attributes | |
| static constexpr bool | hosted |
| the transport's settings belong to another process' device: a hosted device mirrors them through its chains, it keeps no store of them | |
Protected Member Functions | |
| virtual void | grouped (group_t &) |
| operator[](): a group just came into existence, a host wires its per-group transports here | |
Protected Attributes | |
| std::function< void()> | flush_hook = []{} |
| std::function< void()> | halt_hook = []{} |
| std::function< void()> | run_hook = []{} |
| decltype(super::samplerate) ::chain | samplerate_server |
| exclusive: every stream's client is recreated at the aligned rate, paused across it; shared: the engine's mix format rate is the only one | |
WASAPI client streaming device interface class.
One audio adapter: its desc is synthesized from its active endpoints, one stream with one pin, one clock and one group per endpoint. The share mode is the device's property: shared streams in the audio engine's mix format, exclusive streams in the first sample format the endpoint takes, at every standard rate it takes it.
| In | case of an error returned by the underlaying API the device class throws a dx::exception. |
|
inherited |
|
inherited |
|
inherited |
bus devices driving their groups' tick pass their own group type
|
inherited |
|
inline |
the WASAPI stream device class constructor
< the endpoints follow the first one's rate; a shared mode engine converts its own mix format to it
< only a rate every endpoint takes can be the domain's - in shared mode the engine converts instead, so the reference's rate stands
|
inlineoverride |
|
inlineinherited |
|
inlineoverridenoexceptinherited |
ends every group's session before the device's resources go; the start counts stay with their holders
|
inlineoverridenoexcept |
|
inlinevirtual |
|
inlineprotectedvirtualinherited |
operator[](): a group just came into existence, a host wires its per-group transports here
|
inlinevirtualnoexceptinherited |
|
inlinevirtualinherited |
registers a consumer with the device's clock: it is signalled every iosize samples of the clock's own advance. A bus whose driver owns the clock hands the registration on instead
|
inlineoverridenoexcept |
|
inlineinherited |
the desc's stream: the registered one, else created, registered and launched
|
inlineinherited |
the stream's group, created on first use
|
inline |
|
inlinevirtualinherited |
the stream's source selector, created on first use: the preference by stream target, the value an index into the stream's sources
|
inline |
|
inlineoverrideinherited |
|
inherited |
the tick walks it without a lock
|
inherited |
|
inherited |
|
inherited |
|
protectedinherited |
|
inherited |
streaming groups by desc::stream::group id: every stream of this device is registered with its group - behind the settings its groups listen to, so they go first
|
protectedinherited |
|
staticconstexprinherited |
the transport's settings belong to another process' device: a hosted device mirrors them through its chains, it keeps no store of them
| struct { ... } dx::stream::device< dx::stream::control< dx::device< std::string, preference_t > >, desc_t, stream_t, group_t >::hw |
|
inherited |
|
inherited |
|
inherited |
staging value for registration paths without their own iosize argument (macOS CF property bridge)
|
inherited |
|
inherited |
the registrations' writers
|
inherited |
|
protectedinherited |
|
inherited |
|
protected |
exclusive: every stream's client is recreated at the aligned rate, paused across it; shared: the engine's mix format rate is the only one
|
inherited |
source selectors by stream target: a stream with sources gets its own on first use
|
inherited |
|
inherited |
|
inherited |
|
inherited |
| (c) copyright 2009 dynamic acoustics e.U. | generated on |