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

Unified Diff: media/gpu/ipc/service/gpu_video_decode_accelerator.cc

Issue 2881553002: Add |texture_target_| and |pixel_format_| to media::PictureBuffer (Closed)
Patch Set: Add |texture_target_| and |pixel_format_| to media::PictureBuffer Created 3 years, 7 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
Index: media/gpu/ipc/service/gpu_video_decode_accelerator.cc
diff --git a/media/gpu/ipc/service/gpu_video_decode_accelerator.cc b/media/gpu/ipc/service/gpu_video_decode_accelerator.cc
index d26f19a0a213f255ce594dda26d0346e1947ff0d..e2560cf12585e6db194e47025b28cb66f069195f 100644
--- a/media/gpu/ipc/service/gpu_video_decode_accelerator.cc
+++ b/media/gpu/ipc/service/gpu_video_decode_accelerator.cc
@@ -161,7 +161,6 @@ GpuVideoDecodeAccelerator::GpuVideoDecodeAccelerator(
const AndroidOverlayMojoFactoryCB& overlay_factory_cb)
: host_route_id_(host_route_id),
stub_(stub),
- texture_target_(0),
textures_per_buffer_(0),
filter_removed_(base::WaitableEvent::ResetPolicy::MANUAL,
base::WaitableEvent::InitialState::NOT_SIGNALED),
@@ -241,9 +240,7 @@ void GpuVideoDecodeAccelerator::ProvidePictureBuffers(
DLOG(ERROR) << "Send(AcceleratedVideoDecoderHostMsg_ProvidePictureBuffers) "
<< "failed";
}
- texture_dimensions_ = dimensions;
textures_per_buffer_ = textures_per_buffer;
- texture_target_ = texture_target;
}
void GpuVideoDecodeAccelerator::DismissPictureBuffer(
@@ -402,7 +399,10 @@ void GpuVideoDecodeAccelerator::OnDecode(
void GpuVideoDecodeAccelerator::OnAssignPictureBuffers(
const std::vector<int32_t>& buffer_ids,
- const std::vector<PictureBuffer::TextureIds>& texture_ids) {
+ const std::vector<PictureBuffer::TextureIds>& texture_ids,
+ uint32_t texture_target,
+ VideoPixelFormat pixel_format,
+ const gfx::Size& dimensions) {
if (buffer_ids.size() != texture_ids.size()) {
NotifyError(VideoDecodeAccelerator::INVALID_ARGUMENT);
return;
@@ -439,27 +439,25 @@ void GpuVideoDecodeAccelerator::OnAssignPictureBuffers(
return;
}
gpu::gles2::Texture* info = texture_ref->texture();
- if (info->target() != texture_target_) {
+ if (info->target() != texture_target) {
DLOG(ERROR) << "Texture target mismatch for texture id "
<< buffer_texture_ids[j];
NotifyError(VideoDecodeAccelerator::INVALID_ARGUMENT);
return;
}
- if (texture_target_ == GL_TEXTURE_EXTERNAL_OES ||
- texture_target_ == GL_TEXTURE_RECTANGLE_ARB) {
+ if (texture_target == GL_TEXTURE_EXTERNAL_OES ||
+ texture_target == GL_TEXTURE_RECTANGLE_ARB) {
// These textures have their dimensions defined by the underlying
// storage.
- // Use |texture_dimensions_| for this size.
- texture_manager->SetLevelInfo(texture_ref, texture_target_, 0, GL_RGBA,
- texture_dimensions_.width(),
- texture_dimensions_.height(), 1, 0,
- GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect());
+ // Use |dimensions| for this size.
+ texture_manager->SetLevelInfo(
+ texture_ref, texture_target, 0, GL_RGBA, dimensions.width(),
+ dimensions.height(), 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect());
} else {
// For other targets, texture dimensions should already be defined.
GLsizei width = 0, height = 0;
- info->GetLevelSize(texture_target_, 0, &width, &height, nullptr);
- if (width != texture_dimensions_.width() ||
- height != texture_dimensions_.height()) {
+ info->GetLevelSize(texture_target, 0, &width, &height, nullptr);
+ if (width != dimensions.width() || height != dimensions.height()) {
DLOG(ERROR) << "Size mismatch for texture id "
<< buffer_texture_ids[j];
NotifyError(VideoDecodeAccelerator::INVALID_ARGUMENT);
@@ -471,7 +469,7 @@ void GpuVideoDecodeAccelerator::OnAssignPictureBuffers(
video_decode_accelerator_.get()->GetSurfaceInternalFormat();
if (format != GL_RGBA) {
DCHECK(format == GL_BGRA_EXT);
- texture_manager->SetLevelInfo(texture_ref, texture_target_, 0, format,
+ texture_manager->SetLevelInfo(texture_ref, texture_target, 0, format,
width, height, 1, 0, format,
GL_UNSIGNED_BYTE, gfx::Rect());
}
@@ -480,8 +478,9 @@ void GpuVideoDecodeAccelerator::OnAssignPictureBuffers(
current_textures.push_back(texture_ref);
}
textures.push_back(current_textures);
- buffers.push_back(PictureBuffer(buffer_ids[i], texture_dimensions_,
- buffer_texture_ids, service_ids));
+ buffers.push_back(PictureBuffer(buffer_ids[i], dimensions,
+ buffer_texture_ids, service_ids,
+ texture_target, pixel_format));
}
{
DebugAutoLock auto_lock(debug_uncleared_textures_lock_);

Powered by Google App Engine
This is Rietveld 408576698