summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/audio/dsbz80.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/audio/dsbz80.cpp')
-rw-r--r--src/mame/audio/dsbz80.cpp32
1 files changed, 17 insertions, 15 deletions
diff --git a/src/mame/audio/dsbz80.cpp b/src/mame/audio/dsbz80.cpp
index 7643face54b..ad7f25bbfcd 100644
--- a/src/mame/audio/dsbz80.cpp
+++ b/src/mame/audio/dsbz80.cpp
@@ -85,7 +85,7 @@ void dsbz80_device::device_start()
m_rxd_handler.resolve_safe();
uint8_t *rom_base = machine().root_device().memregion("mpeg")->base();
decoder = new mpeg_audio(rom_base, mpeg_audio::L2, false, 0);
- stream_alloc_legacy(0, 2, 32000);
+ stream_alloc(0, 2, 32000);
}
//-------------------------------------------------
@@ -232,11 +232,13 @@ void dsbz80_device::mpeg_stereo_w(uint8_t data)
mp_pan = data & 3; // 0 = stereo, 1 = left on both channels, 2 = right on both channels
}
-void dsbz80_device::sound_stream_update_legacy(sound_stream &stream, stream_sample_t const * const *inputs, stream_sample_t * const *outputs, int samples)
+void dsbz80_device::sound_stream_update(sound_stream &stream, std::vector<read_stream_view> const &inputs, std::vector<write_stream_view> &outputs)
{
- stream_sample_t *out_l = outputs[0];
- stream_sample_t *out_r = outputs[1];
+ auto &out_l = outputs[0];
+ auto &out_r = outputs[1];
+ int samples = out_l.samples();
+ int sampindex = 0;
for(;;)
{
while(samples && audio_pos < audio_avail)
@@ -244,18 +246,21 @@ void dsbz80_device::sound_stream_update_legacy(sound_stream &stream, stream_samp
switch (mp_pan)
{
case 0: // stereo
- *out_l++ = audio_buf[audio_pos*2];
- *out_r++ = audio_buf[audio_pos*2+1];
+ out_l.put_int(sampindex, audio_buf[audio_pos*2], 32768);
+ out_r.put_int(sampindex, audio_buf[audio_pos*2+1], 32768);
+ sampindex++;
break;
case 1: // left only
- *out_l++ = audio_buf[audio_pos*2];
- *out_r++ = audio_buf[audio_pos*2];
+ out_l.put_int(sampindex, audio_buf[audio_pos*2], 32768);
+ out_r.put_int(sampindex, audio_buf[audio_pos*2], 32768);
+ sampindex++;
break;
case 2: // right only
- *out_l++ = audio_buf[audio_pos*2+1];
- *out_r++ = audio_buf[audio_pos*2+1];
+ out_l.put_int(sampindex, audio_buf[audio_pos*2+1], 32768);
+ out_r.put_int(sampindex, audio_buf[audio_pos*2+1], 32768);
+ sampindex++;
break;
}
audio_pos++;
@@ -269,11 +274,8 @@ void dsbz80_device::sound_stream_update_legacy(sound_stream &stream, stream_samp
if(mp_state == 0)
{
- for(int i=0; i != samples; i++)
- {
- *out_l++ = 0;
- *out_r++ = 0;
- }
+ out_l.fill(0, sampindex);
+ out_r.fill(0, sampindex);
break;
}