1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 16:47:36 +00:00

LibAudio: Remove the m_current_frame field from MP3Loader

This field was only used within one function, where it could just be a
local variable.
This commit is contained in:
Zaggy1024 2023-08-26 02:11:20 -05:00 committed by Tim Flynn
parent 88a9ff76b0
commit c1d4ff919a
2 changed files with 11 additions and 20 deletions

View file

@ -81,7 +81,6 @@ MaybeLoaderError MP3LoaderPlugin::initialize()
MaybeLoaderError MP3LoaderPlugin::reset() MaybeLoaderError MP3LoaderPlugin::reset()
{ {
TRY(seek(0)); TRY(seek(0));
m_current_frame = {};
m_synthesis_buffer = {}; m_synthesis_buffer = {};
m_loaded_samples = 0; m_loaded_samples = 0;
TRY(m_bit_reservoir.discard(m_bit_reservoir.used_buffer_size())); 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)); TRY(m_stream->seek(seek_entry->byte_offset, SeekMode::SetPosition));
m_loaded_samples = seek_entry->sample_index; m_loaded_samples = seek_entry->sample_index;
} }
m_current_frame = {};
m_synthesis_buffer = {}; m_synthesis_buffer = {};
TRY(m_bit_reservoir.discard(m_bit_reservoir.used_buffer_size())); TRY(m_bit_reservoir.discard(m_bit_reservoir.used_buffer_size()));
m_bitstream->align_to_byte_boundary(); m_bitstream->align_to_byte_boundary();
@ -110,36 +108,30 @@ ErrorOr<Vector<FixedArray<Sample>>, LoaderError> MP3LoaderPlugin::load_chunks(si
while (samples_to_read > 0) { while (samples_to_read > 0) {
FixedArray<Sample> samples = TRY(FixedArray<Sample>::create(MP3::frame_size)); FixedArray<Sample> samples = TRY(FixedArray<Sample>::create(MP3::frame_size));
if (!m_current_frame.has_value()) { auto maybe_frame = read_next_frame();
auto maybe_frame = read_next_frame(); if (maybe_frame.is_error()) {
if (maybe_frame.is_error()) { if (m_stream->is_eof())
if (m_stream->is_eof()) { return Vector<FixedArray<Sample>> {};
return Vector<FixedArray<Sample>> {}; return maybe_frame.release_error();
}
return maybe_frame.release_error();
}
m_current_frame = maybe_frame.release_value();
if (!m_current_frame.has_value())
break;
} }
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; size_t current_frame_read = 0;
for (; current_frame_read < MP3::granule_size; current_frame_read++) { 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 left_sample = 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 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[current_frame_read] = Sample { left_sample, right_sample };
samples_to_read--; samples_to_read--;
} }
for (; current_frame_read < MP3::frame_size; current_frame_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 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 ? 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 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[current_frame_read] = Sample { left_sample, right_sample };
samples_to_read--; samples_to_read--;
} }
m_loaded_samples += samples.size(); m_loaded_samples += samples.size();
TRY(frames.try_append(move(samples))); TRY(frames.try_append(move(samples)));
m_current_frame = {};
} }
return frames; return frames;

View file

@ -72,7 +72,6 @@ private:
int m_total_samples { 0 }; int m_total_samples { 0 };
size_t m_loaded_samples { 0 }; size_t m_loaded_samples { 0 };
AK::Optional<MP3::MP3Frame> m_current_frame;
OwnPtr<BigEndianInputBitStream> m_bitstream; OwnPtr<BigEndianInputBitStream> m_bitstream;
AllocatingMemoryStream m_bit_reservoir; AllocatingMemoryStream m_bit_reservoir;
}; };