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:
parent
88a9ff76b0
commit
c1d4ff919a
2 changed files with 11 additions and 20 deletions
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
};
|
};
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue