diff options
author | Guillaume Gomez <guillaume1.gomez@gmail.com> | 2016-08-28 15:15:47 +0200 |
---|---|---|
committer | ggomez <guillaume1.gomez@gmail.com> | 2016-09-09 14:03:03 +0200 |
commit | 94379bf715834fa7a5a71e5cd629ff7c950fee6f (patch) | |
tree | be0f9e7f6011e2236eb6010110a1619f15a031d8 /components/script/dom/htmlmediaelement.rs | |
parent | dd33be45485fefd148759c77462c484157026055 (diff) | |
download | servo-94379bf715834fa7a5a71e5cd629ff7c950fee6f.tar.gz servo-94379bf715834fa7a5a71e5cd629ff7c950fee6f.zip |
Put back video metadata
Diffstat (limited to 'components/script/dom/htmlmediaelement.rs')
-rw-r--r-- | components/script/dom/htmlmediaelement.rs | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/components/script/dom/htmlmediaelement.rs b/components/script/dom/htmlmediaelement.rs index d26ac6a044e..b0ee1a8ca8e 100644 --- a/components/script/dom/htmlmediaelement.rs +++ b/components/script/dom/htmlmediaelement.rs @@ -2,6 +2,7 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ +use audio_video_metadata; use document_loader::LoadType; use dom::attr::Attr; use dom::bindings::cell::DOMRefCell; @@ -160,12 +161,24 @@ impl HTMLMediaElementContext { } fn check_metadata(&mut self, elem: &HTMLMediaElement) { - // Step 6. - // - // TODO: Properly implement once we have figured out the build and - // licensing ffmpeg issues. - elem.change_ready_state(HAVE_METADATA); - self.have_metadata = true; + match audio_video_metadata::get_format_from_slice(&self.data) { + Ok(audio_video_metadata::Metadata::Video(meta)) => { + let dur = meta.audio.duration.unwrap_or(::std::time::Duration::new(0, 0)); + *elem.video.borrow_mut() = Some(VideoMedia { + format: format!("{:?}", meta.format), + duration: Duration::seconds(dur.as_secs() as i64) + + Duration::nanoseconds(dur.subsec_nanos() as i64), + width: meta.dimensions.width, + height: meta.dimensions.height, + video: meta.video.unwrap_or("".to_owned()), + audio: meta.audio.audio, + }); + // Step 6 + elem.change_ready_state(HAVE_METADATA); + self.have_metadata = true; + } + _ => {} + } } } |