diff --git a/Userland/Libraries/LibWeb/HTML/HTMLMediaElement.cpp b/Userland/Libraries/LibWeb/HTML/HTMLMediaElement.cpp index 5ccf71895a..59f4da8db2 100644 --- a/Userland/Libraries/LibWeb/HTML/HTMLMediaElement.cpp +++ b/Userland/Libraries/LibWeb/HTML/HTMLMediaElement.cpp @@ -191,6 +191,27 @@ WebIDL::ExceptionOr HTMLMediaElement::can_play_type return Bindings::CanPlayTypeResult::Maybe; } + if (mime_type.has_value() && mime_type->type() == "audio"sv) { + // "Maybe" because we support mp3, but "mpeg" can also refer to MP1 and MP2. + if (mime_type->subtype() == "mpeg"sv) + return Bindings::CanPlayTypeResult::Maybe; + if (mime_type->subtype() == "mp3"sv) + return Bindings::CanPlayTypeResult::Probably; + if (mime_type->subtype() == "wav"sv) + 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" + if (mime_type->subtype() == "ogg"sv) + return Bindings::CanPlayTypeResult::Empty; + // Quite OK Audio + if (mime_type->subtype() == "qoa"sv) + return Bindings::CanPlayTypeResult::Probably; + return Bindings::CanPlayTypeResult::Maybe; + } + return Bindings::CanPlayTypeResult::Empty; }