mirror of
https://github.com/WinampDesktop/winamp.git
synced 2025-06-18 00:15:45 -04:00
Qt: Implement audio output
This commit is contained in:
@ -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;
|
||||
|
@ -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;
|
||||
|
Reference in New Issue
Block a user