mirror of
https://github.com/mackron/miniaudio.git
synced 2026-04-22 00:06:59 +02:00
PipeWire: Update to the new device info system.
This commit is contained in:
@@ -1693,11 +1693,12 @@ static ma_device_enumeration_result ma_context_enumerate_default_device_by_type_
|
||||
ma_strncpy_s(deviceInfo.name, sizeof(deviceInfo.name), "Default Capture Device", (size_t)-1);
|
||||
}
|
||||
|
||||
/* Data Format. */
|
||||
deviceInfo.nativeDataFormats[deviceInfo.nativeDataFormatCount].format = ma_format_unknown;
|
||||
deviceInfo.nativeDataFormats[deviceInfo.nativeDataFormatCount].channels = 0;
|
||||
deviceInfo.nativeDataFormats[deviceInfo.nativeDataFormatCount].sampleRate = 0;
|
||||
deviceInfo.nativeDataFormatCount += 1;
|
||||
/* Data Format. PipeWire supports everything. Its maximum channel count is 64. */
|
||||
ma_device_info_add_native_data_format_2(&deviceInfo, ma_format_f32, 1, 64, ma_standard_sample_rate_min, ma_standard_sample_rate_max);
|
||||
ma_device_info_add_native_data_format_2(&deviceInfo, ma_format_s16, 1, 64, ma_standard_sample_rate_min, ma_standard_sample_rate_max);
|
||||
ma_device_info_add_native_data_format_2(&deviceInfo, ma_format_s32, 1, 64, ma_standard_sample_rate_min, ma_standard_sample_rate_max);
|
||||
ma_device_info_add_native_data_format_2(&deviceInfo, ma_format_s24, 1, 64, ma_standard_sample_rate_min, ma_standard_sample_rate_max);
|
||||
ma_device_info_add_native_data_format_2(&deviceInfo, ma_format_u8, 1, 64, ma_standard_sample_rate_min, ma_standard_sample_rate_max);
|
||||
|
||||
return callback(deviceType, &deviceInfo, pUserData);
|
||||
}
|
||||
@@ -1902,10 +1903,11 @@ static void ma_registry_event_global_add_enumeration_by_type__pipewire(ma_enumer
|
||||
|
||||
/* Data Format. Just support everything for now. */
|
||||
/* TODO: See if there's a reasonable way to query the true "native" format. Maybe just initialize a stream and handle the SPA_PARAM_Format parameter in param_changed()? */
|
||||
deviceInfo.nativeDataFormats[deviceInfo.nativeDataFormatCount].format = ma_format_unknown;
|
||||
deviceInfo.nativeDataFormats[deviceInfo.nativeDataFormatCount].channels = 0;
|
||||
deviceInfo.nativeDataFormats[deviceInfo.nativeDataFormatCount].sampleRate = 0;
|
||||
deviceInfo.nativeDataFormatCount += 1;
|
||||
ma_device_info_add_native_data_format_2(&deviceInfo, ma_format_f32, 1, 64, ma_standard_sample_rate_min, ma_standard_sample_rate_max);
|
||||
ma_device_info_add_native_data_format_2(&deviceInfo, ma_format_s16, 1, 64, ma_standard_sample_rate_min, ma_standard_sample_rate_max);
|
||||
ma_device_info_add_native_data_format_2(&deviceInfo, ma_format_s32, 1, 64, ma_standard_sample_rate_min, ma_standard_sample_rate_max);
|
||||
ma_device_info_add_native_data_format_2(&deviceInfo, ma_format_s24, 1, 64, ma_standard_sample_rate_min, ma_standard_sample_rate_max);
|
||||
ma_device_info_add_native_data_format_2(&deviceInfo, ma_format_u8, 1, 64, ma_standard_sample_rate_min, ma_standard_sample_rate_max);
|
||||
|
||||
ma_enumerate_devices_data_pipewire_add(pEnumData, deviceType, &deviceInfo);
|
||||
|
||||
|
||||
+27
@@ -7580,6 +7580,11 @@ typedef struct
|
||||
} nativeDataFormats[16]; /* Should be big enough for [flags,format] to act as the key. */
|
||||
} ma_device_info;
|
||||
|
||||
MA_API void ma_device_info_add_native_data_format_ex(ma_device_info* pDeviceInfo, ma_uint32 flags, ma_format format, ma_uint32 minChannels, ma_uint32 maxChannels, ma_uint32 minSampleRate, ma_uint32 maxSampleRate);
|
||||
MA_API void ma_device_info_add_native_data_format_2(ma_device_info* pDeviceInfo, ma_format format, ma_uint32 minChannels, ma_uint32 maxChannels, ma_uint32 minSampleRate, ma_uint32 maxSampleRate);
|
||||
|
||||
|
||||
|
||||
struct ma_device_config
|
||||
{
|
||||
ma_device_type deviceType;
|
||||
@@ -19817,6 +19822,28 @@ MA_API void ma_device_info_add_native_data_format(ma_device_info* pDeviceInfo, m
|
||||
}
|
||||
}
|
||||
|
||||
MA_API void ma_device_info_add_native_data_format_ex(ma_device_info* pDeviceInfo, ma_uint32 flags, ma_format format, ma_uint32 minChannels, ma_uint32 maxChannels, ma_uint32 minSampleRate, ma_uint32 maxSampleRate)
|
||||
{
|
||||
if (pDeviceInfo == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (pDeviceInfo->nativeDataFormatCount < ma_countof(pDeviceInfo->nativeDataFormats)) {
|
||||
pDeviceInfo->nativeDataFormats[pDeviceInfo->nativeDataFormatCount].flags = flags;
|
||||
pDeviceInfo->nativeDataFormats[pDeviceInfo->nativeDataFormatCount].format = format;
|
||||
pDeviceInfo->nativeDataFormats[pDeviceInfo->nativeDataFormatCount].minChannels = minChannels;
|
||||
pDeviceInfo->nativeDataFormats[pDeviceInfo->nativeDataFormatCount].maxChannels = maxChannels;
|
||||
pDeviceInfo->nativeDataFormats[pDeviceInfo->nativeDataFormatCount].minSampleRate = minSampleRate;
|
||||
pDeviceInfo->nativeDataFormats[pDeviceInfo->nativeDataFormatCount].maxSampleRate = maxSampleRate;
|
||||
pDeviceInfo->nativeDataFormatCount += 1;
|
||||
}
|
||||
}
|
||||
|
||||
MA_API void ma_device_info_add_native_data_format_2(ma_device_info* pDeviceInfo, ma_format format, ma_uint32 minChannels, ma_uint32 maxChannels, ma_uint32 minSampleRate, ma_uint32 maxSampleRate)
|
||||
{
|
||||
ma_device_info_add_native_data_format_ex(pDeviceInfo, 0, format, minChannels, maxChannels, minSampleRate, maxSampleRate);
|
||||
}
|
||||
|
||||
|
||||
|
||||
#if defined(MA_WIN32) && !defined(MA_XBOX)
|
||||
|
||||
Reference in New Issue
Block a user