diff --git a/Userland/Libraries/LibAudio/MP3Loader.cpp b/Userland/Libraries/LibAudio/MP3Loader.cpp index 56e956a261..15dff69cf1 100644 --- a/Userland/Libraries/LibAudio/MP3Loader.cpp +++ b/Userland/Libraries/LibAudio/MP3Loader.cpp @@ -81,7 +81,6 @@ MaybeLoaderError MP3LoaderPlugin::initialize() MaybeLoaderError MP3LoaderPlugin::reset() { TRY(seek(0)); - m_current_frame = {}; m_synthesis_buffer = {}; m_loaded_samples = 0; TRY(m_bit_reservoir.discard(m_bit_reservoir.used_buffer_size())); @@ -96,7 +95,6 @@ MaybeLoaderError MP3LoaderPlugin::seek(int const position) TRY(m_stream->seek(seek_entry->byte_offset, SeekMode::SetPosition)); m_loaded_samples = seek_entry->sample_index; } - m_current_frame = {}; m_synthesis_buffer = {}; TRY(m_bit_reservoir.discard(m_bit_reservoir.used_buffer_size())); m_bitstream->align_to_byte_boundary(); @@ -110,36 +108,30 @@ ErrorOr>, LoaderError> MP3LoaderPlugin::load_chunks(si while (samples_to_read > 0) { FixedArray samples = TRY(FixedArray::create(MP3::frame_size)); - if (!m_current_frame.has_value()) { - auto maybe_frame = read_next_frame(); - if (maybe_frame.is_error()) { - if (m_stream->is_eof()) { - return Vector> {}; - } - return maybe_frame.release_error(); - } - m_current_frame = maybe_frame.release_value(); - if (!m_current_frame.has_value()) - break; + auto maybe_frame = read_next_frame(); + if (maybe_frame.is_error()) { + if (m_stream->is_eof()) + return Vector> {}; + return maybe_frame.release_error(); } + auto frame = maybe_frame.release_value(); - bool const is_stereo = m_current_frame->header.channel_count() == 2; + bool const is_stereo = frame.header.channel_count() == 2; size_t current_frame_read = 0; for (; current_frame_read < MP3::granule_size; current_frame_read++) { - auto const left_sample = m_current_frame->channels[0].granules[0].pcm[current_frame_read / 32][current_frame_read % 32]; - auto const right_sample = is_stereo ? m_current_frame->channels[1].granules[0].pcm[current_frame_read / 32][current_frame_read % 32] : left_sample; + auto const left_sample = frame.channels[0].granules[0].pcm[current_frame_read / 32][current_frame_read % 32]; + auto const right_sample = is_stereo ? frame.channels[1].granules[0].pcm[current_frame_read / 32][current_frame_read % 32] : left_sample; samples[current_frame_read] = Sample { left_sample, right_sample }; samples_to_read--; } for (; current_frame_read < MP3::frame_size; current_frame_read++) { - auto const left_sample = m_current_frame->channels[0].granules[1].pcm[(current_frame_read - MP3::granule_size) / 32][(current_frame_read - MP3::granule_size) % 32]; - auto const right_sample = is_stereo ? m_current_frame->channels[1].granules[1].pcm[(current_frame_read - MP3::granule_size) / 32][(current_frame_read - MP3::granule_size) % 32] : left_sample; + auto const left_sample = frame.channels[0].granules[1].pcm[(current_frame_read - MP3::granule_size) / 32][(current_frame_read - MP3::granule_size) % 32]; + auto const right_sample = is_stereo ? frame.channels[1].granules[1].pcm[(current_frame_read - MP3::granule_size) / 32][(current_frame_read - MP3::granule_size) % 32] : left_sample; samples[current_frame_read] = Sample { left_sample, right_sample }; samples_to_read--; } m_loaded_samples += samples.size(); TRY(frames.try_append(move(samples))); - m_current_frame = {}; } return frames; diff --git a/Userland/Libraries/LibAudio/MP3Loader.h b/Userland/Libraries/LibAudio/MP3Loader.h index 3187ffe1c3..8dc363c05a 100644 --- a/Userland/Libraries/LibAudio/MP3Loader.h +++ b/Userland/Libraries/LibAudio/MP3Loader.h @@ -72,7 +72,6 @@ private: int m_total_samples { 0 }; size_t m_loaded_samples { 0 }; - AK::Optional m_current_frame; OwnPtr m_bitstream; AllocatingMemoryStream m_bit_reservoir; };