diff options
Diffstat (limited to 'Userland/Libraries/LibAudio/MP3Loader.cpp')
-rw-r--r-- | Userland/Libraries/LibAudio/MP3Loader.cpp | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/Userland/Libraries/LibAudio/MP3Loader.cpp b/Userland/Libraries/LibAudio/MP3Loader.cpp index 61340c00a7..3cbb014f27 100644 --- a/Userland/Libraries/LibAudio/MP3Loader.cpp +++ b/Userland/Libraries/LibAudio/MP3Loader.cpp @@ -14,20 +14,33 @@ namespace Audio { DSP::MDCT<12> MP3LoaderPlugin::s_mdct_12; DSP::MDCT<36> MP3LoaderPlugin::s_mdct_36; -MP3LoaderPlugin::MP3LoaderPlugin(StringView path) - : LoaderPlugin(path) +MP3LoaderPlugin::MP3LoaderPlugin(OwnPtr<Core::Stream::SeekableStream> stream) + : LoaderPlugin(move(stream)) { } -MP3LoaderPlugin::MP3LoaderPlugin(Bytes buffer) - : LoaderPlugin(buffer) +Result<NonnullOwnPtr<MP3LoaderPlugin>, LoaderError> MP3LoaderPlugin::try_create(StringView path) { + auto stream = LOADER_TRY(Core::Stream::BufferedFile::create(LOADER_TRY(Core::Stream::File::open(path, Core::Stream::OpenMode::Read)))); + auto loader = make<MP3LoaderPlugin>(move(stream)); + + LOADER_TRY(loader->initialize()); + + return loader; } -MaybeLoaderError MP3LoaderPlugin::initialize() +Result<NonnullOwnPtr<MP3LoaderPlugin>, LoaderError> MP3LoaderPlugin::try_create(Bytes buffer) { - LOADER_TRY(LoaderPlugin::initialize()); + auto stream = LOADER_TRY(Core::Stream::MemoryStream::construct(buffer)); + auto loader = make<MP3LoaderPlugin>(move(stream)); + + LOADER_TRY(loader->initialize()); + return loader; +} + +MaybeLoaderError MP3LoaderPlugin::initialize() +{ m_bitstream = LOADER_TRY(Core::Stream::BigEndianInputBitStream::construct(*m_stream)); TRY(synchronize()); |