dxd - dynax driver framework 3.0.0d222
cross platform open source driver development framework
Loading...
Searching...
No Matches
dxd::portcls::device< streaming_device_t >::stream Class Reference

WaveRT pin stream: exchanges the frames its device's tick hands it with its stream's ring. More...

#include <dxd_portcls_audio.h>

Inheritance diagram for dxd::portcls::device< streaming_device_t >::stream:
Collaboration diagram for dxd::portcls::device< streaming_device_t >::stream:

Public Types

typedef class device backend
typedef struct desc_t::stream stream_desc

Public Member Functions

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

Public Attributes

os_result status

Protected Member Functions

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

Protected Attributes

const unsigned int channels
uint64_t consumed
 this endpoint's own read position in the ring it takes from
const dx::stream::format format
 what Windows negotiated for this endpoint
const unsigned int idx
const unsigned int linesize
const unsigned int samplerate
bool started

Friends

class device

Detailed Description

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.

Member Typedef Documentation

◆ backend

template<typename streaming_device_t>
typedef class device dxd::portcls::device< streaming_device_t >::stream::backend

◆ stream_desc

typedef struct desc_t::stream dxd::wavert::stream< struct desc_t::stream >::stream_desc
inherited

Constructor & Destructor Documentation

◆ stream()

template<typename streaming_device_t>
dxd::portcls::device< streaming_device_t >::stream::stream ( ::IPortWaveRTStream * port,
backend & device,
const struct desc_t::stream & desc,
unsigned int idx,
const ::WAVEFORMATEXTENSIBLE & wave )
inline
Here is the call graph for this function:

◆ ~stream()

template<typename streaming_device_t>
dxd::portcls::device< streaming_device_t >::stream::~stream ( )
inlineoverridevirtual

the derived stream stops itself before the buffer goes

Reimplemented from dxd::wavert::stream< struct desc_t::stream >.

Here is the call graph for this function:

Member Function Documentation

◆ adopt()

os_result dxd::wavert::stream< struct desc_t::stream >::adopt ( const dx::stream< struct desc_t::stream >::format & ring)
inlineprotectedinherited

pairs this endpoint's format with the ring's; called once the endpoint proposed its own and the ring answered

Here is the call graph for this function:

◆ advance()

void dxd::wavert::stream< struct desc_t::stream >::advance ( unsigned int frames)
inlineinherited

backend clock: frames elapsed; signals every crossed notification boundary

Here is the caller graph for this function:

◆ AllocateAudioBuffer()

::NTSTATUS __stdcall dxd::wavert::stream< struct desc_t::stream >::AllocateAudioBuffer ( unsigned long requested,
::MDL ** mdl,
unsigned long * actual,
unsigned long * offset,
::MEMORY_CACHING_TYPE * cache )
inlinefinaloverrideprotectedinherited
Here is the call graph for this function:

◆ AllocateBufferWithNotification()

::NTSTATUS __stdcall dxd::wavert::stream< struct desc_t::stream >::AllocateBufferWithNotification ( unsigned long notifications,
unsigned long requested,
::MDL ** mdl,
unsigned long * actual,
unsigned long * offset,
::MEMORY_CACHING_TYPE * cache )
inlinefinaloverrideprotectedinherited

IMiniportWaveRTStreamNotification

Here is the call graph for this function:

◆ exchange()

void dxd::wavert::stream< struct desc_t::stream >::exchange ( dx::circular & circular,
unsigned int frames,
bool render )
inlineinherited

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.

Here is the caller graph for this function:

◆ FreeAudioBuffer()

void __stdcall dxd::wavert::stream< struct desc_t::stream >::FreeAudioBuffer ( ::MDL * mdl,
unsigned long size )
inlinefinaloverrideprotectedinherited
Here is the call graph for this function:

◆ FreeBufferWithNotification()

void __stdcall dxd::wavert::stream< struct desc_t::stream >::FreeBufferWithNotification ( ::MDL * ,
unsigned long  )
inlinefinaloverrideprotectedinherited

◆ GetClockRegister()

::NTSTATUS __stdcall dxd::wavert::stream< struct desc_t::stream >::GetClockRegister ( ::KSRTAUDIO_HWREGISTER * )
inlinefinaloverrideprotectedinherited

◆ GetHWLatency()

void __stdcall dxd::wavert::stream< struct desc_t::stream >::GetHWLatency ( ::KSRTAUDIO_HWLATENCY * latency)
inlinefinaloverrideprotectedinherited

◆ GetPosition()

::NTSTATUS __stdcall dxd::wavert::stream< struct desc_t::stream >::GetPosition ( ::KSAUDIO_POSITION * position)
inlinefinaloverrideprotectedinherited

◆ GetPositionRegister()

::NTSTATUS __stdcall dxd::wavert::stream< struct desc_t::stream >::GetPositionRegister ( ::KSRTAUDIO_HWREGISTER * )
inlinefinaloverrideprotectedinherited

◆ RegisterNotificationEvent()

::NTSTATUS __stdcall dxd::wavert::stream< struct desc_t::stream >::RegisterNotificationEvent ( ::KEVENT * event)
inlinefinaloverrideprotectedinherited

◆ SetFormat()

::NTSTATUS __stdcall dxd::wavert::stream< struct desc_t::stream >::SetFormat ( ::KSDATAFORMAT * )
inlinefinaloverrideprotectedinherited

IMiniportWaveRTStream

◆ SetState()

::NTSTATUS __stdcall dxd::wavert::stream< struct desc_t::stream >::SetState ( ::KSSTATE state)
inlinefinaloverrideprotectedinherited
Here is the call graph for this function:

◆ tick()

template<typename streaming_device_t>
void dxd::portcls::device< streaming_device_t >::stream::tick ( unsigned int frames)
inline

one tick: the elapsing frames move between this endpoint and its stream's ring

Here is the call graph for this function:

◆ UnregisterNotificationEvent()

::NTSTATUS __stdcall dxd::wavert::stream< struct desc_t::stream >::UnregisterNotificationEvent ( ::KEVENT * event)
inlinefinaloverrideprotectedinherited

◆ device

template<typename streaming_device_t>
friend class device
friend

Member Data Documentation

◆ channels

const unsigned int dxd::wavert::stream< struct desc_t::stream >::channels
protectedinherited

◆ consumed

uint64_t dxd::wavert::stream< struct desc_t::stream >::consumed
protectedinherited

this endpoint's own read position in the ring it takes from

◆ format

const dx::stream::format dxd::wavert::stream< struct desc_t::stream >::format
protectedinherited

what Windows negotiated for this endpoint

◆ idx

const unsigned int dxd::wavert::stream< struct desc_t::stream >::idx
protectedinherited

◆ linesize

const unsigned int dxd::wavert::stream< struct desc_t::stream >::linesize
protectedinherited

◆ samplerate

const unsigned int dxd::wavert::stream< struct desc_t::stream >::samplerate
protectedinherited

◆ started

bool dxd::wavert::stream< struct desc_t::stream >::started
protectedinherited

◆ status

os_result dxd::wavert::stream< struct desc_t::stream >::status
inherited

The documentation for this class was generated from the following file:

(c) copyright 2009 dynamic acoustics e.U. generated on

a closed source license may be obtained by requesting a written permission from dynamic acoustics e.U.
however - governmental use generally and military use especially is strictly prohibited though.