Skip to content

Gstreamer backend reports that audio/webm mime type is not supported #452

@tharkum

Description

@tharkum

After implementation of supported selection of media element source from source children (PR servo/servo#39717) there was found that GStreamer backend is reporting that audio/webm mime type is not supported while it is not true.

OK (audio)
<audio src="any-audio-content.oga">

OK (audio + source without type)
<audio><source src="any-audio-content.oga"></audio>

FAIL (audio + source with type)
<audio><source src="any-audio-content.oga" type="audio/webm"></audio>

See https://html.spec.whatwg.org/multipage/media.html#loading-the-media-resource:attr-source-type

Need to figure out reason why it happens (see backends/gstreamer/registry_scanner.rs)

Some associated WPT tests (media-src) on which it is reproduced with test expectation changes (with vs without):

  • /content-security-policy/media-src/media-src-7_2_2.sub.html
  • /content-security-policy/media-src/media-src-blocked.sub.html

NOTE: Some audio are encoded with Vorbis and both is decoding by Gstreamer eventually...
Vorbis: media/sound_5.oga

On local PC gst-inspect-1.0 reports the following plugins (ubuntu22.04)

gst-inspect-1.0 | grep webm
matroska:  webmmux: WebM muxer
typefindfunctions: video/x-matroska: mkv, mka, mk3d, webm
gst-inspect-1.0 | grep opus
libav:  avdec_cllc: libav Canopus Lossless Codec decoder
libav:  avdec_hq_hqa: libav Canopus HQ/HQA decoder
libav:  avdec_hqx: libav Canopus HQX decoder
libav:  avdec_opus: libav Opus decoder
libav:  avenc_opus: libav Opus encoder
libav:  avmux_opus: libav Ogg Opus muxer
opus:  opusdec: Opus audio decoder
opus:  opusenc: Opus audio encoder
opusparse:  opusparse: Opus audio parser
rtp:  rtpopusdepay: RTP Opus packet depayloader
rtp:  rtpopuspay: RTP Opus payloader
gst-inspect-1.0 | grep vorbis
rtp:  rtpvorbisdepay: RTP Vorbis depayloader
rtp:  rtpvorbispay: RTP Vorbis payloader
typefindfunctions: audio/x-vorbis: no extensions
vorbis:  vorbisdec: Vorbis audio decoder
vorbis:  vorbisenc: Vorbis audio encoder
vorbis:  vorbisparse: VorbisParse
vorbis:  vorbistag: VorbisTag

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions