|
dxd - dynax driver framework 3.0.1d223
cross platform open source driver development framework
|
generic stream interface More...
Namespaces | |
| namespace | bus |
| the bus a device hangs on, as the system reports it: the transport type of a CoreAudio device (desc::bus), named by IOKit's own list where it names one and by CoreAudio's else | |
| namespace | channel |
| generic stream::channel interface | |
| namespace | direction |
| namespace | engine |
| namespace | plug |
| what a pin is wired to - the plug on the device, as a system names it: CoreAudio's terminal type (pin::plug), Windows' endpoint form factor, and dxd's own for what neither names. A USB device answers its terminal id instead, which from::usb turns into one of these at the source, so the field carries one vocabulary | |
| namespace | role |
| namespace | shared |
| shared stream namespace | |
Classes | |
| struct | clock |
| select/get stream sample rate/iosize More... | |
| struct | clock_value |
| a value asked of, or answered by, one clock domain (sample rate, clock source) More... | |
| class | control |
| promoted-counter refcount: start counts, started derives (start!= 0); run_hook fires on the 0->nonzero edge, halt_hook on the nonzero->0 edge, flush_hook before every effective decrement (including one that doesn't reach zero). One central mechanism, reused by inheritance wherever a level still needs its own share-count (pin's per-client attribution; stream, which also owns the ring reset in its own run_hook; group, whose hooks are its own dx::clock run()/halt()) - hooks are set by the derived class's own constructor body, exactly how dx::stream::group already wired its hand-rolled start/streaming pair. More... | |
| struct | cursor |
| a client's own place in a ring and the margin it keeps to the transport More... | |
| struct | desc |
| device streaming interface descriptor More... | |
| class | device |
| a streaming device: its desc, the settings the desc defaults, the streams of that desc grouped by dx::stream::group and the clock those groups run on. Every bus device derives from this one and supplies what its transport does differently - the settings' servers (a rate written to the hardware), the group's tick, the streams' rings. The settings themselves are promoted preferences here, so a wish survives the device and is asked of the transport once the device is there. More... | |
| class | driver |
| stream driver interface class More... | |
| union | encoder |
| the per channel controls a stream carries; what a device does not have is emulated where it has the gain, and the host publishes one control per bit More... | |
| struct | format |
| what one sample frame looks like, container and content apart: the resolution inside the container's size, its alignment there and its endianness. operator == is a match against a wish, not an identity: a member left at zero in the asked format matches anything, which is how a pin states audio alone and a ring adopts the one format its participants agree on (dx::stream::format::align). The named constants below are the formats the converters of dx_circular.h move - dx::stream::sample keys them. More... | |
| struct | format_value |
| a stream's negotiated sample format, addressed by the bus's own stream target More... | |
| class | group |
| streaming group: the streams of one device sharing a desc::stream::group id, streamed together by one realtime thread More... | |
| struct | iosize |
| a client's share of a clock domain: the samples between its buffer switches and the event the clock signals it on More... | |
| class | object |
| everything that belongs to one device: it keeps the reference and hands its diagnostics to the device, so a stream, a pin or a group reports as the device does More... | |
| struct | open |
| generic stream open request More... | |
| struct | opened |
| generic shared streaming buffer description More... | |
| class | pin |
| one client's attachment to a stream: the pin desc it was made from, the channels it takes of that stream's ring, and its own share of the stream's start count. Several pins - several clients - share one dx::stream::stream, which the device keeps by weak reference: the first pin of a stream creates it, the last one to go releases it, and neither stops a transport the others still run. More... | |
| struct | settings |
| a group's settings per side of its ring: the side's wait strategy on the clock and its lead per direction. The owner keeps them in its store, keyed and defaulted by role; a hosted device (device_t::hosted) mirrors the transport's through its mirror type, each born with the transport that asks the host More... | |
| struct | settings_promoted |
| struct | settings_promoted< device_t, false > |
| a hosted device's, born with the transport to its host (dx_value.h: no promoted is born empty) More... | |
| class | start |
| RAII object start/stop balancer. More... | |
| class | stream |
| one stream of the device's desc while it is in use: the ring its clients share, the format they agreed on, and the session its dx::stream::control counts. The ring is allocated once (alloc()/free(), never across a start/stop cycle) and reset by its host alone at a session start - a participant mapping another's ring replaces the run hook and anchors a cursor instead. Bus streams derive from this one: a pipe, a shared memory ring, the kernel's mapping. More... | |
Typedefs | |
| typedef std::vector< std::pair< std::string, uint32_t > > | named |
| a choice's or a bitmap's entries: the name shown, the value or bit it stands for | |
Enumerations | |
| enum class | setting : uint8_t { sync_strategy , safety_offset_out , safety_offset_in , sync_reference , source , settings } |
| the settings a host keeps for its clients (stream::device::setting()): a client's mirror (device_t::mirror, a promoted born with the transport to the host) addresses one by it and, where it is one per stream (source), the stream's index More... | |
Functions | |
| template<template< typename > class op_t> | |
| auto | sample (format format) |
generic stream interface
streaming interface namespace
| typedef std::vector<std::pair<std::string, uint32_t> > dx::stream::named |
a choice's or a bitmap's entries: the name shown, the value or bit it stands for
|
strong |
the settings a host keeps for its clients (stream::device::setting()): a client's mirror (device_t::mirror, a promoted born with the transport to the host) addresses one by it and, where it is one per stream (source), the stream's index
| Enumerator | |
|---|---|
| sync_strategy | |
| safety_offset_out | |
| safety_offset_in | |
| sync_reference | |
| source | |
| settings | |
applies op_t to the sample type a format is carried in and yields its value, {} for a format none carries - searched linearly: format's wildcard operator== is no strict weak ordering, a map would miss keys
| (c) copyright 2009 dynamic acoustics e.U. | generated on |