diff options
author | bors-servo <lbergstrom+bors@mozilla.com> | 2019-01-11 08:00:39 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-01-11 08:00:39 -0500 |
commit | b49e7517a37f31c6b867093bc1a20469f55da24b (patch) | |
tree | bf34ae29d558f4dde8adcde5a12a5bac218e469b /components/script/dom/bindings/trace.rs | |
parent | 2a7862540c03e57ff46e8b467f93003940105fb1 (diff) | |
parent | 9a18074b889b0d1b01e857bbdd2f583b1bbf6db6 (diff) | |
download | servo-b49e7517a37f31c6b867093bc1a20469f55da24b.tar.gz servo-b49e7517a37f31c6b867093bc1a20469f55da24b.zip |
Auto merge of #22522 - ferjm:av.playback.improvements, r=Manishearth
HTMLMediaElement backoff protocol and other improvements to a/v playback
- [X] `./mach build -d` does not report any errors
- [X] `./mach test-tidy` does not report any errors
This PR implements a backoff protocol to keep us from dropping frames whenever it's possible. It also add some other improvements like:
- Clean up the implementation a little bit by adding all fetch request related state to `HTMLMediaElementFetchContext`.
- Make sure that we ignore responses from old requests.
- Set the stream to seekable iff there's support for range requests. This will likely change when we add the media cache.
- Implements part of [step 8 of the seek spec](https://html.spec.whatwg.org/multipage/media.html#dom-media-seek) where we bail out if the stream is not seekable.
<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/22522)
<!-- Reviewable:end -->
Diffstat (limited to 'components/script/dom/bindings/trace.rs')
-rw-r--r-- | components/script/dom/bindings/trace.rs | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/components/script/dom/bindings/trace.rs b/components/script/dom/bindings/trace.rs index f94048c47de..e645fb181d5 100644 --- a/components/script/dom/bindings/trace.rs +++ b/components/script/dom/bindings/trace.rs @@ -38,7 +38,7 @@ use crate::dom::bindings::str::{DOMString, USVString}; use crate::dom::bindings::utils::WindowProxyHandler; use crate::dom::document::PendingRestyle; use crate::dom::htmlimageelement::SourceSet; -use crate::dom::htmlmediaelement::MediaFrameRenderer; +use crate::dom::htmlmediaelement::{HTMLMediaElementFetchContext, MediaFrameRenderer}; use crate::task::TaskBox; use app_units::Au; use canvas_traits::canvas::{ @@ -103,7 +103,6 @@ use servo_media::audio::panner_node::{DistanceModel, PanningModel}; use servo_media::audio::param::ParamType; use servo_media::player::Player; use servo_media::Backend; -use servo_media::Error as ServoMediaError; use servo_url::{ImmutableOrigin, MutableOrigin, ServoUrl}; use smallvec::SmallVec; use std::cell::{Cell, RefCell, UnsafeCell}; @@ -484,11 +483,12 @@ unsafe_no_jsmanaged_fields!(AudioBuffer); unsafe_no_jsmanaged_fields!(AudioContext<Backend>); unsafe_no_jsmanaged_fields!(NodeId); unsafe_no_jsmanaged_fields!(AnalysisEngine, DistanceModel, PanningModel, ParamType); -unsafe_no_jsmanaged_fields!(dyn Player<Error = ServoMediaError>); +unsafe_no_jsmanaged_fields!(dyn Player); unsafe_no_jsmanaged_fields!(Mutex<MediaFrameRenderer>); unsafe_no_jsmanaged_fields!(RenderApiSender); unsafe_no_jsmanaged_fields!(ResourceFetchTiming); unsafe_no_jsmanaged_fields!(Timespec); +unsafe_no_jsmanaged_fields!(HTMLMediaElementFetchContext); unsafe impl<'a> JSTraceable for &'a str { #[inline] |