dxd - dynax driver framework 3.0.2
cross platform open source driver development framework
Loading...
Searching...
No Matches
dxd::audio::device< device_t > Class Template Reference

AudioDriverKit binding of a clocked streaming device: one IOUserAudioDevice per desc, one IOUserAudioStream per audio pin. More...

#include <dxd_audio.h>

Inheritance diagram for dxd::audio::device< device_t >:
Collaboration diagram for dxd::audio::device< device_t >:

Protected Member Functions

void conclude() override
os_result launch() override
 builds the HAL's objects from the desc once the device launched
void timestamp(uint64_t frame, int64_t timestamp)
 the clock ticked: the HAL's timeline advances one period, at the host time the period schedule names from the first tick on

Detailed Description

template<typename device_t>
class dxd::audio::device< device_t >

AudioDriverKit binding of a clocked streaming device: one IOUserAudioDevice per desc, one IOUserAudioStream per audio pin.

The device below owns the clock; the HAL's IO start counts as a start of its clock domain. Its tick hands timestamp() the frame and time it ran at: the zero timestamps are synthesized from the tick count and the period, so the HAL's clock sees the period and not the timer's jitter. The HAL takes its rates and safety offsets from the desc's clock, its formats from the pins.

Todo
the IO handler's exchange predates the ring's participant model (dxd CLAUDE.md, "A ring has two sides and at most one transport"): a HAL stream is a participant like a WaveRT endpoint - cursor, transport claim, mix for a client writer - whose endpoint logic belongs shared with wavert::stream, not duplicated

Member Function Documentation

◆ conclude()

template<typename device_t>
void dxd::audio::device<device_t>::conclude()
inlineoverrideprotected

◆ launch()

template<typename device_t>
os_result dxd::audio::device<device_t>::launch()
inlineoverrideprotected

builds the HAL's objects from the desc once the device launched

Here is the call graph for this function:

◆ timestamp()

template<typename device_t>
void dxd::audio::device<device_t>::timestamp(uint64_t frame, int64_t timestamp)
inlineprotected

the clock ticked: the HAL's timeline advances one period, at the host time the period schedule names from the first tick on

Here is the call graph for this function:
Here is the caller graph for this function:

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