mirror of
https://github.com/holub/mame
synced 2025-07-03 09:06:08 +03:00
pa_sound: add support for audio latency and samplerate options
This commit is contained in:
parent
16cc6c9d80
commit
d2ee234660
@ -84,6 +84,7 @@ private:
|
||||
std::map<uint32_t, stream_info> m_streams;
|
||||
|
||||
uint32_t m_stream_id;
|
||||
int m_audio_latency;
|
||||
|
||||
int stream_callback(stream_info *stream, const void *input, void *output, unsigned long frameCount, const PaStreamCallbackTimeInfo *timeInfo, PaStreamCallbackFlags statusFlags);
|
||||
static int s_stream_callback(const void *input, void *output, unsigned long frameCount, const PaStreamCallbackTimeInfo *timeInfo, PaStreamCallbackFlags statusFlags, void *userData);
|
||||
@ -136,7 +137,7 @@ int sound_pa::init(osd_interface &osd, osd_options const &options)
|
||||
auto &node = m_info.m_nodes[dev];
|
||||
node.m_name = di->name;
|
||||
node.m_id = dev + 1;
|
||||
node.m_rate.m_default_rate = node.m_rate.m_min_rate = node.m_rate.m_max_rate = di->defaultSampleRate;
|
||||
node.m_rate.m_default_rate = node.m_rate.m_min_rate = node.m_rate.m_max_rate = options.sample_rate();
|
||||
node.m_sinks = di->maxOutputChannels;
|
||||
node.m_sources = di->maxInputChannels;
|
||||
|
||||
@ -153,6 +154,7 @@ int sound_pa::init(osd_interface &osd, osd_options const &options)
|
||||
m_info.m_default_sink = dc(Pa_GetDefaultOutputDevice());
|
||||
m_info.m_default_source = dc(Pa_GetDefaultInputDevice());
|
||||
|
||||
m_audio_latency = options.audio_latency();
|
||||
m_stream_id = 1;
|
||||
|
||||
return 0;
|
||||
@ -188,7 +190,7 @@ uint32_t sound_pa::stream_sink_open(uint32_t node, std::string name, uint32_t ra
|
||||
op.device = node - 1;
|
||||
op.channelCount = m_info.m_nodes[node-1].m_sinks;
|
||||
op.sampleFormat = paInt16;
|
||||
op.suggestedLatency = Pa_GetDeviceInfo(node - 1)->defaultLowOutputLatency;
|
||||
op.suggestedLatency = (m_audio_latency > 0) ? (m_audio_latency / 10.0) : Pa_GetDeviceInfo(node - 1)->defaultLowOutputLatency;
|
||||
op.hostApiSpecificStreamInfo = nullptr;
|
||||
|
||||
PaError err = Pa_OpenStream(&si->second.m_stream, nullptr, &op, rate, paFramesPerBufferUnspecified, 0, s_stream_callback, &si->second);
|
||||
@ -216,7 +218,7 @@ uint32_t sound_pa::stream_source_open(uint32_t node, std::string name, uint32_t
|
||||
ip.device = node - 1;
|
||||
ip.channelCount = m_info.m_nodes[node-1].m_sources;
|
||||
ip.sampleFormat = paInt16;
|
||||
ip.suggestedLatency = Pa_GetDeviceInfo(node - 1)->defaultLowInputLatency;
|
||||
ip.suggestedLatency = (m_audio_latency > 0) ? (m_audio_latency / 10.0) : Pa_GetDeviceInfo(node - 1)->defaultLowInputLatency;
|
||||
ip.hostApiSpecificStreamInfo = nullptr;
|
||||
|
||||
PaError err = Pa_OpenStream(&si->second.m_stream, &ip, nullptr, rate, paFramesPerBufferUnspecified, 0, s_stream_callback, &si->second);
|
||||
|
Loading…
Reference in New Issue
Block a user