mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-08 07:45:00 +01:00
ASIO devices have a preferred buffersize.
pass this value up so it can be used by the engine dialog. if for some reason the engine dialog still doesn't have a buffersize selected, print an error and try 512 instead of crashing.
This commit is contained in:
parent
9b3f3a9fea
commit
05a612b563
5 changed files with 20 additions and 1 deletions
|
|
@ -186,7 +186,7 @@ class LIBARDOUR_API AudioBackend : public PortEngine {
|
||||||
* if there is any chance that a buffer size of 1024 is not in the list
|
* if there is any chance that a buffer size of 1024 is not in the list
|
||||||
* returned by available_buffer_sizes()
|
* returned by available_buffer_sizes()
|
||||||
*/
|
*/
|
||||||
virtual uint32_t default_buffer_size () const {
|
virtual uint32_t default_buffer_size (const std::string& device) const {
|
||||||
return 1024;
|
return 1024;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -221,6 +221,19 @@ float WavesAudioBackend::default_sample_rate () const
|
||||||
return AudioBackend::default_sample_rate ();
|
return AudioBackend::default_sample_rate ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint32_t
|
||||||
|
WavesAudioBackend::default_buffer_size (const std::string& device_name) const
|
||||||
|
{
|
||||||
|
DeviceInfo devInfo;
|
||||||
|
WTErr err = _audio_device_manager.GetDeviceInfoByName(device_name, devInfo);
|
||||||
|
|
||||||
|
if (err != eNoErr) {
|
||||||
|
std::cerr << "WavesAudioBackend::default_buffer_size (): Failed to get buffer size for device [" << device_name << "]" << std::endl;
|
||||||
|
return AudioBackend::default_buffer_size (device_name);
|
||||||
|
}
|
||||||
|
|
||||||
|
return devInfo.m_DefaultBufferSize;
|
||||||
|
}
|
||||||
|
|
||||||
std::vector<uint32_t>
|
std::vector<uint32_t>
|
||||||
WavesAudioBackend::available_buffer_sizes (const std::string& device_name) const
|
WavesAudioBackend::available_buffer_sizes (const std::string& device_name) const
|
||||||
|
|
|
||||||
|
|
@ -93,6 +93,8 @@ class WavesMidiPort;
|
||||||
|
|
||||||
virtual std::vector<uint32_t> available_buffer_sizes (const std::string& device) const;
|
virtual std::vector<uint32_t> available_buffer_sizes (const std::string& device) const;
|
||||||
|
|
||||||
|
virtual uint32_t default_buffer_size (const std::string& device) const;
|
||||||
|
|
||||||
virtual uint32_t available_input_channel_count (const std::string& device) const;
|
virtual uint32_t available_input_channel_count (const std::string& device) const;
|
||||||
|
|
||||||
virtual uint32_t available_output_channel_count (const std::string& device) const;
|
virtual uint32_t available_output_channel_count (const std::string& device) const;
|
||||||
|
|
|
||||||
|
|
@ -59,6 +59,7 @@ struct DeviceInfo
|
||||||
std::vector<int> m_AvailableSampleRates;
|
std::vector<int> m_AvailableSampleRates;
|
||||||
unsigned int m_MaxInputChannels;
|
unsigned int m_MaxInputChannels;
|
||||||
unsigned int m_MaxOutputChannels;
|
unsigned int m_MaxOutputChannels;
|
||||||
|
unsigned int m_DefaultBufferSize;
|
||||||
|
|
||||||
DeviceInfo():
|
DeviceInfo():
|
||||||
m_DeviceId(-1), m_DeviceName("Unknown"), m_MaxInputChannels(0), m_MaxOutputChannels(0)
|
m_DeviceId(-1), m_DeviceName("Unknown"), m_MaxInputChannels(0), m_MaxOutputChannels(0)
|
||||||
|
|
@ -198,6 +199,7 @@ protected:
|
||||||
std::vector<std::string> m_OutputChannels; ///< List of output channel names.
|
std::vector<std::string> m_OutputChannels; ///< List of output channel names.
|
||||||
std::vector<int> m_SamplingRates; ///< List of available sampling rates.
|
std::vector<int> m_SamplingRates; ///< List of available sampling rates.
|
||||||
std::vector<int> m_BufferSizes; ///< List of available buffer sizes.
|
std::vector<int> m_BufferSizes; ///< List of available buffer sizes.
|
||||||
|
int m_DefaultBufferSize; ///soundcard preferred buffer size
|
||||||
|
|
||||||
int m_CurrentSamplingRate; ///< Currently selected sampling rate.
|
int m_CurrentSamplingRate; ///< Currently selected sampling rate.
|
||||||
int m_CurrentBufferSize; ///< Currently selected buffer size.
|
int m_CurrentBufferSize; ///< Currently selected buffer size.
|
||||||
|
|
|
||||||
|
|
@ -118,6 +118,7 @@ WCMRPortAudioDevice::WCMRPortAudioDevice (WCMRPortAudioDeviceManager *pManager,
|
||||||
m_PortAudioStream = NULL;
|
m_PortAudioStream = NULL;
|
||||||
m_CurrentSamplingRate = DEFAULT_SR;
|
m_CurrentSamplingRate = DEFAULT_SR;
|
||||||
m_CurrentBufferSize = DEFAULT_BUFFERSIZE;
|
m_CurrentBufferSize = DEFAULT_BUFFERSIZE;
|
||||||
|
m_DefaultBufferSize = DEFAULT_BUFFERSIZE;
|
||||||
m_StopRequested = true;
|
m_StopRequested = true;
|
||||||
m_pInputData = NULL;
|
m_pInputData = NULL;
|
||||||
|
|
||||||
|
|
@ -361,6 +362,7 @@ void WCMRPortAudioDevice::updateDeviceInfo (bool callerIsWaiting/*=false*/)
|
||||||
{
|
{
|
||||||
std::cout << "API::Device " << m_DeviceName << " Buffers: " << minSize << " " << maxSize << " " << preferredSize << std::endl;
|
std::cout << "API::Device " << m_DeviceName << " Buffers: " << minSize << " " << maxSize << " " << preferredSize << std::endl;
|
||||||
|
|
||||||
|
m_DefaultBufferSize = preferredSize;
|
||||||
m_BufferSizes.push_back (preferredSize);
|
m_BufferSizes.push_back (preferredSize);
|
||||||
useDefaultBuffers = false;
|
useDefaultBuffers = false;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue