1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 02:37:36 +00:00

LibAudio+LibCore: Remove unnecessary IODeviceStreamReader.h

IODeviceStreamReader isn't pulling its weight.
It's essentially a subset of InputFileStream with only one user
(WavLoader).

This refactors WavLoader to use InputFileStream instead.
This commit is contained in:
Nick Miller 2021-06-05 09:38:43 -07:00 committed by Ali Mohammad Pur
parent 06ea31d0d5
commit 3938b56577
3 changed files with 21 additions and 85 deletions

View file

@ -11,7 +11,7 @@
#include <LibAudio/Buffer.h>
#include <LibAudio/WavLoader.h>
#include <LibCore/File.h>
#include <LibCore/IODeviceStreamReader.h>
#include <LibCore/FileStream.h>
namespace Audio {
@ -47,11 +47,6 @@ WavLoaderPlugin::WavLoaderPlugin(const ByteBuffer& buffer)
m_resampler = make<ResampleHelper>(m_sample_rate, 44100);
}
bool WavLoaderPlugin::sniff()
{
return valid;
}
RefPtr<Buffer> WavLoaderPlugin::get_more_samples(size_t max_bytes_to_read_from_input)
{
dbgln_if(AWAVLOADER_DEBUG, "Read {} bytes WAV with num_channels {} sample rate {}, "
@ -89,58 +84,40 @@ void WavLoaderPlugin::seek(const int position)
m_stream->seek(byte_position);
}
void WavLoaderPlugin::reset()
{
seek(0);
}
bool WavLoaderPlugin::parse_header()
{
OwnPtr<Core::IODeviceStreamReader> file_stream;
bool ok = true;
OwnPtr<Core::InputFileStream> file_stream;
if (m_file)
file_stream = make<Core::IODeviceStreamReader>(*m_file);
file_stream = make<Core::InputFileStream>(*m_file);
AK::InputStream* const stream =
(m_file ?
file_stream.ptr() :
dynamic_cast<AK::InputStream*>(m_stream.ptr()));
bool ok = true;
auto read_u8 = [&]() -> u8 {
u8 value;
if (m_file) {
*file_stream >> value;
if (file_stream->handle_read_failure())
ok = false;
} else {
*m_stream >> value;
if (m_stream->handle_any_error())
ok = false;
}
*stream >> value;
if (stream->handle_any_error())
ok = false;
return value;
};
auto read_u16 = [&]() -> u16 {
u16 value;
if (m_file) {
*file_stream >> value;
if (file_stream->handle_read_failure())
ok = false;
} else {
*m_stream >> value;
if (m_stream->handle_any_error())
ok = false;
}
*stream >> value;
if (stream->handle_any_error())
ok = false;
return value;
};
auto read_u32 = [&]() -> u32 {
u32 value;
if (m_file) {
*file_stream >> value;
if (file_stream->handle_read_failure())
ok = false;
} else {
*m_stream >> value;
if (m_stream->handle_any_error())
ok = false;
}
*stream >> value;
if (stream->handle_any_error())
ok = false;
return value;
};