diff options
Diffstat (limited to 'src/mame/audio/dsbz80.cpp')
-rw-r--r-- | src/mame/audio/dsbz80.cpp | 32 |
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; } |