summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/sound.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/emu/sound.cpp')
-rw-r--r--src/emu/sound.cpp30
1 files changed, 17 insertions, 13 deletions
diff --git a/src/emu/sound.cpp b/src/emu/sound.cpp
index 5fcbaa0ee93..be16a3476e3 100644
--- a/src/emu/sound.cpp
+++ b/src/emu/sound.cpp
@@ -225,10 +225,10 @@ int sound_stream::input_source_outputnum(int inputnum) const
// set_input - configure a stream's input
//-------------------------------------------------
-void sound_stream::set_input(int index, sound_stream *input_stream, int output_index, float gain, stream_sample_t level)
+void sound_stream::set_input(int index, sound_stream *input_stream, int output_index, float gain)
{
- VPRINTF(("stream_set_input(%p, '%s', %d, %p, %d, %f, %d)\n", (void *)this, m_device.tag(),
- index, (void *)input_stream, output_index, (double) gain, level));
+ VPRINTF(("stream_set_input(%p, '%s', %d, %p, %d, %f)\n", (void *)this, m_device.tag(),
+ index, (void *)input_stream, output_index, (double) gain));
// make sure it's a valid input
if (index >= m_input.size())
@@ -247,7 +247,6 @@ void sound_stream::set_input(int index, sound_stream *input_stream, int output_i
input.m_source = (input_stream != nullptr) ? &input_stream->m_output[output_index] : nullptr;
input.m_gain = int(0x100 * gain);
input.m_user_gain = 0x100;
- input.m_default_level = level;
// update the dependent info
if (input.m_source != nullptr)
@@ -443,7 +442,7 @@ void sound_stream::apply_sample_rate_changes()
// clear out the buffer
for (auto & elem : m_output)
- std::fill(&elem.m_buffer[0], &elem.m_buffer[m_max_samples_per_update], 0);
+ memset(&elem.m_buffer[0], 0, m_max_samples_per_update * sizeof(elem.m_buffer[0]));
}
@@ -538,8 +537,11 @@ void sound_stream::allocate_resample_buffers()
m_resample_bufalloc = bufsize;
// iterate over outputs and realloc their buffers
- for (auto & elem : m_input)
- elem.m_resample.resize(m_resample_bufalloc, elem.m_default_level);
+ for (auto & elem : m_input) {
+ unsigned int old_size = elem.m_resample.size();
+ elem.m_resample.resize(m_resample_bufalloc);
+ memset(&elem.m_resample[old_size], 0, (m_resample_bufalloc - old_size)*sizeof(elem.m_resample[0]));
+ }
}
}
@@ -559,8 +561,11 @@ void sound_stream::allocate_output_buffers()
m_output_bufalloc = bufsize;
// iterate over outputs and realloc their buffers
- for (auto & elem : m_output)
- elem.m_buffer.resize(m_output_bufalloc, 0);
+ for (auto & elem : m_output) {
+ unsigned int old_size = elem.m_buffer.size();
+ elem.m_buffer.resize(m_output_bufalloc);
+ memset(&elem.m_buffer[old_size], 0, (m_output_bufalloc - old_size)*sizeof(elem.m_buffer[0]));
+ }
}
}
@@ -576,7 +581,7 @@ void sound_stream::postload()
// make sure our output buffers are fully cleared
for (auto & elem : m_output)
- std::fill(&elem.m_buffer[0], &elem.m_buffer[m_output_bufalloc], 0);
+ memset(&elem.m_buffer[0], 0, m_output_bufalloc * sizeof(elem.m_buffer[0]));
// recompute the sample indexes to make sense
m_output_sampindex = m_device.machine().sound().last_update().attoseconds() / m_attoseconds_per_sample;
@@ -649,7 +654,7 @@ stream_sample_t *sound_stream::generate_resampled_data(stream_input &input, u32
stream_sample_t *dest = &input.m_resample[0];
if (input.m_source == nullptr)
{
- std::fill(&dest[0], &dest[numsamples], input.m_default_level);
+ memset(dest, 0, numsamples * sizeof(*dest));
return &input.m_resample[0];
}
@@ -771,8 +776,7 @@ sound_stream::stream_input::stream_input()
: m_source(nullptr),
m_latency_attoseconds(0),
m_gain(0x100),
- m_user_gain(0x100),
- m_default_level(0)
+ m_user_gain(0x100)
{
}