typedef struct oss_audioinfo
{
int dev; /* Audio device number */
char name[64];
int busy; /* 0, OPEN_READ, OPEN_WRITE or OPEN_READWRITE */
int pid;
int caps; /* DSP_CAP_INPUT, DSP_CAP_OUTPUT */
int iformats, oformats;
int magic; /* Reserved for internal use */
char cmd[64]; /* Command using the device (if known) */
int card_number;
int port_number;
int mixer_dev;
int real_device; /* This is the right /dev/dsp# device to open */
int enabled; /* 1=enabled, 0=device not ready at this moment */
int flags; /* For internal use only - no practical meaning */
int min_rate, max_rate; /* Sample rate limits */
int min_channels, max_channels; /* Number of channels supported */
int binding; /* DSP_BIND_FRONT, etc. 0 means undefined */
int rate_source;
char handle[32];
int nrates, rates[20]; /* Please read the manual before using these */
oss_longname_t song_name; /* Song name (if given) */
oss_label_t label_name; /* Device label (if given) */
int filler[195];
} oss_audioinfo;This ioctl is meant to go straight to the hardware, reporting only what's supported natively by the hardware. That rules out emulating SNDCTL_DSP_GETCAPS/GETFMTS, because they both depend on the intermediate channel interface. Mailed netchild & ariff for advice.
field |
TODO |
dev |
unit number? |
name |
device_get_desc() |
busy |
examine read and write channel flags for CHN_F_BUSY |
pid |
XXX -- this depends on the channel opened; with virtual channels, multiple processes may have a single HW device |
caps |
XXX -- need way to get to driver capabilties, formats, etc. w/o touching channel interface |
iformats |
XXX -- same caveat as caps |
ofortmats |
XXX -- same caveat as caps |
cmd |
XXX -- see pid |
card_number |
set to -1 for now (not very useful; OSS docs recommend not using this field) |
song_name |
write SNDCTL_{GET,SET}SONG first |
label |
write SNDCTL_{GET,SET}LABEL first |
port_number |
|
mixer_dev |
|
real_device |
unit number -- corresponds to /dev/dspN |
devnode |
cdev->si_name |
enabled |
device_t dev->state >= DS_ATTACHED |
min_rate, max_rate |
XXX -- same caveat as caps |
min_channels, max_channels |
1 = mono, 2 = stereo, etc.; XXX -- same caveat as caps |
binding |
not officially part of OSS; see SNDCTL_DSP_BIND_CHANNEL |
rate_source |
sample rate group? unsure. |
handle |
constant identifier -- (ex: PCI slot number, etc.) think about this later |
nrates, rates |
not exported by card drivers; would need to touch them all |