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

Unified Diff: content/common/gpu/media/dxva_video_decode_accelerator.cc

Issue 1207043002: Introduce a client minimum picture pool size (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 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
Index: content/common/gpu/media/dxva_video_decode_accelerator.cc
diff --git a/content/common/gpu/media/dxva_video_decode_accelerator.cc b/content/common/gpu/media/dxva_video_decode_accelerator.cc
index 568b128e1d1bdea5e0d98bed04fda5db6b54b733..6a578dd157efa8c1d81e16679ca32c6e39ab0f93 100644
--- a/content/common/gpu/media/dxva_video_decode_accelerator.cc
+++ b/content/common/gpu/media/dxva_video_decode_accelerator.cc
@@ -517,6 +517,7 @@ DXVAVideoDecodeAccelerator::DXVAVideoDecodeAccelerator(
dx11_dev_manager_reset_token_(0),
egl_config_(NULL),
state_(kUninitialized),
+ num_picture_buffers_(kNumPictureBuffers),
pictures_requested_(false),
inputs_before_decode_(0),
sent_drain_message_(false),
@@ -538,9 +539,13 @@ DXVAVideoDecodeAccelerator::~DXVAVideoDecodeAccelerator() {
}
bool DXVAVideoDecodeAccelerator::Initialize(media::VideoCodecProfile profile,
- Client* client) {
+ uint32_t min_picture_count,
+ Client* client) {
client_ = client;
+ num_picture_buffers_ = std::max(min_picture_count,
+ static_cast<uint32_t>(kNumPictureBuffers));
+
main_thread_task_runner_ = base::MessageLoop::current()->task_runner();
bool profile_supported = false;
@@ -777,9 +782,9 @@ void DXVAVideoDecodeAccelerator::AssignPictureBuffers(
State state = GetState();
RETURN_AND_NOTIFY_ON_FAILURE((state != kUninitialized),
"Invalid state: " << state, ILLEGAL_STATE,);
- RETURN_AND_NOTIFY_ON_FAILURE((kNumPictureBuffers == buffers.size()),
+ RETURN_AND_NOTIFY_ON_FAILURE((num_picture_buffers_ == buffers.size()),
"Failed to provide requested picture buffers. (Got " << buffers.size() <<
- ", requested " << kNumPictureBuffers << ")", INVALID_ARGUMENT,);
+ ", requested " << num_picture_buffers_ << ")", INVALID_ARGUMENT,);
// Copy the picture buffers provided by the client to the available list,
// and mark these buffers as available for use.
@@ -1479,7 +1484,7 @@ void DXVAVideoDecodeAccelerator::RequestPictureBuffers(int width, int height) {
// This task could execute after the decoder has been torn down.
if (GetState() != kUninitialized && client_) {
client_->ProvidePictureBuffers(
- kNumPictureBuffers,
+ num_picture_buffers_,
gfx::Size(width, height),
GL_TEXTURE_2D);
}

Powered by Google App Engine
This is Rietveld 408576698