From d29797f1180f6bfa00c5654f879c479de6024cdf Mon Sep 17 00:00:00 2001 From: Jelle Raaijmakers Date: Wed, 11 Sep 2024 12:43:56 +0200 Subject: [PATCH] LibMedia: Add ogg/vorbis support Technically this supports any ogg/* audio stream, but it was at least tested successfully on ogg/vorbis :^) --- .../Userland/Libraries/LibMedia/BUILD.gn | 1 + Tests/LibMedia/CMakeLists.txt | 1 + Tests/LibMedia/TestVorbisDecode.cpp | 29 ++ Tests/LibMedia/vorbis/44_1Khz_stereo.ogg | Bin 0 -> 107126 bytes Userland/Libraries/LibMedia/Audio/Loader.cpp | 21 +- .../Libraries/LibMedia/Audio/OggLoader.cpp | 262 ++++++++++++++++++ Userland/Libraries/LibMedia/Audio/OggLoader.h | 54 ++++ Userland/Libraries/LibMedia/CMakeLists.txt | 5 +- .../LibWeb/HTML/HTMLMediaElement.cpp | 7 +- 9 files changed, 363 insertions(+), 17 deletions(-) create mode 100644 Tests/LibMedia/TestVorbisDecode.cpp create mode 100644 Tests/LibMedia/vorbis/44_1Khz_stereo.ogg create mode 100644 Userland/Libraries/LibMedia/Audio/OggLoader.cpp create mode 100644 Userland/Libraries/LibMedia/Audio/OggLoader.h diff --git a/Meta/gn/secondary/Userland/Libraries/LibMedia/BUILD.gn b/Meta/gn/secondary/Userland/Libraries/LibMedia/BUILD.gn index f8a47ff2f9..54f5cff9fa 100644 --- a/Meta/gn/secondary/Userland/Libraries/LibMedia/BUILD.gn +++ b/Meta/gn/secondary/Userland/Libraries/LibMedia/BUILD.gn @@ -8,6 +8,7 @@ shared_library("LibMedia") { "Audio/Loader.cpp", "Audio/MP3Loader.cpp", "Audio/Metadata.cpp", + "Audio/OggLoader.cpp", "Audio/PlaybackStream.cpp", "Audio/QOALoader.cpp", "Audio/QOATypes.cpp", diff --git a/Tests/LibMedia/CMakeLists.txt b/Tests/LibMedia/CMakeLists.txt index 5d2d070b14..f0ea67926e 100644 --- a/Tests/LibMedia/CMakeLists.txt +++ b/Tests/LibMedia/CMakeLists.txt @@ -2,6 +2,7 @@ set(TEST_SOURCES TestH264Decode.cpp TestParseMatroska.cpp TestPlaybackStream.cpp + TestVorbisDecode.cpp TestVP9Decode.cpp TestWav.cpp ) diff --git a/Tests/LibMedia/TestVorbisDecode.cpp b/Tests/LibMedia/TestVorbisDecode.cpp new file mode 100644 index 0000000000..92a6c82a07 --- /dev/null +++ b/Tests/LibMedia/TestVorbisDecode.cpp @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2024, Jelle Raaijmakers + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#include +#include + +static void run_test(StringView file_name, int const num_samples, int const channels, u32 const rate) +{ + constexpr auto format = "Ogg Vorbis (.ogg)"; + constexpr int bits = 32; + + ByteString in_path = ByteString::formatted("vorbis/{}", file_name); + + auto loader = TRY_OR_FAIL(Audio::Loader::create(in_path)); + + EXPECT_EQ(loader->format_name(), format); + EXPECT_EQ(loader->sample_rate(), rate); + EXPECT_EQ(loader->num_channels(), channels); + EXPECT_EQ(loader->bits_per_sample(), bits); + EXPECT_EQ(loader->total_samples(), num_samples); +} + +TEST_CASE(44_1Khz_stereo) +{ + run_test("44_1Khz_stereo.ogg"sv, 352800, 2, 44100); +} diff --git a/Tests/LibMedia/vorbis/44_1Khz_stereo.ogg b/Tests/LibMedia/vorbis/44_1Khz_stereo.ogg new file mode 100644 index 0000000000000000000000000000000000000000..52be9034a1e1b06ecbbee7f7fa912aa4679ec029 GIT binary patch literal 107126 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 RpZ-d8mYPhofbkG*t}#`}Poce}(Co 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 * * SPDX-License-Identifier: BSD-2-Clause */ -#include "FlacLoader.h" #include "Loader.h" +#include "FlacLoader.h" #include "MP3Loader.h" +#include "OggLoader.h" #include "QOALoader.h" #include "WavLoader.h" #include @@ -29,17 +31,14 @@ struct LoaderPluginInitializer { ErrorOr, LoaderError> (*create)(NonnullOwnPtr); }; -#define ENUMERATE_LOADER_PLUGINS \ - __ENUMERATE_LOADER_PLUGIN(Wav) \ - __ENUMERATE_LOADER_PLUGIN(Flac) \ - __ENUMERATE_LOADER_PLUGIN(QOA) \ - __ENUMERATE_LOADER_PLUGIN(MP3) - static constexpr LoaderPluginInitializer s_initializers[] = { -#define __ENUMERATE_LOADER_PLUGIN(Type) \ - { Type##LoaderPlugin::sniff, Type##LoaderPlugin::create }, - ENUMERATE_LOADER_PLUGINS -#undef __ENUMERATE_LOADER_PLUGIN + { FlacLoaderPlugin::sniff, FlacLoaderPlugin::create }, + { QOALoaderPlugin::sniff, QOALoaderPlugin::create }, +#ifdef USE_FFMPEG + { OggLoaderPlugin::sniff, OggLoaderPlugin::create }, +#endif + { WavLoaderPlugin::sniff, WavLoaderPlugin::create }, + { MP3LoaderPlugin::sniff, MP3LoaderPlugin::create }, }; ErrorOr, LoaderError> Loader::create(StringView path) diff --git a/Userland/Libraries/LibMedia/Audio/OggLoader.cpp b/Userland/Libraries/LibMedia/Audio/OggLoader.cpp new file mode 100644 index 0000000000..49ed3a95f1 --- /dev/null +++ b/Userland/Libraries/LibMedia/Audio/OggLoader.cpp @@ -0,0 +1,262 @@ +/* + * Copyright (c) 2024, Jelle Raaijmakers + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#include "OggLoader.h" +#include +#include +#include + +namespace Audio { + +OggLoaderPlugin::OggLoaderPlugin(NonnullOwnPtr stream) + : LoaderPlugin(move(stream)) +{ +} + +OggLoaderPlugin::~OggLoaderPlugin() +{ + av_frame_free(&m_frame); + av_packet_free(&m_packet); + avcodec_free_context(&m_codec_context); + avformat_close_input(&m_format_context); + avio_context_free(&m_avio_context); + av_free(m_avio_buffer); +} + +ErrorOr, LoaderError> OggLoaderPlugin::create(NonnullOwnPtr stream) +{ + auto loader = make(move(stream)); + TRY(loader->initialize()); + return loader; +} + +MaybeLoaderError OggLoaderPlugin::initialize() +{ + m_format_context = avformat_alloc_context(); + if (m_format_context == nullptr) + return LoaderError { LoaderError::Category::IO, "Failed to allocate format context" }; + + m_avio_buffer = av_malloc(PAGE_SIZE); + if (m_avio_buffer == nullptr) + return LoaderError { LoaderError::Category::IO, "Failed to allocate AVIO buffer" }; + + // This AVIOContext explains to avformat how to interact with our stream + m_avio_context = avio_alloc_context( + static_cast(m_avio_buffer), + PAGE_SIZE, + 0, + m_stream.ptr(), + [](void* opaque, u8* buffer, int size) -> int { + auto& stream = *static_cast(opaque); + AK::Bytes buffer_bytes { buffer, static_cast(size) }; + auto read_bytes_or_error = stream.read_some(buffer_bytes); + if (read_bytes_or_error.is_error()) { + if (read_bytes_or_error.error().code() == EOF) + return AVERROR_EOF; + return AVERROR_UNKNOWN; + } + return static_cast(read_bytes_or_error.value().size()); + }, + nullptr, + [](void* opaque, int64_t offset, int origin) -> int64_t { + auto& stream = *static_cast(opaque); + auto seek_mode_from_whence = [](int origin) -> SeekMode { + if (origin == SEEK_CUR) + return SeekMode::FromCurrentPosition; + if (origin == SEEK_END) + return SeekMode::FromEndPosition; + return SeekMode::SetPosition; + }; + auto offset_or_error = stream.seek(offset, seek_mode_from_whence(origin)); + if (offset_or_error.is_error()) + return -EIO; + return 0; + }); + + m_format_context->pb = m_avio_context; + + // Open the stream as an ogg container + auto* av_input_format = av_find_input_format("ogg"); + if (av_input_format == nullptr) + return LoaderError { LoaderError::Category::Internal, "Failed to obtain input format" }; + + if (avformat_open_input(&m_format_context, nullptr, av_input_format, nullptr) < 0) + return LoaderError { LoaderError::Category::IO, "Failed to open input for format parsing" }; + + // Find the best stream to play within the container + int best_stream_index = av_find_best_stream(m_format_context, AVMediaType::AVMEDIA_TYPE_AUDIO, -1, -1, nullptr, 0); + if (best_stream_index < 0) + return LoaderError { LoaderError::Category::Format, "Failed to find an audio stream" }; + m_audio_stream = m_format_context->streams[best_stream_index]; + + // Set up the codec to decode the audio stream + AVCodec const* codec = avcodec_find_decoder(m_audio_stream->codecpar->codec_id); + if (codec == nullptr) + return LoaderError { LoaderError::Category::IO, "Failed to find a suitable decoder" }; + + m_codec_context = avcodec_alloc_context3(codec); + if (m_codec_context == nullptr) + return LoaderError { LoaderError::Category::IO, "Failed to allocate the codec context" }; + + if (avcodec_parameters_to_context(m_codec_context, m_audio_stream->codecpar) < 0) + return LoaderError { LoaderError::Category::IO, "Failed to copy codec parameters" }; + + m_codec_context->thread_count = AK::min(static_cast(Core::System::hardware_concurrency()), 4); + + if (avcodec_open2(m_codec_context, codec, nullptr) < 0) + return LoaderError { LoaderError::Category::IO, "Failed to open input for decoding" }; + + double duration_in_seconds = m_audio_stream->duration * time_base(); + m_total_samples = AK::round_to(m_codec_context->sample_rate * duration_in_seconds); + + // Prepare packet and frame buffers + m_packet = av_packet_alloc(); + if (m_packet == nullptr) + return LoaderError { LoaderError::Category::IO, "Failed to allocate packet" }; + + m_frame = av_frame_alloc(); + if (m_frame == nullptr) + return LoaderError { LoaderError::Category::IO, "Failed to allocate frame" }; + + return {}; +} + +double OggLoaderPlugin::time_base() const +{ + return static_cast(m_audio_stream->time_base.num) / m_audio_stream->time_base.den; +} + +bool OggLoaderPlugin::sniff(SeekableStream& stream) +{ + LittleEndianInputBitStream bit_input { MaybeOwned(stream) }; + auto maybe_ogg = bit_input.read_bits(32); + return !maybe_ogg.is_error() && maybe_ogg.value() == 0x5367674F; // "OggS" +} + +static ErrorOr> extract_samples_from_frame(AVFrame& frame) +{ + size_t number_of_samples = frame.nb_samples; +#ifdef USE_FFMPEG_CH_LAYOUT + size_t number_of_channels = frame.ch_layout.nb_channels; +#else + size_t number_of_channels = frame.channels; +#endif + AVSampleFormat format = static_cast(frame.format); + + VERIFY(number_of_samples > 0); + + // FIXME: handle number_of_channels > 2 + if (number_of_channels != 1 && number_of_channels != 2) + return Error::from_string_view("Unsupported number of channels"sv); + + // FIXME: handle other formats + if (format != AV_SAMPLE_FMT_FLTP) + return Error::from_string_view("Unsupported sample format"sv); + + // FIXME: handle non-planar data (this is also implied by *P format(s) above) + if (av_sample_fmt_is_planar(format) != 1) + return Error::from_string_view("Non-planar sample data is not supported yet"sv); + + auto read_sample = [&](uint8_t* plane, size_t sample) -> float { + switch (format) { + case AV_SAMPLE_FMT_FLTP: + return reinterpret_cast(plane)[sample]; + default: + VERIFY_NOT_REACHED(); + } + }; + + auto samples = TRY(FixedArray::create(number_of_samples)); + for (size_t sample = 0; sample < number_of_samples; ++sample) { + if (number_of_channels == 1) { + samples.unchecked_at(sample) = Sample { read_sample(frame.extended_data[0], sample) }; + } else { + samples.unchecked_at(sample) = Sample { + read_sample(frame.extended_data[0], sample), + read_sample(frame.extended_data[1], sample), + }; + } + } + return samples; +} + +ErrorOr>, LoaderError> OggLoaderPlugin::load_chunks(size_t samples_to_read_from_input) +{ + Vector> chunks {}; + + for (;;) { + // Obtain a packet and send it to the decoder + if (av_read_frame(m_format_context, m_packet) < 0) + return LoaderError { LoaderError::Category::IO, "Failed to read frame" }; + if (avcodec_send_packet(m_codec_context, m_packet) < 0) + return LoaderError { LoaderError::Category::IO, "Failed to send packet" }; + av_packet_unref(m_packet); + + // Ask the decoder for a new frame. We might not have sent enough data yet + auto receive_frame_error = avcodec_receive_frame(m_codec_context, m_frame); + if (receive_frame_error == 0) { + chunks.append(TRY(extract_samples_from_frame(*m_frame))); + m_loaded_samples += m_frame->nb_samples; + + samples_to_read_from_input -= AK::min(samples_to_read_from_input, m_frame->nb_samples); + if (samples_to_read_from_input == 0) + break; + continue; + } + + if (receive_frame_error == AVERROR(EAGAIN)) + continue; + if (receive_frame_error == AVERROR_EOF) + return Error::from_errno(EOF); + + return LoaderError { LoaderError::Category::IO, "Failed to receive frame" }; + } + + av_frame_unref(m_frame); + + return chunks; +} + +MaybeLoaderError OggLoaderPlugin::reset() +{ + return seek(0); +} + +MaybeLoaderError OggLoaderPlugin::seek(int sample_index) +{ + auto sample_position_in_seconds = static_cast(sample_index) / m_codec_context->sample_rate; + auto sample_timestamp = AK::round_to(sample_position_in_seconds / time_base()); + + if (av_seek_frame(m_format_context, m_audio_stream->index, sample_timestamp, 0) < 0) + return LoaderError { LoaderError::Category::IO, "Failed to seek" }; + + m_loaded_samples = sample_index; + return {}; +} + +u32 OggLoaderPlugin::sample_rate() +{ + VERIFY(m_codec_context != nullptr); + return m_codec_context->sample_rate; +} + +u16 OggLoaderPlugin::num_channels() +{ + VERIFY(m_codec_context != nullptr); +#ifdef USE_FFMPEG_CH_LAYOUT + return m_codec_context->ch_layout.nb_channels; +#else + return m_codec_context->channels; +#endif +} + +PcmSampleFormat OggLoaderPlugin::pcm_format() +{ + // FIXME: pcm_format() is unused, always return Float for now + return PcmSampleFormat::Float32; +} + +} diff --git a/Userland/Libraries/LibMedia/Audio/OggLoader.h b/Userland/Libraries/LibMedia/Audio/OggLoader.h new file mode 100644 index 0000000000..0a96573175 --- /dev/null +++ b/Userland/Libraries/LibMedia/Audio/OggLoader.h @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2024, Jelle Raaijmakers + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#pragma once + +#include "Loader.h" + +extern "C" { +#include +#include +} + +namespace Audio { + +class OggLoaderPlugin : public LoaderPlugin { +public: + explicit OggLoaderPlugin(NonnullOwnPtr stream); + virtual ~OggLoaderPlugin(); + + static bool sniff(SeekableStream& stream); + static ErrorOr, LoaderError> create(NonnullOwnPtr); + + virtual ErrorOr>, LoaderError> load_chunks(size_t samples_to_read_from_input) override; + + virtual MaybeLoaderError reset() override; + virtual MaybeLoaderError seek(int sample_index) override; + + virtual int loaded_samples() override { return m_loaded_samples; } + virtual int total_samples() override { return m_total_samples; } + virtual u32 sample_rate() override; + virtual u16 num_channels() override; + virtual PcmSampleFormat pcm_format() override; + virtual ByteString format_name() override { return "Ogg Vorbis (.ogg)"; } + +private: + MaybeLoaderError initialize(); + double time_base() const; + + void* m_avio_buffer { nullptr }; + AVIOContext* m_avio_context { nullptr }; + AVCodecContext* m_codec_context { nullptr }; + AVFormatContext* m_format_context { nullptr }; + AVStream* m_audio_stream; + AVFrame* m_frame; + AVPacket* m_packet; + + int m_loaded_samples { 0 }; + int m_total_samples { 0 }; +}; + +} diff --git a/Userland/Libraries/LibMedia/CMakeLists.txt b/Userland/Libraries/LibMedia/CMakeLists.txt index 148f73abde..4e476b6c60 100644 --- a/Userland/Libraries/LibMedia/CMakeLists.txt +++ b/Userland/Libraries/LibMedia/CMakeLists.txt @@ -29,7 +29,10 @@ if (HAVE_PULSEAUDIO) endif() if (HAS_FFMPEG) - list(APPEND SOURCES FFmpeg/FFmpegVideoDecoder.cpp) + list(APPEND SOURCES + Audio/OggLoader.cpp + FFmpeg/FFmpegVideoDecoder.cpp + ) else() list(APPEND SOURCES FFmpeg/FFmpegVideoDecoderStub.cpp) endif() diff --git a/Userland/Libraries/LibWeb/HTML/HTMLMediaElement.cpp b/Userland/Libraries/LibWeb/HTML/HTMLMediaElement.cpp index f0352d8645..211a618b68 100644 --- a/Userland/Libraries/LibWeb/HTML/HTMLMediaElement.cpp +++ b/Userland/Libraries/LibWeb/HTML/HTMLMediaElement.cpp @@ -204,12 +204,9 @@ Bindings::CanPlayTypeResult HTMLMediaElement::can_play_type(StringView type) con return Bindings::CanPlayTypeResult::Probably; if (mime_type->subtype() == "flac"sv) return Bindings::CanPlayTypeResult::Probably; - // We don't currently support `ogg`. We'll also have to check parameters, e.g. from Bandcamp: - // audio/ogg; codecs="vorbis" - // audio/ogg; codecs="opus" + // "Maybe" because we support Ogg Vorbis, but "ogg" can contain other codecs if (mime_type->subtype() == "ogg"sv) - return Bindings::CanPlayTypeResult::Empty; - // Quite OK Audio + return Bindings::CanPlayTypeResult::Maybe; if (mime_type->subtype() == "qoa"sv) return Bindings::CanPlayTypeResult::Probably; return Bindings::CanPlayTypeResult::Maybe;