aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom
diff options
context:
space:
mode:
authorbors-servo <lbergstrom+bors@mozilla.com>2019-09-10 13:12:25 -0400
committerGitHub <noreply@github.com>2019-09-10 13:12:25 -0400
commitec1da1d01c0f48544084d9cba4398b592c58e1fe (patch)
treeb0dd79be133189f74f5156c79a0769487db91226 /components/script/dom
parent6ed204d692182e58b7b44b5a02cac4e758d70a14 (diff)
parentc6df00343b512ed4a2c3680689cc99c459681535 (diff)
downloadservo-ec1da1d01c0f48544084d9cba4398b592c58e1fe.tar.gz
servo-ec1da1d01c0f48544084d9cba4398b592c58e1fe.zip
Auto merge of #24174 - ceyusa:oes-textures, r=ferjm
Enable video frames as OES textures This patch parametrizes WR to handle OES textures if the incoming frame wraps one. It requires the update of servo-media package and the according WR parametrization. <!-- Please describe your changes on the following line: --> --- <!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: --> - [X] `./mach build -d` does not report any errors - [X] `./mach test-tidy` does not report any errors - [ ] These changes fix #___ (GitHub issue number if applicable) <!-- Either: --> - [ ] There are tests for these changes OR - [X] These changes do not require tests because it requires an specific android hardware with certain video decoders <!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.--> <!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. --> <!-- 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/24174) <!-- Reviewable:end -->
Diffstat (limited to 'components/script/dom')
-rw-r--r--components/script/dom/htmlmediaelement.rs16
1 files changed, 14 insertions, 2 deletions
diff --git a/components/script/dom/htmlmediaelement.rs b/components/script/dom/htmlmediaelement.rs
index 8855e0ee578..ac44f43f3fa 100644
--- a/components/script/dom/htmlmediaelement.rs
+++ b/components/script/dom/htmlmediaelement.rs
@@ -214,13 +214,19 @@ impl FrameRenderer for MediaFrameRenderer {
*height = frame.get_height();
let image_data = if frame.is_gl_texture() && self.player_id.is_some() {
+ let texture_target = if frame.is_external_oes() {
+ TextureTarget::External
+ } else {
+ TextureTarget::Default
+ };
+
self.current_frame_holder
.get_or_insert_with(|| FrameHolder::new(frame.clone()))
.set(frame);
ImageData::External(ExternalImageData {
id: ExternalImageId(self.player_id.unwrap()),
channel_index: 0,
- image_type: ExternalImageType::TextureHandle(TextureTarget::Default),
+ image_type: ExternalImageType::TextureHandle(texture_target),
})
} else {
ImageData::Raw(frame.get_data())
@@ -232,11 +238,17 @@ impl FrameRenderer for MediaFrameRenderer {
self.current_frame = Some((image_key, frame.get_width(), frame.get_height()));
let image_data = if frame.is_gl_texture() && self.player_id.is_some() {
+ let texture_target = if frame.is_external_oes() {
+ TextureTarget::External
+ } else {
+ TextureTarget::Default
+ };
+
self.current_frame_holder = Some(FrameHolder::new(frame));
ImageData::External(ExternalImageData {
id: ExternalImageId(self.player_id.unwrap()),
channel_index: 0,
- image_type: ExternalImageType::TextureHandle(TextureTarget::Default),
+ image_type: ExternalImageType::TextureHandle(texture_target),
})
} else {
ImageData::Raw(frame.get_data())