Index: media/gpu/vaapi_video_encode_accelerator.cc |
diff --git a/media/gpu/vaapi_video_encode_accelerator.cc b/media/gpu/vaapi_video_encode_accelerator.cc |
index 5eea88e5335b78e457ff784a2789c0e7f850b3cd..01efaadcf8cfc49d7e1a6312cb8e01d703e91d77 100644 |
--- a/media/gpu/vaapi_video_encode_accelerator.cc |
+++ b/media/gpu/vaapi_video_encode_accelerator.cc |
@@ -555,8 +555,9 @@ void VaapiVideoEncodeAccelerator::TryToReturnBitstreamBuffer() { |
<< " id: " << buffer->id << " size: " << data_size; |
child_task_runner_->PostTask( |
- FROM_HERE, base::Bind(&Client::BitstreamBufferReady, client_, buffer->id, |
- data_size, encode_job->keyframe)); |
+ FROM_HERE, |
+ base::Bind(&Client::BitstreamBufferReady, client_, buffer->id, data_size, |
+ encode_job->keyframe, encode_job->timestamp)); |
} |
void VaapiVideoEncodeAccelerator::Encode( |
@@ -571,7 +572,7 @@ void VaapiVideoEncodeAccelerator::Encode( |
base::Unretained(this), frame, force_keyframe)); |
} |
-bool VaapiVideoEncodeAccelerator::PrepareNextJob() { |
+bool VaapiVideoEncodeAccelerator::PrepareNextJob(base::TimeDelta timestamp) { |
if (available_va_surface_ids_.size() < kMinSurfacesToEncode) |
return false; |
@@ -584,6 +585,8 @@ bool VaapiVideoEncodeAccelerator::PrepareNextJob() { |
return false; |
} |
+ current_encode_job_->timestamp = timestamp; |
+ |
current_encode_job_->input_surface = new VASurface( |
available_va_surface_ids_.back(), coded_size_, |
vaapi_wrapper_->va_surface_format(), va_surface_release_cb_); |
@@ -619,7 +622,7 @@ void VaapiVideoEncodeAccelerator::EncodeFrameTask() { |
if (state_ != kEncoding || encoder_input_queue_.empty()) |
return; |
- if (!PrepareNextJob()) { |
+ if (!PrepareNextJob(encoder_input_queue_.front()->frame->timestamp())) { |
DVLOGF(4) << "Not ready for next frame yet"; |
return; |
} |