mirror of
https://github.com/mackron/miniaudio.git
synced 2026-04-23 00:34:03 +02:00
PulseAudio: Try fixing an error when initializing a device.
Public issue https://github.com/mackron/miniaudio/issues/412
This commit is contained in:
+19
@@ -28923,16 +28923,26 @@ static ma_result ma_device_init__pulse(ma_device* pDevice, const ma_device_confi
|
|||||||
goto on_error2;
|
goto on_error2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Internal format. */
|
/* Internal format. */
|
||||||
pActualSS = ((ma_pa_stream_get_sample_spec_proc)pDevice->pContext->pulse.pa_stream_get_sample_spec)((ma_pa_stream*)pDevice->pulse.pStreamCapture);
|
pActualSS = ((ma_pa_stream_get_sample_spec_proc)pDevice->pContext->pulse.pa_stream_get_sample_spec)((ma_pa_stream*)pDevice->pulse.pStreamCapture);
|
||||||
if (pActualSS != NULL) {
|
if (pActualSS != NULL) {
|
||||||
ss = *pActualSS;
|
ss = *pActualSS;
|
||||||
|
ma_log_postf(ma_device_get_log(pDevice), MA_LOG_LEVEL_INFO, "[PulseAudio] Capture sample spec: format=%s, channels=%d, rate=%d\n", ma_get_format_name(ma_format_from_pulse(ss.format)), ss.channels, ss.rate);
|
||||||
|
} else {
|
||||||
|
ma_log_postf(ma_device_get_log(pDevice), MA_LOG_LEVEL_INFO, "[PulseAudio] Failed to retrieve capture sample spec.\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
pDescriptorCapture->format = ma_format_from_pulse(ss.format);
|
pDescriptorCapture->format = ma_format_from_pulse(ss.format);
|
||||||
pDescriptorCapture->channels = ss.channels;
|
pDescriptorCapture->channels = ss.channels;
|
||||||
pDescriptorCapture->sampleRate = ss.rate;
|
pDescriptorCapture->sampleRate = ss.rate;
|
||||||
|
|
||||||
|
if (pDescriptorCapture->format == ma_format_unknown || pDescriptorCapture->channels == 0 || pDescriptorCapture->sampleRate == 0) {
|
||||||
|
ma_log_postf(ma_device_get_log(pDevice), MA_LOG_LEVEL_ERROR, "[PulseAudio] Capture sample spec is invalid. Device unusable by miniaudio. format=%s, channels=%d, sampleRate=%d.\n", ma_get_format_name(pDescriptorCapture->format), pDescriptorCapture->channels, pDescriptorCapture->sampleRate);
|
||||||
|
result = MA_ERROR;
|
||||||
|
goto on_error4;
|
||||||
|
}
|
||||||
|
|
||||||
/* Internal channel map. */
|
/* Internal channel map. */
|
||||||
pActualCMap = ((ma_pa_stream_get_channel_map_proc)pDevice->pContext->pulse.pa_stream_get_channel_map)((ma_pa_stream*)pDevice->pulse.pStreamCapture);
|
pActualCMap = ((ma_pa_stream_get_channel_map_proc)pDevice->pContext->pulse.pa_stream_get_channel_map)((ma_pa_stream*)pDevice->pulse.pStreamCapture);
|
||||||
if (pActualCMap != NULL) {
|
if (pActualCMap != NULL) {
|
||||||
@@ -29038,12 +29048,21 @@ static ma_result ma_device_init__pulse(ma_device* pDevice, const ma_device_confi
|
|||||||
pActualSS = ((ma_pa_stream_get_sample_spec_proc)pDevice->pContext->pulse.pa_stream_get_sample_spec)((ma_pa_stream*)pDevice->pulse.pStreamPlayback);
|
pActualSS = ((ma_pa_stream_get_sample_spec_proc)pDevice->pContext->pulse.pa_stream_get_sample_spec)((ma_pa_stream*)pDevice->pulse.pStreamPlayback);
|
||||||
if (pActualSS != NULL) {
|
if (pActualSS != NULL) {
|
||||||
ss = *pActualSS;
|
ss = *pActualSS;
|
||||||
|
ma_log_postf(ma_device_get_log(pDevice), MA_LOG_LEVEL_INFO, "[PulseAudio] Playback sample spec: format=%s, channels=%d, rate=%d\n", ma_get_format_name(ma_format_from_pulse(ss.format)), ss.channels, ss.rate);
|
||||||
|
} else {
|
||||||
|
ma_log_postf(ma_device_get_log(pDevice), MA_LOG_LEVEL_INFO, "[PulseAudio] Failed to retrieve playback sample spec.\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
pDescriptorPlayback->format = ma_format_from_pulse(ss.format);
|
pDescriptorPlayback->format = ma_format_from_pulse(ss.format);
|
||||||
pDescriptorPlayback->channels = ss.channels;
|
pDescriptorPlayback->channels = ss.channels;
|
||||||
pDescriptorPlayback->sampleRate = ss.rate;
|
pDescriptorPlayback->sampleRate = ss.rate;
|
||||||
|
|
||||||
|
if (pDescriptorPlayback->format == ma_format_unknown || pDescriptorPlayback->channels == 0 || pDescriptorPlayback->sampleRate == 0) {
|
||||||
|
ma_log_postf(ma_device_get_log(pDevice), MA_LOG_LEVEL_ERROR, "[PulseAudio] Playback sample spec is invalid. Device unusable by miniaudio. format=%s, channels=%d, sampleRate=%d.\n", ma_get_format_name(pDescriptorPlayback->format), pDescriptorPlayback->channels, pDescriptorPlayback->sampleRate);
|
||||||
|
result = MA_ERROR;
|
||||||
|
goto on_error4;
|
||||||
|
}
|
||||||
|
|
||||||
/* Internal channel map. */
|
/* Internal channel map. */
|
||||||
pActualCMap = ((ma_pa_stream_get_channel_map_proc)pDevice->pContext->pulse.pa_stream_get_channel_map)((ma_pa_stream*)pDevice->pulse.pStreamPlayback);
|
pActualCMap = ((ma_pa_stream_get_channel_map_proc)pDevice->pContext->pulse.pa_stream_get_channel_map)((ma_pa_stream*)pDevice->pulse.pStreamPlayback);
|
||||||
if (pActualCMap != NULL) {
|
if (pActualCMap != NULL) {
|
||||||
|
|||||||
Reference in New Issue
Block a user