sndio: Update to the new device info system.

This commit is contained in:
David Reid
2026-01-15 17:33:11 +10:00
parent 06394e8e90
commit 17a3941c94
+41 -23
View File
@@ -37328,39 +37328,57 @@ static ma_device_enumeration_result ma_context_enumerate_device_from_handle__snd
le = caps.enc[iEncoding].le; le = caps.enc[iEncoding].le;
msb = caps.enc[iEncoding].msb; msb = caps.enc[iEncoding].msb;
format = ma_format_from_sio_enc__sndio(bits, bps, sig, le, msb); format = ma_format_from_sio_enc__sndio(bits, bps, sig, le, msb);
if (format == ma_format_unknown) { if (format != ma_format_unknown) {
continue; /* Format not supported. */ unsigned int minChannels = 0xFFFFFFFF;
} unsigned int maxChannels = 0;
unsigned int minSampleRate = 0xFFFFFFFF;
unsigned int maxSampleRate = 0;
/* Channels. */
for (iChannel = 0; iChannel < MA_SIO_NCHAN; iChannel += 1) {
unsigned int chan = 0;
/* Channels. */ if (deviceType == ma_device_type_playback) {
for (iChannel = 0; iChannel < MA_SIO_NCHAN; iChannel += 1) { chan = caps.confs[iConfig].pchan;
unsigned int chan = 0; } else {
unsigned int channels; chan = caps.confs[iConfig].rchan;
}
if (deviceType == ma_device_type_playback) { if ((chan & (1UL << iChannel)) != 0) {
chan = caps.confs[iConfig].pchan; unsigned int channels;
} else {
chan = caps.confs[iConfig].rchan; if (deviceType == ma_device_type_playback) {
channels = caps.pchan[iChannel];
} else {
channels = caps.rchan[iChannel];
}
if (minChannels > channels) {
minChannels = channels;
}
if (maxChannels < channels) {
maxChannels = channels;
}
}
} }
if ((chan & (1UL << iChannel)) == 0) {
continue;
}
if (deviceType == ma_device_type_playback) {
channels = caps.pchan[iChannel];
} else {
channels = caps.rchan[iChannel];
}
/* Sample Rates. */ /* Sample Rates. */
for (iRate = 0; iRate < MA_SIO_NRATE; iRate += 1) { for (iRate = 0; iRate < MA_SIO_NRATE; iRate += 1) {
if ((caps.confs[iConfig].rate & (1UL << iRate)) != 0) { if ((caps.confs[iConfig].rate & (1UL << iRate)) != 0) {
ma_device_info_add_native_data_format(&deviceInfo, format, channels, caps.rate[iRate], 0); unsigned int sampleRate = caps.rate[iRate];
if (minSampleRate > sampleRate) {
minSampleRate = sampleRate;
}
if (maxSampleRate < sampleRate) {
maxSampleRate = sampleRate;
}
} }
} }
ma_device_info_add_native_data_format_2(&deviceInfo, format, minChannels, maxChannels, minSampleRate, maxSampleRate);
} else {
/* Format not supported. */
} }
} }
} }