Index: media/capture/video/video_capture_device_client.cc |
diff --git a/media/capture/video/video_capture_device_client.cc b/media/capture/video/video_capture_device_client.cc |
index 729c02edc9ed76e7da9eb4f91f5074c86123f2f9..16c66728b0a6140a9d62e6f4144ffbedba1b8789 100644 |
--- a/media/capture/video/video_capture_device_client.cc |
+++ b/media/capture/video/video_capture_device_client.cc |
@@ -103,6 +103,7 @@ VideoCaptureDeviceClient::VideoCaptureDeviceClient( |
: receiver_(std::move(receiver)), |
jpeg_decoder_factory_callback_(jpeg_decoder_factory), |
external_jpeg_decoder_initialized_(false), |
+ using_external_jpeg_decoder_(false), |
buffer_pool_(std::move(buffer_pool)), |
last_captured_pixel_format_(media::PIXEL_FORMAT_UNKNOWN) {} |
@@ -281,6 +282,7 @@ void VideoCaptureDeviceClient::OnIncomingCapturedData( |
} else if (status == VideoCaptureJpegDecoder::INIT_PASSED && |
format.pixel_format == media::PIXEL_FORMAT_MJPEG && |
rotation == 0 && !flip) { |
+ OnUsingExternalJpegDecoder(); |
external_jpeg_decoder_->DecodeCapturedData( |
data, length, format, reference_time, timestamp, std::move(buffer)); |
return; |
@@ -336,9 +338,8 @@ VideoCaptureDeviceClient::ReserveOutputBuffer( |
if (!base::ContainsValue(buffer_ids_known_by_receiver_, buffer_id)) { |
receiver_->OnNewBufferHandle( |
- buffer_id, |
- base::MakeUnique<BufferPoolBufferHandleProvider>(buffer_pool_, |
- buffer_id)); |
+ buffer_id, base::MakeUnique<BufferPoolBufferHandleProvider>( |
+ buffer_pool_, buffer_id)); |
buffer_ids_known_by_receiver_.push_back(buffer_id); |
} |
@@ -426,6 +427,13 @@ double VideoCaptureDeviceClient::GetBufferPoolUtilization() const { |
return buffer_pool_->GetBufferPoolUtilization(); |
} |
+void VideoCaptureDeviceClient::OnUsingExternalJpegDecoder() { |
+ if (using_external_jpeg_decoder_) |
+ return; |
+ using_external_jpeg_decoder_ = true; |
+ receiver_->OnStartedUsingGpuDecode(); |
+} |
+ |
void VideoCaptureDeviceClient::InitializeI420PlanePointers( |
const gfx::Size& dimensions, |
uint8_t* const data, |