summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/sound/cdda.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/sound/cdda.cpp')
-rw-r--r--src/devices/sound/cdda.cpp17
1 files changed, 8 insertions, 9 deletions
diff --git a/src/devices/sound/cdda.cpp b/src/devices/sound/cdda.cpp
index ca2bd280de8..4cecdc95ee7 100644
--- a/src/devices/sound/cdda.cpp
+++ b/src/devices/sound/cdda.cpp
@@ -18,8 +18,8 @@
void cdda_device::sound_stream_update(sound_stream &stream, std::vector<read_stream_view> const &inputs, std::vector<write_stream_view> &outputs)
{
get_audio_data(outputs[0], outputs[1]);
- m_audio_volume[0] = outputs[0].get(0);
- m_audio_volume[1] = outputs[1].get(0);
+ m_audio_volume[0] = outputs[0].get_indexed(0);
+ m_audio_volume[1] = outputs[1].get_indexed(0);
}
//-------------------------------------------------
@@ -165,7 +165,7 @@ void cdda_device::get_audio_data(write_stream_view &bufL, write_stream_view &buf
int16_t *audio_cache = (int16_t *) m_audio_cache.get();
constexpr stream_buffer::sample_t sample_scale = 1.0 / 32768.0;
- for (int sampindex = 0; sampindex < bufL.samples(); )
+ while (!bufL.done())
{
/* if no file, audio not playing, audio paused, or out of disc data,
just zero fill */
@@ -177,12 +177,12 @@ void cdda_device::get_audio_data(write_stream_view &bufL, write_stream_view &buf
m_audio_ended_normally = true;
}
- bufL.fill(0, sampindex);
- bufR.fill(0, sampindex);
+ bufL.fill(0);
+ bufR.fill(0);
return;
}
- int samples = bufL.samples() - sampindex;
+ int samples = bufL.remaining();
if (samples > m_audio_samples)
{
samples = m_audio_samples;
@@ -191,11 +191,10 @@ void cdda_device::get_audio_data(write_stream_view &bufL, write_stream_view &buf
for (i = 0; i < samples; i++)
{
/* CD-DA data on the disc is big-endian */
- bufL.put(sampindex + i, stream_buffer::sample_t(s16(big_endianize_int16( audio_cache[ m_audio_bptr ] ))) * sample_scale); m_audio_bptr++;
- bufR.put(sampindex + i, stream_buffer::sample_t(s16(big_endianize_int16( audio_cache[ m_audio_bptr ] ))) * sample_scale); m_audio_bptr++;
+ bufL.put(stream_buffer::sample_t(s16(big_endianize_int16( audio_cache[ m_audio_bptr ] ))) * sample_scale); m_audio_bptr++;
+ bufR.put(stream_buffer::sample_t(s16(big_endianize_int16( audio_cache[ m_audio_bptr ] ))) * sample_scale); m_audio_bptr++;
}
- sampindex += samples;
m_audio_samples -= samples;
if (m_audio_samples == 0)