dxd - dynax driver framework 3.0.1d223
cross platform open source driver development framework
Loading...
Searching...
No Matches
dx::stream Namespace Reference

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)

Detailed Description

generic stream interface

streaming interface namespace

Typedef Documentation

◆ named

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

Enumeration Type Documentation

◆ setting

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 

Function Documentation

◆ sample()

template<template< typename > class op_t>
auto dx::stream::sample ( format format)

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

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

(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.