Index: content/browser/renderer_host/media/video_capture_controller.cc |
diff --git a/content/browser/renderer_host/media/video_capture_controller.cc b/content/browser/renderer_host/media/video_capture_controller.cc |
index e277fe727966e43401fcdd7353d169f81465c337..6f645878bb5023d33943f63435593915ed82f905 100644 |
--- a/content/browser/renderer_host/media/video_capture_controller.cc |
+++ b/content/browser/renderer_host/media/video_capture_controller.cc |
@@ -178,20 +178,19 @@ class VideoCaptureController::VideoCaptureDeviceClient |
// The pool of shared-memory buffers used for capturing. |
const scoped_refptr<VideoCaptureBufferPool> buffer_pool_; |
- |
- bool first_frame_; |
}; |
VideoCaptureController::VideoCaptureController(int max_buffers) |
: buffer_pool_(new VideoCaptureBufferPool(max_buffers)), |
state_(VIDEO_CAPTURE_STATE_STARTED), |
+ frame_received_(false), |
weak_ptr_factory_(this) { |
} |
VideoCaptureController::VideoCaptureDeviceClient::VideoCaptureDeviceClient( |
const base::WeakPtr<VideoCaptureController>& controller, |
const scoped_refptr<VideoCaptureBufferPool>& buffer_pool) |
- : controller_(controller), buffer_pool_(buffer_pool), first_frame_(true) {} |
+ : controller_(controller), buffer_pool_(buffer_pool) {} |
VideoCaptureController::VideoCaptureDeviceClient::~VideoCaptureDeviceClient() {} |
@@ -478,22 +477,6 @@ void VideoCaptureController::VideoCaptureDeviceClient::OnIncomingCapturedData( |
format, |
frame, |
timestamp)); |
- |
- if (first_frame_) { |
- UMA_HISTOGRAM_COUNTS("Media.VideoCapture.Width", |
- frame_format.frame_size.width()); |
- UMA_HISTOGRAM_COUNTS("Media.VideoCapture.Height", |
- frame_format.frame_size.height()); |
- UMA_HISTOGRAM_ASPECT_RATIO("Media.VideoCapture.AspectRatio", |
- frame_format.frame_size.width(), |
- frame_format.frame_size.height()); |
- UMA_HISTOGRAM_COUNTS("Media.VideoCapture.FrameRate", |
- frame_format.frame_rate); |
- UMA_HISTOGRAM_ENUMERATION("Media.VideoCapture.PixelFormat", |
- frame_format.pixel_format, |
- media::PIXEL_FORMAT_MAX); |
- first_frame_ = false; |
- } |
} |
void |
@@ -568,6 +551,7 @@ VideoCaptureController::VideoCaptureDeviceClient::DoReserveOutputBuffer( |
VideoCaptureController::~VideoCaptureController() { |
STLDeleteContainerPointers(controller_clients_.begin(), |
controller_clients_.end()); |
+ UMA_HISTOGRAM_BOOLEAN("Media.VideoCapture.FramesReceived", frame_received_); |
} |
void VideoCaptureController::DoIncomingCapturedVideoFrameOnIOThread( |
@@ -616,6 +600,22 @@ void VideoCaptureController::DoIncomingCapturedVideoFrameOnIOThread( |
} |
} |
+ if (!frame_received_) { |
+ UMA_HISTOGRAM_COUNTS("Media.VideoCapture.Width", |
+ buffer_format.frame_size.width()); |
+ UMA_HISTOGRAM_COUNTS("Media.VideoCapture.Height", |
+ buffer_format.frame_size.height()); |
+ UMA_HISTOGRAM_ASPECT_RATIO("Media.VideoCapture.AspectRatio", |
+ buffer_format.frame_size.width(), |
+ buffer_format.frame_size.height()); |
+ UMA_HISTOGRAM_COUNTS("Media.VideoCapture.FrameRate", |
+ buffer_format.frame_rate); |
+ UMA_HISTOGRAM_ENUMERATION("Media.VideoCapture.PixelFormat", |
+ buffer_format.pixel_format, |
+ media::PIXEL_FORMAT_MAX); |
+ frame_received_ = true; |
+ } |
+ |
buffer_pool_->HoldForConsumers(buffer->id(), count); |
} |