summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/sound.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/emu/sound.h')
-rw-r--r--src/emu/sound.h70
1 files changed, 18 insertions, 52 deletions
diff --git a/src/emu/sound.h b/src/emu/sound.h
index d7a833c749d..5ccc78c015b 100644
--- a/src/emu/sound.h
+++ b/src/emu/sound.h
@@ -239,7 +239,6 @@ public:
m_buffer(buffer),
m_end(end),
m_start(start),
- m_offset(0),
m_gain(gain)
{
normalize_start_end();
@@ -276,7 +275,6 @@ public:
m_start = rhs.m_start;
m_end = rhs.m_end;
m_gain = rhs.m_gain;
- m_offset = 0;
normalize_start_end();
return *this;
}
@@ -294,18 +292,6 @@ public:
// return the number of samples represented by the buffer
u32 samples() const { return m_end - m_start; }
- // return the current offset within the buffer
- s32 offset() const { return m_offset; }
-
- // return the number of samples remaining from the current offset
- s32 remaining() const { return samples() - m_offset; }
-
- // (re)set the current offset within the buffer
- read_stream_view const &reset(s32 offset = 0) const { m_offset = offset; return *this; }
-
- // return true if we've consumed all the samples in the view
- bool done() const { return m_offset >= samples(); }
-
// return the starting or ending time of the buffer
attotime start_time() const { return m_buffer->index_time(m_start); }
attotime end_time() const { return m_buffer->index_time(m_end); }
@@ -317,7 +303,7 @@ public:
read_stream_view &apply_gain(float gain) { m_gain *= gain; return *this; }
// safely fetch a gain-scaled sample from the buffer
- sample_t get_indexed(s32 index) const
+ sample_t get(s32 index) const
{
sound_assert(u32(index) < samples());
index += m_start;
@@ -328,7 +314,7 @@ public:
// safely fetch a raw sample from the buffer; if you use this, you need to
// apply the gain yourself for correctness
- sample_t getraw_indexed(s32 index) const
+ sample_t getraw(s32 index) const
{
sound_assert(u32(index) < samples());
index += m_start;
@@ -337,10 +323,6 @@ public:
return m_buffer->get(index);
}
- // non-indexed versions of the above that use the implied offset
- sample_t get() const { sound_assert(m_offset < samples()); return get_indexed(m_offset++); }
- sample_t getraw() const { sound_assert(m_offset < samples()); return getraw_indexed(m_offset++); }
-
protected:
// normalize start/end
void normalize_start_end()
@@ -356,7 +338,6 @@ protected:
stream_buffer *m_buffer; // pointer to the stream buffer we're viewing
s32 m_end; // ending sample index (always >= start)
s32 m_start; // starting sample index
- mutable s32 m_offset; // current read/write offset
sample_t m_gain; // overall gain factor
};
@@ -383,11 +364,8 @@ public:
{
}
- // (re)set the current offset within the buffer
- write_stream_view &reset(s32 offset = 0) { m_offset = offset; return *this; }
-
// safely write a gain-applied sample to the buffer
- void put_indexed(s32 index, sample_t sample)
+ void put(s32 index, sample_t sample)
{
sound_assert(u32(index) < samples());
index += m_start;
@@ -397,7 +375,7 @@ public:
}
// safely add a gain-applied sample to the buffer
- void add_indexed(s32 index, sample_t sample)
+ void add(s32 index, sample_t sample)
{
sound_assert(u32(index) < samples());
index += m_start;
@@ -407,9 +385,9 @@ public:
}
// fill part of the view with the given value
- s32 fill_indexed(s32 start, sample_t value, s32 count = -1)
+ void fill(sample_t value, s32 start, s32 count)
{
- if (count < 0 || start + count > samples())
+ if (start + count > samples())
count = samples() - start;
u32 index = start + m_start;
for (s32 sampindex = 0; sampindex < count; sampindex++)
@@ -417,51 +395,39 @@ public:
m_buffer->put(index, value);
index = m_buffer->next_index(index);
}
- return count;
}
+ void fill(sample_t value, s32 start) { fill(value, start, samples() - start); }
+ void fill(sample_t value) { fill(value, 0, samples()); }
// copy data from another view
- s32 copy_indexed(s32 start, read_stream_view const &src, s32 srcstart = -1, s32 count = -1)
+ void copy(read_stream_view const &src, s32 start, s32 count)
{
- if (count < 0 || start + count > samples())
+ if (start + count > samples())
count = samples() - start;
- if (srcstart < 0)
- srcstart = start;
- if (srcstart + count > src.samples())
- count = src.samples() - srcstart;
u32 index = start + m_start;
for (s32 sampindex = 0; sampindex < count; sampindex++)
{
- m_buffer->put(index, src.get_indexed(srcstart + sampindex));
+ m_buffer->put(index, src.get(start + sampindex));
index = m_buffer->next_index(index);
}
- return count;
}
+ void copy(read_stream_view const &src, s32 start) { copy(src, start, samples() - start); }
+ void copy(read_stream_view const &src) { copy(src, 0, samples()); }
// add data from another view to our current values
- s32 add_indexed(s32 start, read_stream_view const &src, s32 srcstart = -1, s32 count = -1)
+ void add(read_stream_view const &src, s32 start, s32 count)
{
- if (count < 0 || start + count > samples())
+ if (start + count > samples())
count = samples() - start;
- if (srcstart < 0)
- srcstart = start;
- if (srcstart + count > src.samples())
- count = src.samples() - srcstart;
u32 index = start + m_start;
for (s32 sampindex = 0; sampindex < count; sampindex++)
{
- m_buffer->put(index, m_buffer->get(index) + src.get_indexed(start + sampindex));
+ m_buffer->put(index, m_buffer->get(index) + src.get(start + sampindex));
index = m_buffer->next_index(index);
}
- return count;
}
-
- // non-indexed versions of the above that use the implied offset
- void put(sample_t sample) { sound_assert(m_offset < samples()); put_indexed(m_offset++, sample); }
- void add(sample_t sample) { sound_assert(m_offset < samples()); add_indexed(m_offset++, sample); }
- s32 fill(sample_t value, s32 count = -1) { m_offset += count = fill_indexed(m_offset, value, count); return count; }
- s32 copy(read_stream_view const &src, s32 count = -1) { count = copy_indexed(m_offset, src, m_offset, count); m_offset += count; src.reset(src.offset() + count); return count; }
- s32 add(read_stream_view const &src, s32 count = -1) { count = add_indexed(m_offset, src, m_offset, count); m_offset += count; src.reset(src.offset() + count); return count; }
+ void add(read_stream_view const &src, s32 start) { add(src, start, samples() - start); }
+ void add(read_stream_view const &src) { add(src, 0, samples()); }
};