Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(409)

Unified Diff: cc/layers/video_layer_impl.cc

Issue 14199002: Send hardware video frames with mailboxes. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: video-mailbox: virtualandroid Created 7 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « cc/layers/video_layer_impl.h ('k') | cc/resources/video_resource_updater.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/layers/video_layer_impl.cc
diff --git a/cc/layers/video_layer_impl.cc b/cc/layers/video_layer_impl.cc
index 98f2c047a03ea429b204e3e6a21744437c67c0c9..0ae20360bb28c945af007404b61ee46a8678d771 100644
--- a/cc/layers/video_layer_impl.cc
+++ b/cc/layers/video_layer_impl.cc
@@ -37,8 +37,7 @@ scoped_ptr<VideoLayerImpl> VideoLayerImpl::Create(
VideoLayerImpl::VideoLayerImpl(LayerTreeImpl* tree_impl, int id)
: LayerImpl(tree_impl, id),
- frame_(NULL),
- hardware_resource_(0) {}
+ frame_(NULL) {}
VideoLayerImpl::~VideoLayerImpl() {
if (!provider_client_impl_->Stopped()) {
@@ -96,12 +95,8 @@ bool VideoLayerImpl::WillDraw(DrawMode draw_mode,
if (!updater_)
updater_.reset(new VideoResourceUpdater(resource_provider));
- VideoFrameExternalResources external_resources;
- if (frame_->format() == media::VideoFrame::NATIVE_TEXTURE)
- external_resources = updater_->CreateForHardwarePlanes(frame_);
- else
- external_resources = updater_->CreateForSoftwarePlanes(frame_);
-
+ VideoFrameExternalResources external_resources =
+ updater_->CreateExternalResourcesFromVideoFrame(frame_);
frame_resource_type_ = external_resources.type;
if (external_resources.type ==
@@ -112,13 +107,6 @@ bool VideoLayerImpl::WillDraw(DrawMode draw_mode,
return true;
}
- if (external_resources.hardware_resource) {
- hardware_resource_ = external_resources.hardware_resource;
- hardware_release_callback_ =
- external_resources.hardware_release_callback;
- return true;
- }
-
for (size_t i = 0; i < external_resources.mailboxes.size(); ++i) {
frame_resources_.push_back(
resource_provider->CreateResourceFromTextureMailbox(
@@ -191,11 +179,9 @@ void VideoLayerImpl::AppendQuads(QuadSink* quad_sink,
break;
}
case VideoFrameExternalResources::RGB_RESOURCE: {
- if (!hardware_resource_) {
- DCHECK_EQ(frame_resources_.size(), 1u);
- if (frame_resources_.size() < 1u)
- break;
- }
+ DCHECK_EQ(frame_resources_.size(), 1u);
+ if (frame_resources_.size() < 1u)
+ break;
bool premultiplied_alpha = true;
gfx::PointF uv_top_left(0.f, 0.f);
gfx::PointF uv_bottom_right(tex_width_scale, tex_height_scale);
@@ -205,8 +191,7 @@ void VideoLayerImpl::AppendQuads(QuadSink* quad_sink,
texture_quad->SetNew(shared_quad_state,
quad_rect,
opaque_rect,
- hardware_resource_ ? hardware_resource_
- : frame_resources_[0],
+ frame_resources_[0],
premultiplied_alpha,
uv_top_left,
uv_bottom_right,
@@ -216,11 +201,9 @@ void VideoLayerImpl::AppendQuads(QuadSink* quad_sink,
break;
}
case VideoFrameExternalResources::STREAM_TEXTURE_RESOURCE: {
- if (!hardware_resource_) {
- DCHECK_EQ(frame_resources_.size(), 1u);
- if (frame_resources_.size() < 1u)
- break;
- }
+ DCHECK_EQ(frame_resources_.size(), 1u);
+ if (frame_resources_.size() < 1u)
+ break;
gfx::Transform transform(
provider_client_impl_->stream_texture_matrix());
transform.Scale(tex_width_scale, tex_height_scale);
@@ -229,19 +212,16 @@ void VideoLayerImpl::AppendQuads(QuadSink* quad_sink,
stream_video_quad->SetNew(shared_quad_state,
quad_rect,
opaque_rect,
- hardware_resource_ ? hardware_resource_
- : frame_resources_[0],
+ frame_resources_[0],
transform);
quad_sink->Append(stream_video_quad.PassAs<DrawQuad>(),
append_quads_data);
break;
}
case VideoFrameExternalResources::IO_SURFACE: {
- if (!hardware_resource_) {
- DCHECK_EQ(frame_resources_.size(), 1u);
- if (frame_resources_.size() < 1u)
- break;
- }
+ DCHECK_EQ(frame_resources_.size(), 1u);
+ if (frame_resources_.size() < 1u)
+ break;
gfx::Size visible_size(visible_rect.width(), visible_rect.height());
scoped_ptr<IOSurfaceDrawQuad> io_surface_quad =
IOSurfaceDrawQuad::Create();
@@ -249,8 +229,7 @@ void VideoLayerImpl::AppendQuads(QuadSink* quad_sink,
quad_rect,
opaque_rect,
visible_size,
- hardware_resource_ ? hardware_resource_
- : frame_resources_[0],
+ frame_resources_[0],
IOSurfaceDrawQuad::UNFLIPPED);
quad_sink->Append(io_surface_quad.PassAs<DrawQuad>(),
append_quads_data);
@@ -296,10 +275,6 @@ void VideoLayerImpl::DidDraw(ResourceProvider* resource_provider) {
software_resources_.clear();
software_release_callback_.Reset();
- } else if (hardware_resource_) {
- hardware_release_callback_.Run(0, false);
- hardware_resource_ = 0;
- hardware_release_callback_.Reset();
} else {
for (size_t i = 0; i < frame_resources_.size(); ++i)
resource_provider->DeleteResource(frame_resources_[i]);
« no previous file with comments | « cc/layers/video_layer_impl.h ('k') | cc/resources/video_resource_updater.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698