From 312a41fddf05f0560be11ba1b354d45b957794e6 Mon Sep 17 00:00:00 2001 From: Tim Schumacher Date: Mon, 5 Dec 2022 00:55:19 +0100 Subject: [PATCH] LibAudio: Use `NonnullOwnPtr` to keep track of LoaderPlugin streams This doesn't have any immediate uses, but this adapts the code a bit more to `Core::Stream` conventions (as most functions there use NonnullOwnPtr to handle streams) and it makes it a bit clearer that this pointer isn't actually supposed to be null. In fact, MP3LoaderPlugin and FlacLoaderPlugin apparently forgot to check for that completely before starting to decode data. --- Userland/Libraries/LibAudio/FlacLoader.cpp | 2 +- Userland/Libraries/LibAudio/FlacLoader.h | 2 +- Userland/Libraries/LibAudio/Loader.cpp | 2 +- Userland/Libraries/LibAudio/Loader.h | 4 ++-- Userland/Libraries/LibAudio/MP3Loader.cpp | 2 +- Userland/Libraries/LibAudio/MP3Loader.h | 2 +- Userland/Libraries/LibAudio/WavLoader.cpp | 8 +------- Userland/Libraries/LibAudio/WavLoader.h | 2 +- 8 files changed, 9 insertions(+), 15 deletions(-) diff --git a/Userland/Libraries/LibAudio/FlacLoader.cpp b/Userland/Libraries/LibAudio/FlacLoader.cpp index 6c6d7f464b..8ea55fe0eb 100644 --- a/Userland/Libraries/LibAudio/FlacLoader.cpp +++ b/Userland/Libraries/LibAudio/FlacLoader.cpp @@ -25,7 +25,7 @@ namespace Audio { -FlacLoaderPlugin::FlacLoaderPlugin(OwnPtr stream) +FlacLoaderPlugin::FlacLoaderPlugin(NonnullOwnPtr stream) : LoaderPlugin(move(stream)) { } diff --git a/Userland/Libraries/LibAudio/FlacLoader.h b/Userland/Libraries/LibAudio/FlacLoader.h index 4271b43f29..0cf1e74a46 100644 --- a/Userland/Libraries/LibAudio/FlacLoader.h +++ b/Userland/Libraries/LibAudio/FlacLoader.h @@ -47,7 +47,7 @@ ALWAYS_INLINE ErrorOr decode_unsigned_exp_golomb(u8 order, BigEndianInputBi // https://datatracker.ietf.org/doc/html/draft-ietf-cellar-flac-03 (newer IETF draft that uses incompatible numberings and names) class FlacLoaderPlugin : public LoaderPlugin { public: - explicit FlacLoaderPlugin(OwnPtr stream); + explicit FlacLoaderPlugin(NonnullOwnPtr stream); virtual ~FlacLoaderPlugin() override = default; static Result, LoaderError> try_create(StringView path); diff --git a/Userland/Libraries/LibAudio/Loader.cpp b/Userland/Libraries/LibAudio/Loader.cpp index 7b662326ef..62e0b72855 100644 --- a/Userland/Libraries/LibAudio/Loader.cpp +++ b/Userland/Libraries/LibAudio/Loader.cpp @@ -11,7 +11,7 @@ namespace Audio { -LoaderPlugin::LoaderPlugin(OwnPtr stream) +LoaderPlugin::LoaderPlugin(NonnullOwnPtr stream) : m_stream(move(stream)) { } diff --git a/Userland/Libraries/LibAudio/Loader.h b/Userland/Libraries/LibAudio/Loader.h index 9a5d381eb3..e217609238 100644 --- a/Userland/Libraries/LibAudio/Loader.h +++ b/Userland/Libraries/LibAudio/Loader.h @@ -30,7 +30,7 @@ using MaybeLoaderError = Result; class LoaderPlugin { public: - explicit LoaderPlugin(OwnPtr stream); + explicit LoaderPlugin(NonnullOwnPtr stream); virtual ~LoaderPlugin() = default; virtual LoaderSamples get_more_samples(size_t max_bytes_to_read_from_input = 128 * KiB) = 0; @@ -58,7 +58,7 @@ public: Vector const& pictures() const { return m_pictures; }; protected: - OwnPtr m_stream; + NonnullOwnPtr m_stream; Vector m_pictures; }; diff --git a/Userland/Libraries/LibAudio/MP3Loader.cpp b/Userland/Libraries/LibAudio/MP3Loader.cpp index 3cbb014f27..3a28074c0e 100644 --- a/Userland/Libraries/LibAudio/MP3Loader.cpp +++ b/Userland/Libraries/LibAudio/MP3Loader.cpp @@ -14,7 +14,7 @@ namespace Audio { DSP::MDCT<12> MP3LoaderPlugin::s_mdct_12; DSP::MDCT<36> MP3LoaderPlugin::s_mdct_36; -MP3LoaderPlugin::MP3LoaderPlugin(OwnPtr stream) +MP3LoaderPlugin::MP3LoaderPlugin(NonnullOwnPtr stream) : LoaderPlugin(move(stream)) { } diff --git a/Userland/Libraries/LibAudio/MP3Loader.h b/Userland/Libraries/LibAudio/MP3Loader.h index 1bf5cbf3b3..4f1d729fb1 100644 --- a/Userland/Libraries/LibAudio/MP3Loader.h +++ b/Userland/Libraries/LibAudio/MP3Loader.h @@ -23,7 +23,7 @@ struct ScaleFactorBand; class MP3LoaderPlugin : public LoaderPlugin { public: - explicit MP3LoaderPlugin(OwnPtr stream); + explicit MP3LoaderPlugin(NonnullOwnPtr stream); virtual ~MP3LoaderPlugin() = default; static Result, LoaderError> try_create(StringView path); diff --git a/Userland/Libraries/LibAudio/WavLoader.cpp b/Userland/Libraries/LibAudio/WavLoader.cpp index 4018fe9122..d7477df590 100644 --- a/Userland/Libraries/LibAudio/WavLoader.cpp +++ b/Userland/Libraries/LibAudio/WavLoader.cpp @@ -18,7 +18,7 @@ namespace Audio { static constexpr size_t const maximum_wav_size = 1 * GiB; // FIXME: is there a more appropriate size limit? -WavLoaderPlugin::WavLoaderPlugin(OwnPtr stream) +WavLoaderPlugin::WavLoaderPlugin(NonnullOwnPtr stream) : LoaderPlugin(move(stream)) { } @@ -142,9 +142,6 @@ LoaderSamples WavLoaderPlugin::samples_from_pcm_data(Bytes const& data, size_t s LoaderSamples WavLoaderPlugin::get_more_samples(size_t max_samples_to_read_from_input) { - if (!m_stream) - return LoaderError { LoaderError::Category::Internal, static_cast(m_loaded_samples), "No stream; initialization failed" }; - auto remaining_samples = m_total_samples - m_loaded_samples; if (remaining_samples <= 0) return FixedArray {}; @@ -189,9 +186,6 @@ MaybeLoaderError WavLoaderPlugin::seek(int sample_index) // Specification reference: http://www-mmsp.ece.mcgill.ca/Documents/AudioFormats/WAVE/WAVE.html MaybeLoaderError WavLoaderPlugin::parse_header() { - if (!m_stream) - return LoaderError { LoaderError::Category::Internal, 0, "No stream" }; - bool ok = true; size_t bytes_read = 0; diff --git a/Userland/Libraries/LibAudio/WavLoader.h b/Userland/Libraries/LibAudio/WavLoader.h index 6eb2d936e7..2c1bbdfb76 100644 --- a/Userland/Libraries/LibAudio/WavLoader.h +++ b/Userland/Libraries/LibAudio/WavLoader.h @@ -29,7 +29,7 @@ static constexpr unsigned const WAVE_FORMAT_EXTENSIBLE = 0xFFFE; // Determined b // Parses and reads audio data from a WAV file. class WavLoaderPlugin : public LoaderPlugin { public: - explicit WavLoaderPlugin(OwnPtr stream); + explicit WavLoaderPlugin(NonnullOwnPtr stream); static Result, LoaderError> try_create(StringView path); static Result, LoaderError> try_create(Bytes buffer);