From a0ef0e4ce93f0d45203e7dcf4abddd2a268ef201 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Banaan=20Ananas?= Date: Sat, 14 Dec 2013 15:53:00 +0000 Subject: [PATCH] r26603 update --- src/emu/sound/mpeg_audio.c | 6 +++++- src/emu/sound/mpeg_audio.h | 3 +++ src/emu/sound/ymz770.c | 8 ++++---- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/emu/sound/mpeg_audio.c b/src/emu/sound/mpeg_audio.c index 71d8561fd5c..ed9e544e958 100644 --- a/src/emu/sound/mpeg_audio.c +++ b/src/emu/sound/mpeg_audio.c @@ -14,12 +14,16 @@ mpeg_audio::mpeg_audio(const void *_base, unsigned int _accepted, bool lsb_first do_gb = lsb_first ? do_gb_lsb : do_gb_msb; position_align = _position_align ? _position_align - 1 : 0; + clear(); +} + +void mpeg_audio::clear() +{ memset(audio_buffer, 0, sizeof(audio_buffer)); audio_buffer_pos[0] = 16*32; audio_buffer_pos[1] = 16*32; } - bool mpeg_audio::decode_buffer(int &pos, int limit, short *output, int &output_samples, int &sample_rate, int &channels) { diff --git a/src/emu/sound/mpeg_audio.h b/src/emu/sound/mpeg_audio.h index 3c072e6b5ae..380aaffa8af 100644 --- a/src/emu/sound/mpeg_audio.h +++ b/src/emu/sound/mpeg_audio.h @@ -49,6 +49,9 @@ public: int &output_samples, int &sample_rate, int &channels); + // Clear audio buffer + void clear(); + // Change the base pointer void set_base(const void *base); diff --git a/src/emu/sound/ymz770.c b/src/emu/sound/ymz770.c index 4e8d5adcf2a..ca96a97cba4 100644 --- a/src/emu/sound/ymz770.c +++ b/src/emu/sound/ymz770.c @@ -106,7 +106,7 @@ void ymz770_device::device_reset() m_channels[ch].is_playing = false; m_channels[ch].is_seq_playing = false; m_channels[ch].output_remaining = 0; - //m_channels[ch].decoder->clear(); + m_channels[ch].decoder->clear(); } } @@ -175,8 +175,8 @@ void ymz770_device::sound_stream_update(sound_stream &stream, stream_sample_t ** mix += (m_channels[ch].output_data[m_channels[ch].output_ptr++]*m_channels[ch].volume); m_channels[ch].output_remaining--; - //if (m_channels[ch].output_remaining == 0 && !m_channels[ch].is_playing) - //m_channels[ch].decoder->clear(); + if (m_channels[ch].output_remaining == 0 && !m_channels[ch].is_playing) + m_channels[ch].decoder->clear(); } else if (m_channels[ch].is_playing) @@ -195,7 +195,7 @@ retry: { m_channels[ch].is_playing = false; m_channels[ch].output_remaining = 0; - //m_channels[ch].decoder->clear(); + m_channels[ch].decoder->clear(); } }