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

Unified Diff: content/common/gpu/media/v4l2_slice_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/v4l2_slice_video_decode_accelerator.cc
diff --git a/content/common/gpu/media/v4l2_slice_video_decode_accelerator.cc b/content/common/gpu/media/v4l2_slice_video_decode_accelerator.cc
index 5908fd61750db67fdf76115b686bbbdcccd64803..04a1fed45bce63b8ba1d2cd9755bc3ade94566f2 100644
--- a/content/common/gpu/media/v4l2_slice_video_decode_accelerator.cc
+++ b/content/common/gpu/media/v4l2_slice_video_decode_accelerator.cc
@@ -394,6 +394,7 @@ V4L2SliceVideoDecodeAccelerator::V4L2SliceVideoDecodeAccelerator(
output_buffer_queued_count_(0),
video_profile_(media::VIDEO_CODEC_PROFILE_UNKNOWN),
output_format_fourcc_(0),
+ min_picture_count_(0),
state_(kUninitialized),
decoder_flushing_(false),
decoder_resetting_(false),
@@ -434,6 +435,7 @@ void V4L2SliceVideoDecodeAccelerator::NotifyError(Error error) {
bool V4L2SliceVideoDecodeAccelerator::Initialize(
media::VideoCodecProfile profile,
+ uint32_t min_picture_count,
VideoDecodeAccelerator::Client* client) {
DVLOGF(3) << "profile: " << profile;
DCHECK(child_task_runner_->BelongsToCurrentThread());
@@ -444,6 +446,7 @@ bool V4L2SliceVideoDecodeAccelerator::Initialize(
client_ = client_ptr_factory_->GetWeakPtr();
video_profile_ = profile;
+ min_picture_count_ = min_picture_count;
if (video_profile_ >= media::H264PROFILE_MIN &&
video_profile_ <= media::H264PROFILE_MAX) {
@@ -683,7 +686,9 @@ bool V4L2SliceVideoDecodeAccelerator::CreateOutputBuffers() {
DCHECK(surfaces_at_device_.empty());
visible_size_ = decoder_->GetPicSize();
- size_t num_pictures = decoder_->GetRequiredNumOfPictures();
+ size_t num_pictures = std::max(min_picture_count_,
+ static_cast<uint32_t>(
+ decoder_->GetRequiredNumOfPictures()));
DCHECK_GT(num_pictures, 0u);
DCHECK(!visible_size_.IsEmpty());

Powered by Google App Engine
This is Rietveld 408576698