Index: media/capture/content/thread_safe_capture_oracle.cc |
diff --git a/media/capture/content/thread_safe_capture_oracle.cc b/media/capture/content/thread_safe_capture_oracle.cc |
index 9fc8f93b0f7e283eeee40ef89b188cd05d846b82..ad869b7d13051343a2164f66d7b1920ce34d7912 100644 |
--- a/media/capture/content/thread_safe_capture_oracle.cc |
+++ b/media/capture/content/thread_safe_capture_oracle.cc |
@@ -211,26 +211,33 @@ void ThreadSafeCaptureOracle::DidCaptureFrame( |
base::AutoLock guard(lock_); |
- if (oracle_.CompleteCapture(frame_number, success, &reference_time)) { |
- TRACE_EVENT_INSTANT0("gpu.capture", "CaptureSucceeded", |
- TRACE_EVENT_SCOPE_THREAD); |
- |
- if (!client_) |
- return; // Capture is stopped. |
- |
- frame->metadata()->SetDouble(VideoFrameMetadata::FRAME_RATE, |
- params_.requested_format.frame_rate); |
- frame->metadata()->SetTimeTicks(VideoFrameMetadata::CAPTURE_BEGIN_TIME, |
- capture_begin_time); |
- frame->metadata()->SetTimeTicks(VideoFrameMetadata::CAPTURE_END_TIME, |
- base::TimeTicks::Now()); |
- frame->metadata()->SetTimeDelta(VideoFrameMetadata::FRAME_DURATION, |
- estimated_frame_duration); |
- frame->metadata()->SetTimeTicks(VideoFrameMetadata::REFERENCE_TIME, |
- reference_time); |
- |
- client_->OnIncomingCapturedVideoFrame(std::move(buffer), std::move(frame)); |
- } |
+ if (!oracle_.CompleteCapture(frame_number, success, &reference_time)) |
+ return; |
+ |
+ TRACE_EVENT_INSTANT0("gpu.capture", "CaptureSucceeded", |
+ TRACE_EVENT_SCOPE_THREAD); |
+ |
+ if (!client_) |
+ return; // Capture is stopped. |
+ |
+ frame->metadata()->SetDouble(VideoFrameMetadata::FRAME_RATE, |
+ params_.requested_format.frame_rate); |
+ frame->metadata()->SetTimeTicks(VideoFrameMetadata::CAPTURE_BEGIN_TIME, |
+ capture_begin_time); |
+ frame->metadata()->SetTimeTicks(VideoFrameMetadata::CAPTURE_END_TIME, |
+ base::TimeTicks::Now()); |
+ frame->metadata()->SetTimeDelta(VideoFrameMetadata::FRAME_DURATION, |
+ estimated_frame_duration); |
+ frame->metadata()->SetTimeTicks(VideoFrameMetadata::REFERENCE_TIME, |
+ reference_time); |
+ |
+ DCHECK(frame->IsMappable()); |
+ media::VideoCaptureFormat format(frame->coded_size(), |
+ params_.requested_format.frame_rate, |
+ frame->format(), media::PIXEL_STORAGE_CPU); |
+ client_->OnIncomingCapturedBufferExt( |
+ std::move(buffer), format, reference_time, frame->timestamp(), |
+ frame->visible_rect(), *frame->metadata()); |
} |
void ThreadSafeCaptureOracle::OnConsumerReportingUtilization( |