Skip to content

Commit

Permalink
Add texture image in MediaFrameRenderer
Browse files Browse the repository at this point in the history
  • Loading branch information
ceyusa authored and ferjm committed Jul 4, 2019
1 parent 586d3f8 commit 65f9e21
Showing 1 changed file with 26 additions and 23 deletions.
49 changes: 26 additions & 23 deletions components/script/dom/htmlmediaelement.rs
Expand Up @@ -83,11 +83,12 @@ use std::mem;
use std::rc::Rc; use std::rc::Rc;
use std::sync::{Arc, Mutex}; use std::sync::{Arc, Mutex};
use time::{self, Duration, Timespec}; use time::{self, Duration, Timespec};
//use webrender_api::{ExternalImageData, ExternalImageId, ExternalImageType, TextureTarget}; use webrender_api::{ExternalImageData, ExternalImageId, ExternalImageType, TextureTarget};
use webrender_api::{ImageData, ImageDescriptor, ImageFormat, ImageKey, RenderApi}; use webrender_api::{ImageData, ImageDescriptor, ImageFormat, ImageKey, RenderApi};
use webrender_api::{RenderApiSender, Transaction}; use webrender_api::{RenderApiSender, Transaction};


pub struct MediaFrameRenderer { pub struct MediaFrameRenderer {
id: u64,
api: RenderApi, api: RenderApi,
current_frame: Option<(ImageKey, i32, i32)>, current_frame: Option<(ImageKey, i32, i32)>,
old_frame: Option<ImageKey>, old_frame: Option<ImageKey>,
Expand All @@ -97,6 +98,7 @@ pub struct MediaFrameRenderer {
impl MediaFrameRenderer { impl MediaFrameRenderer {
fn new(render_api_sender: RenderApiSender) -> Self { fn new(render_api_sender: RenderApiSender) -> Self {
Self { Self {
id: 0,
api: render_api_sender.create_api(), api: render_api_sender.create_api(),
current_frame: None, current_frame: None,
old_frame: None, old_frame: None,
Expand Down Expand Up @@ -156,17 +158,17 @@ impl FrameRenderer for MediaFrameRenderer {
ImageData::Raw(frame.get_data()), ImageData::Raw(frame.get_data()),
None, None,
); );
} else { } else if self.id != 0 {
// txn.add_image( txn.add_image(
// new_image_key, new_image_key,
// descriptor, descriptor,
// ImageData::External(ExternalImageData { ImageData::External(ExternalImageData {
// id: ExternalImageId(0), // let's try to fool webgl id: ExternalImageId(self.id),
// channel_index: 0, channel_index: 0,
// image_type: ExternalImageType::TextureHandle(TextureTarget::Default), image_type: ExternalImageType::TextureHandle(TextureTarget::Default),
// }), }),
// None, None,
// ); );
} }


/* update current_frame */ /* update current_frame */
Expand All @@ -184,17 +186,17 @@ impl FrameRenderer for MediaFrameRenderer {
ImageData::Raw(frame.get_data()), ImageData::Raw(frame.get_data()),
None, None,
); );
} else { } else if self.id != 0 {
// txn.add_image( txn.add_image(
// image_key, image_key,
// descriptor, descriptor,
// ImageData::External(ExternalImageData { ImageData::External(ExternalImageData {
// id: ExternalImageId(0), // let's try to fool webgl id: ExternalImageId(self.id),
// channel_index: 0, channel_index: 0,
// image_type: ExternalImageType::TextureHandle(TextureTarget::Default), image_type: ExternalImageType::TextureHandle(TextureTarget::Default),
// }), }),
// None, None,
// ); );
} }


self.current_frame = Some((image_key, frame.get_width(), frame.get_height())); self.current_frame = Some((image_key, frame.get_width(), frame.get_height()));
Expand Down Expand Up @@ -1312,6 +1314,7 @@ impl HTMLMediaElement {
}) })
.unwrap_or(0); .unwrap_or(0);
self.id.set(player_id); self.id.set(player_id);
self.frame_renderer.lock().unwrap().id = player_id;


Ok(()) Ok(())
} }
Expand Down

0 comments on commit 65f9e21

Please sign in to comment.