mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 05:07:45 +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:
parent
06ea31d0d5
commit
3938b56577
3 changed files with 21 additions and 85 deletions
|
@ -11,7 +11,7 @@
|
||||||
#include <LibAudio/Buffer.h>
|
#include <LibAudio/Buffer.h>
|
||||||
#include <LibAudio/WavLoader.h>
|
#include <LibAudio/WavLoader.h>
|
||||||
#include <LibCore/File.h>
|
#include <LibCore/File.h>
|
||||||
#include <LibCore/IODeviceStreamReader.h>
|
#include <LibCore/FileStream.h>
|
||||||
|
|
||||||
namespace Audio {
|
namespace Audio {
|
||||||
|
|
||||||
|
@ -47,11 +47,6 @@ WavLoaderPlugin::WavLoaderPlugin(const ByteBuffer& buffer)
|
||||||
m_resampler = make<ResampleHelper>(m_sample_rate, 44100);
|
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)
|
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 {}, "
|
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);
|
m_stream->seek(byte_position);
|
||||||
}
|
}
|
||||||
|
|
||||||
void WavLoaderPlugin::reset()
|
|
||||||
{
|
|
||||||
seek(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool WavLoaderPlugin::parse_header()
|
bool WavLoaderPlugin::parse_header()
|
||||||
{
|
{
|
||||||
OwnPtr<Core::IODeviceStreamReader> file_stream;
|
OwnPtr<Core::InputFileStream> file_stream;
|
||||||
bool ok = true;
|
|
||||||
|
|
||||||
if (m_file)
|
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 {
|
auto read_u8 = [&]() -> u8 {
|
||||||
u8 value;
|
u8 value;
|
||||||
if (m_file) {
|
*stream >> value;
|
||||||
*file_stream >> value;
|
if (stream->handle_any_error())
|
||||||
if (file_stream->handle_read_failure())
|
ok = false;
|
||||||
ok = false;
|
|
||||||
} else {
|
|
||||||
*m_stream >> value;
|
|
||||||
if (m_stream->handle_any_error())
|
|
||||||
ok = false;
|
|
||||||
}
|
|
||||||
return value;
|
return value;
|
||||||
};
|
};
|
||||||
|
|
||||||
auto read_u16 = [&]() -> u16 {
|
auto read_u16 = [&]() -> u16 {
|
||||||
u16 value;
|
u16 value;
|
||||||
if (m_file) {
|
*stream >> value;
|
||||||
*file_stream >> value;
|
if (stream->handle_any_error())
|
||||||
if (file_stream->handle_read_failure())
|
ok = false;
|
||||||
ok = false;
|
|
||||||
} else {
|
|
||||||
*m_stream >> value;
|
|
||||||
if (m_stream->handle_any_error())
|
|
||||||
ok = false;
|
|
||||||
}
|
|
||||||
return value;
|
return value;
|
||||||
};
|
};
|
||||||
|
|
||||||
auto read_u32 = [&]() -> u32 {
|
auto read_u32 = [&]() -> u32 {
|
||||||
u32 value;
|
u32 value;
|
||||||
if (m_file) {
|
*stream >> value;
|
||||||
*file_stream >> value;
|
if (stream->handle_any_error())
|
||||||
if (file_stream->handle_read_failure())
|
ok = false;
|
||||||
ok = false;
|
|
||||||
} else {
|
|
||||||
*m_stream >> value;
|
|
||||||
if (m_stream->handle_any_error())
|
|
||||||
ok = false;
|
|
||||||
}
|
|
||||||
return value;
|
return value;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -33,14 +33,14 @@ public:
|
||||||
WavLoaderPlugin(const StringView& path);
|
WavLoaderPlugin(const StringView& path);
|
||||||
WavLoaderPlugin(const ByteBuffer& buffer);
|
WavLoaderPlugin(const ByteBuffer& buffer);
|
||||||
|
|
||||||
virtual bool sniff() override;
|
virtual bool sniff() override { return valid; }
|
||||||
|
|
||||||
virtual bool has_error() override { return !m_error_string.is_null(); }
|
virtual bool has_error() override { return !m_error_string.is_null(); }
|
||||||
virtual const char* error_string() override { return m_error_string.characters(); }
|
virtual const char* error_string() override { return m_error_string.characters(); }
|
||||||
|
|
||||||
virtual RefPtr<Buffer> get_more_samples(size_t max_bytes_to_read_from_input = 128 * KiB) override;
|
virtual RefPtr<Buffer> get_more_samples(size_t max_bytes_to_read_from_input = 128 * KiB) override;
|
||||||
|
|
||||||
virtual void reset() override;
|
virtual void reset() override { return seek(0); }
|
||||||
virtual void seek(const int position) override;
|
virtual void seek(const int position) override;
|
||||||
|
|
||||||
virtual int loaded_samples() override { return m_loaded_samples; }
|
virtual int loaded_samples() override { return m_loaded_samples; }
|
||||||
|
|
|
@ -1,41 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: BSD-2-Clause
|
|
||||||
*/
|
|
||||||
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include <AK/StdLibExtras.h>
|
|
||||||
#include <LibCore/IODevice.h>
|
|
||||||
|
|
||||||
namespace Core {
|
|
||||||
|
|
||||||
class IODeviceStreamReader {
|
|
||||||
public:
|
|
||||||
IODeviceStreamReader(IODevice& device)
|
|
||||||
: m_device(device)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
bool handle_read_failure()
|
|
||||||
{
|
|
||||||
return exchange(m_had_failure, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<typename T>
|
|
||||||
IODeviceStreamReader& operator>>(T& value)
|
|
||||||
{
|
|
||||||
int nread = m_device.read((u8*)&value, sizeof(T));
|
|
||||||
VERIFY(nread == sizeof(T));
|
|
||||||
if (nread != sizeof(T))
|
|
||||||
m_had_failure = true;
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
|
||||||
IODevice& m_device;
|
|
||||||
bool m_had_failure { false };
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
|
Loading…
Add table
Add a link
Reference in a new issue