diff options
Diffstat (limited to 'components/script/dom/htmlmediaelement.rs')
-rw-r--r-- | components/script/dom/htmlmediaelement.rs | 31 |
1 files changed, 12 insertions, 19 deletions
diff --git a/components/script/dom/htmlmediaelement.rs b/components/script/dom/htmlmediaelement.rs index 8d41a685b7b..9bbfb30d46c 100644 --- a/components/script/dom/htmlmediaelement.rs +++ b/components/script/dom/htmlmediaelement.rs @@ -62,7 +62,6 @@ use html5ever::{LocalName, Prefix}; use http::header::{self, HeaderMap, HeaderValue}; use ipc_channel::ipc; use ipc_channel::router::ROUTER; -use mime::{self, Mime}; use net_traits::image::base::Image; use net_traits::image_cache::ImageResponse; use net_traits::request::{CredentialsMode, Destination, Referrer, RequestBuilder}; @@ -73,7 +72,7 @@ use servo_config::pref; use servo_media::player::context::{GlContext, NativeDisplay, PlayerGLContext}; use servo_media::player::frame::{Frame, FrameRenderer}; use servo_media::player::{PlaybackState, Player, PlayerError, PlayerEvent, StreamType}; -use servo_media::ServoMedia; +use servo_media::{ServoMedia, SupportsMediaType}; use servo_url::ServoUrl; use std::cell::Cell; use std::collections::VecDeque; @@ -840,9 +839,13 @@ impl HTMLMediaElement { self.fetch_request(None); }, SrcObject::MediaStream(ref stream) => { - for stream in stream.get_tracks() { - if let Err(_) = - self.player.borrow().as_ref().unwrap().set_stream(&stream) + for stream in &*stream.get_tracks() { + if let Err(_) = self + .player + .borrow() + .as_ref() + .unwrap() + .set_stream(&stream.id()) { self.queue_dedicated_media_source_failure_steps(); } @@ -1674,20 +1677,10 @@ impl HTMLMediaElementMethods for HTMLMediaElement { // https://html.spec.whatwg.org/multipage/#dom-navigator-canplaytype fn CanPlayType(&self, type_: DOMString) -> CanPlayTypeResult { - match type_.parse::<Mime>() { - // XXX GStreamer is currently not very reliable playing OGG and most of - // the media related WPTs uses OGG if we report that we are able to - // play this type. So we report that we are unable to play it to force - // the usage of other types. - // https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/520 - Ok(ref mime) - if (mime.type_() == mime::APPLICATION && mime.subtype() == mime::OCTET_STREAM) || - (mime.subtype() == mime::OGG) => - { - CanPlayTypeResult::_empty - }, - Err(_) => CanPlayTypeResult::_empty, - _ => CanPlayTypeResult::Maybe, + match ServoMedia::get().unwrap().can_play_type(&type_) { + SupportsMediaType::No => CanPlayTypeResult::_empty, + SupportsMediaType::Maybe => CanPlayTypeResult::Maybe, + SupportsMediaType::Probably => CanPlayTypeResult::Probably, } } |