Skip to content

Commit

Permalink
codeRabbit rev
Browse files Browse the repository at this point in the history
  • Loading branch information
Raffaello committed Nov 15, 2023
1 parent 4f4412f commit 046f2f4
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,11 @@ namespace HyperSonicDrivers::audio

virtual void renderBuffer(IAudioStream* stream) = 0;
inline void renderBuffer(const std::shared_ptr<devices::IDevice>& device) { renderBuffer(device->getHardware()->getAudioStream().get()); };
virtual void renderFlush(IAudioStream* stream) = 0;
inline void renderFlush(const std::shared_ptr<devices::IDevice>& device) { renderFlush(device->getHardware()->getAudioStream().get()); };
virtual bool renderFlush(IAudioStream* stream) = 0;
inline bool renderFlush(const std::shared_ptr<devices::IDevice>& device) { return renderFlush(device->getHardware()->getAudioStream().get()); };

virtual void renderBuffer(IAudioStream* stream, drivers::IAudioDriver& drv, const int track) = 0;
inline void renderBuffer(const std::shared_ptr<devices::IDevice>& device, drivers::IAudioDriver& drv, const int track) { renderBuffer(device->getHardware()->getAudioStream().get(), drv, track); };
virtual bool renderBuffer(IAudioStream* stream, drivers::IAudioDriver& drv, const int track) = 0;
inline bool renderBuffer(const std::shared_ptr<devices::IDevice>& device, drivers::IAudioDriver& drv, const int track) { return renderBuffer(device->getHardware()->getAudioStream().get(), drv, track); };
protected:
std::shared_ptr<IMixer> m_mixer;
std::unique_ptr<files::WAVFile> m_out;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@

namespace HyperSonicDrivers::audio::sdl2
{
constexpr int MaxRendererFlushIterations = 1000;

Renderer::Renderer(const uint32_t freq, const uint16_t buffer_size, const uint8_t max_channels)
{
m_mixer = make_mixer<Mixer>(max_channels, freq, buffer_size);
Expand Down Expand Up @@ -35,7 +37,7 @@ namespace HyperSonicDrivers::audio::sdl2
m_out->save_streaming(m_buf.data(), read);
}

void Renderer::renderFlush(IAudioStream* stream)
bool Renderer::renderFlush(IAudioStream* stream)
{
// safety check
if (m_buf.empty())
Expand All @@ -44,24 +46,28 @@ namespace HyperSonicDrivers::audio::sdl2
m_buf.resize(m_mixer->buffer_size);
}

while (true)
for(int i = 0; i < MaxRendererFlushIterations; i++)
{
const size_t read = stream->readBuffer(m_buf.data(), m_buf.size());
if (read == 0)
return true;

const bool silenced = std::ranges::all_of(m_buf, [](const auto i) { return i == 0; });
if (silenced)
return;
return true;

m_out->save_streaming(m_buf.data(), read);
}

return false;
}

void Renderer::renderBuffer(IAudioStream* stream, drivers::IAudioDriver& drv, const int track)
bool Renderer::renderBuffer(IAudioStream* stream, drivers::IAudioDriver& drv, const int track)
{
drv.play(track);
while (drv.isPlaying())
renderBuffer(stream);

renderFlush(stream);
closeOutputFile();
return renderFlush(stream);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@ namespace HyperSonicDrivers::audio::sdl2

void renderBuffer(IAudioStream* stream) override;
using IRenderer::renderBuffer;
void renderFlush(IAudioStream* stream) override;
bool renderFlush(IAudioStream* stream) override;
using IRenderer::renderFlush;

void renderBuffer(IAudioStream* stream, drivers::IAudioDriver& drv, const int track) override;
bool renderBuffer(IAudioStream* stream, drivers::IAudioDriver& drv, const int track) override;
};
}
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ namespace HyperSonicDrivers::audio::sdl2
while (drv1.isPlaying())
r.renderBuffer(opl);

r.renderFlush(opl);
ASSERT_TRUE(r.renderFlush(opl));
r.closeOutputFile();
}

Expand Down Expand Up @@ -102,7 +102,8 @@ namespace HyperSonicDrivers::audio::sdl2
auto af = std::make_shared<files::westwood::ADLFile>("../fixtures/DUNE0.ADL");
drv1.setADLFile(af);

r.renderBuffer(opl, drv1, 4);
ASSERT_TRUE(r.renderBuffer(opl, drv1, 4));
r.closeOutputFile();
}

files::WAVFile w(rfile);
Expand Down

0 comments on commit 046f2f4

Please sign in to comment.