mirror of
https://github.com/servo/servo.git
synced 2025-08-04 21:20:23 +01:00
Add texture image in MediaFrameRenderer
This commit is contained in:
parent
586d3f8da5
commit
65f9e2161c
1 changed files with 26 additions and 23 deletions
|
@ -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>,
|
||||||
|
@ -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,
|
||||||
|
@ -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 */
|
||||||
|
@ -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()));
|
||||||
|
@ -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(())
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue