diff options
author | 2020-09-19 13:40:05 -0700 | |
---|---|---|
committer | 2020-09-19 13:40:05 -0700 | |
commit | c9399d2377c6c21e123d76f538d131928dc71c9e (patch) | |
tree | fad510cbb1cc833f680164f07acc1356716e37b7 /src/devices/sound/mas3507d.cpp | |
parent | fdf35fe86bf382fae1a5d4b9b3011d3085bdfa7b (diff) |
la7a1045/lmc1992/mas3507d/mea8000/mos6560/mos6581/mos7360/msm5232/multipcm: update to new stream callbacks
Diffstat (limited to 'src/devices/sound/mas3507d.cpp')
-rw-r--r-- | src/devices/sound/mas3507d.cpp | 27 |
1 files changed, 12 insertions, 15 deletions
diff --git a/src/devices/sound/mas3507d.cpp b/src/devices/sound/mas3507d.cpp index 641ec52a06e..b024b6408cd 100644 --- a/src/devices/sound/mas3507d.cpp +++ b/src/devices/sound/mas3507d.cpp @@ -29,7 +29,7 @@ mas3507d_device::mas3507d_device(const machine_config &mconfig, const char *tag, void mas3507d_device::device_start() { current_rate = 44100; - stream = stream_alloc_legacy(0, 2, current_rate); + stream = stream_alloc(0, 2, current_rate); cb_sample.resolve(); } @@ -359,27 +359,25 @@ void mas3507d_device::fill_buffer() } } -void mas3507d_device::append_buffer(stream_sample_t * const *outputs, int &pos, int scount) +void mas3507d_device::append_buffer(std::vector<write_stream_view> &outputs, int &pos, int scount) { - if(!sample_count) - return; - buffered_frame_count = scount; int s1 = scount - pos; if(s1 > sample_count) s1 = sample_count; + constexpr stream_buffer::sample_t sample_scale = 1.0 / 32768.0; if(mp3_info.channels == 1) { for(int i=0; i<s1; i++) { - stream_sample_t v = samples[i]; - outputs[0][i+pos] = v; - outputs[1][i+pos] = v; + stream_buffer::sample_t v = stream_buffer::sample_t(samples[i]) * sample_scale; + outputs[0].put(i+pos, v); + outputs[1].put(i+pos, v); } } else { for(int i=0; i<s1; i++) { - outputs[0][i+pos] = samples[i*2]; - outputs[1][i+pos] = samples[i*2+1]; + outputs[0].put(i+pos, stream_buffer::sample_t(samples[i*2]) * sample_scale); + outputs[1].put(i+pos, stream_buffer::sample_t(samples[i*2+1]) * sample_scale); } } @@ -400,8 +398,9 @@ void mas3507d_device::append_buffer(stream_sample_t * const *outputs, int &pos, total_frame_count += s1; } -void mas3507d_device::sound_stream_update_legacy(sound_stream &stream, stream_sample_t const * const *inputs, stream_sample_t * const *outputs, int csamples) +void mas3507d_device::sound_stream_update(sound_stream &stream, std::vector<read_stream_view> const &inputs, std::vector<write_stream_view> &outputs) { + int csamples = outputs[0].samples(); int pos = 0; append_buffer(outputs, pos, csamples); @@ -419,10 +418,8 @@ void mas3507d_device::sound_stream_update_legacy(sound_stream &stream, stream_sa total_frame_count = 0; buffered_frame_count = 0; - for(int i=pos; i != csamples; i++) { - outputs[0][i] = 0; - outputs[1][i] = 0; - } + outputs[0].fill(0, pos); + outputs[1].fill(0, pos); return; } append_buffer(outputs, pos, csamples); |