Qt: Implement audio output

This commit is contained in:
Connor McLaughlin
2020-01-07 14:17:41 +10:00
parent 207c75e6eb
commit 1b7be01507
11 changed files with 177 additions and 16 deletions

View File

@ -123,6 +123,18 @@ void AudioStream::EndWrite(u32 num_samples)
m_buffer_mutex.unlock();
}
u32 AudioStream::GetSamplesAvailable() const
{
// TODO: Use atomic loads
u32 available_buffers;
{
std::unique_lock<std::mutex> lock(m_buffer_mutex);
available_buffers = m_num_available_buffers;
}
return available_buffers * m_buffer_size;
}
u32 AudioStream::ReadSamples(SampleType* samples, u32 num_samples)
{
u32 remaining_samples = num_samples;

View File

@ -49,6 +49,7 @@ protected:
bool IsDeviceOpen() const { return (m_output_sample_rate > 0); }
u32 GetSamplesAvailable() const;
u32 ReadSamples(SampleType* samples, u32 num_samples);
void DropBuffer();
@ -69,7 +70,7 @@ private:
void EnsureBuffer();
std::vector<Buffer> m_buffers;
std::mutex m_buffer_mutex;
mutable std::mutex m_buffer_mutex;
// For input.
u32 m_first_free_buffer = 0;