WaveRT pin stream: exchanges the frames its device's tick hands it with its stream's ring.
More...
|
| void | advance (unsigned int frames) |
| | backend clock: frames elapsed; signals every crossed notification boundary
|
| void | exchange (dx::circular &circular, unsigned int frames, bool render) |
| | moves the frames elapsing with this tick between the WaveRT buffer and a ring
|
| | stream (::IPortWaveRTStream *port, backend &device, const struct desc_t::stream &desc, unsigned int idx, const ::WAVEFORMATEXTENSIBLE &wave) |
| void | tick (unsigned int frames) |
| | one tick: the elapsing frames move between this endpoint and its stream's ring
|
| | ~stream () override |
| | the derived stream stops itself before the buffer goes
|
|
| os_result | adopt (const dx::stream::format &ring) |
| | pairs this endpoint's format with the ring's; called once the endpoint proposed its own and the ring answered
|
| ::NTSTATUS __stdcall | AllocateAudioBuffer (unsigned long requested, ::MDL **mdl, unsigned long *actual, unsigned long *offset, ::MEMORY_CACHING_TYPE *cache) override final |
| ::NTSTATUS __stdcall | AllocateBufferWithNotification (unsigned long notifications, unsigned long requested, ::MDL **mdl, unsigned long *actual, unsigned long *offset, ::MEMORY_CACHING_TYPE *cache) override final |
| void __stdcall | FreeAudioBuffer (::MDL *mdl, unsigned long size) override final |
| void __stdcall | FreeBufferWithNotification (::MDL *, unsigned long) override final |
| ::NTSTATUS __stdcall | GetClockRegister (::KSRTAUDIO_HWREGISTER *) override final |
| void __stdcall | GetHWLatency (::KSRTAUDIO_HWLATENCY *latency) override final |
| ::NTSTATUS __stdcall | GetPosition (::KSAUDIO_POSITION *position) override final |
| ::NTSTATUS __stdcall | GetPositionRegister (::KSRTAUDIO_HWREGISTER *) override final |
| ::NTSTATUS __stdcall | RegisterNotificationEvent (::KEVENT *event) override final |
| ::NTSTATUS __stdcall | SetFormat (::KSDATAFORMAT *) override final |
| ::NTSTATUS __stdcall | SetState (::KSSTATE state) override final |
| ::NTSTATUS __stdcall | UnregisterNotificationEvent (::KEVENT *event) override final |
template<typename streaming_device_t>
class dxd::portcls::device< streaming_device_t >::stream
WaveRT pin stream: exchanges the frames its device's tick hands it with its stream's ring.
moves the frames elapsing with this tick between the WaveRT buffer and a ring
A render endpoint's buffer feeds the ring, a capture endpoint's is fed from it, each wrapped at its own end. The ring's producer index is shared, its consumers are not: this endpoint keeps its own read position, so control clients reading the same ring take the same data rather than each other's.