|
dxd - dynax driver framework 3.0.0d222
cross platform open source driver development framework
|
a stream of a Windows MIDI Services endpoint: Universal MIDI Packets through the device's connection, an ump::circular ring on this side More...
#include <dx_midi_services_device.h>
Public Types | |
| typedef struct device_t::desc::stream | desc |
| typedef event< user > | event_t |
Public Member Functions | |
| stream & | attach (channel_t **[2], const std::vector< bool > &, direction::direction) try |
| the pin passes its own direction: a stream shared by two pins carries none of its own | |
| DX_PRAGMA_IGNORE_RETURN_VALUE_BEGIN | catch (const dx::exception &__dx_exception) |
| dx_catchall_handler (this,) ~stream() override | |
| virtual bool | encoder (dx::stream::encoder::index::type, unsigned int, float) |
| void | exception (const class exception &exception, bool filtered=false) const noexcept override |
| void | flush () |
| void | info (std::ostream &os) noexcept override try |
| virtual DX_PRAGMA_IGNORE_RETURN_VALUE_END void | initialize () try |
| void | launch () override try |
| operator ump::circular * () const noexcept | |
| DX_PRAGMA_IGNORE_RETURN_VALUE_END ump::circular * | operator-> () const noexcept |
| virtual bool | submit (dx::stream::encoder::index::type, unsigned int, uint8_t) |
| submit encoder stage to device return true if successfully submitted; if false is returned the encode state machine will not update the stage value (i.e. if the stage can't be submitted during streaming pause), given the chance to submit the stage at start(). | |
Public Attributes | |
| struct { | |
| uint32_t granularity | |
| uint32_t linesize | |
| dx::stream::clock::monitor * monitor | |
| os_result status | |
| } | cache |
| dx::stream::channel::control * | control |
| kernel streaming: the driver's buffer switch bookkeeping, set by attach() | |
| event_t | data [direction::directions] |
| event signalising data arrival(in) or draining(out) | |
| dx::promoted< dx::stream::format > | format |
| the container this stream's ring runs: class and width its participants agreed on | |
| uint32_t | granularity |
| const decltype(desc::target.idx()) | id |
| uint32_t | latency |
| uint32_t | linesize |
| dx::stream::clock::monitor * | monitor |
| decltype(device_t::samplerate) & | samplerate |
| os_result | status |
| bool | ticking |
| the tick's own view of this stream's session: set by the run hook once the ring stands, cleared by the halt hook before the session ends - a plain flag, the tick must never block on a promoted's transition | |
Protected Member Functions | |
| virtual void | alloc (size_t size, bool free=true) |
| dx_catchall (this->started=0;) public | |
| virtual void | free () noexcept |
| overrides may release further alloc()-acquired resources (request buffers, isoc pools, shared-memory attachments) alongside circular; called only from alloc()'s own self-cleanup or the destructor - never from halt()/stop(), so everything alloc() acquires stays live for the object's full lifetime | |
| void | transmit () noexcept try |
| the transmit thread: whole packets off the ring into the connection | |
| ~stream () override | |
Protected Attributes | |
| ump::circular * | circular |
| allocated once by initialize()/alloc(); released only by free() | |
a stream of a Windows MIDI Services endpoint: Universal MIDI Packets through the device's connection, an ump::circular ring on this side
in*: the connection's raw callback (the device's sink) writes the words it is handed into the ring and signals data[in]; it is the service's thread, so a ring that is full drops the words and counts them. out: the transmit thread reads whole packets off the ring and hands them to the connection, at most what one transmission takes, a run due at one moment in one transmission the service schedules; a writer signals data[in] after writing, the thread signals data[out] for every run it drained.
The connection stands while a stream runs: the first stream to run opens it, the last to halt closes it.
|
inherited |
|
inherited |
|
inlineoverrideprotected |
|
inlineprotectedvirtualinherited |
|
inlineinherited |
the pin passes its own direction: a stream shared by two pins carries none of its own
|
inlineinherited |
|
inlineprotected |
the connection taken, the out stream's transmit thread started, composed with the ring reset of the base
|
inlineoverrideinherited |
|
inlinevirtualinherited |
|
inlineoverridenoexceptinherited |
|
inlineinherited |
|
inlineprotectedvirtualnoexceptinherited |
|
inlineoverridenoexceptinherited |
|
inlinevirtualinherited |
< a shared ring takes the wider of its two directions
< this stream's own contribution: the frames its transport keeps ahead of/behind the ring
< a hosted stream attaches to the host's ring as it stands
|
inlineoverrideinherited |
|
inlinenoexceptinherited |
|
inlinenoexceptinherited |
|
inlinevirtualinherited |
submit encoder stage to device return true if successfully submitted; if false is returned the encode state machine will not update the stage value (i.e. if the stage can't be submitted during streaming pause), given the chance to submit the stage at start().
|
inlineprotectednoexcept |
the transmit thread: whole packets off the ring into the connection
| struct { ... } dx::stream::stream< device_t, ump::circular, control<object<device_t>>, event<user> >::cache |
|
protectedinherited |
allocated once by initialize()/alloc(); released only by free()
|
inherited |
kernel streaming: the driver's buffer switch bookkeeping, set by attach()
|
inherited |
event signalising data arrival(in) or draining(out)
|
inherited |
the container this stream's ring runs: class and width its participants agreed on
A bus that negotiates it installs its own server; without one the request stands. The seed is the desc's own pin format, so a stream that nobody contradicts runs what it was declared with.
|
inherited |
|
inherited |
|
inherited |
|
inherited |
|
inherited |
|
inherited |
|
inherited |
|
inherited |
the tick's own view of this stream's session: set by the run hook once the ring stands, cleared by the halt hook before the session ends - a plain flag, the tick must never block on a promoted's transition
| (c) copyright 2009 dynamic acoustics e.U. | generated on |