| Index: media/capture/video/fake_video_capture_device.cc
|
| diff --git a/media/capture/video/fake_video_capture_device.cc b/media/capture/video/fake_video_capture_device.cc
|
| index 0aea00ad80cb6b98898b9c3cb86863b5b57ebe00..cb4400ec0e11d124c43777abfe5b05dc2f92d4b7 100644
|
| --- a/media/capture/video/fake_video_capture_device.cc
|
| +++ b/media/capture/video/fake_video_capture_device.cc
|
| @@ -113,9 +113,11 @@ void DoTakeFakePhoto(VideoCaptureDevice::TakePhotoCallback callback,
|
| }
|
|
|
| FakeVideoCaptureDevice::FakeVideoCaptureDevice(BufferOwnership buffer_ownership,
|
| - float fake_capture_rate)
|
| + float fake_capture_rate,
|
| + VideoPixelFormat pixel_format)
|
| : buffer_ownership_(buffer_ownership),
|
| fake_capture_rate_(fake_capture_rate),
|
| + pixel_format_(pixel_format),
|
| current_zoom_(kMinZoom),
|
| weak_factory_(this) {}
|
|
|
| @@ -143,19 +145,20 @@ void FakeVideoCaptureDevice::AllocateAndStart(
|
| else
|
| capture_format_.frame_size.SetSize(320, 240);
|
|
|
| + capture_format_.pixel_format = pixel_format_;
|
| if (buffer_ownership_ == BufferOwnership::CLIENT_BUFFERS) {
|
| capture_format_.pixel_storage = PIXEL_STORAGE_CPU;
|
| capture_format_.pixel_format = PIXEL_FORMAT_ARGB;
|
| DVLOG(1) << "starting with client argb buffers";
|
| } else if (buffer_ownership_ == BufferOwnership::OWN_BUFFERS) {
|
| capture_format_.pixel_storage = PIXEL_STORAGE_CPU;
|
| - capture_format_.pixel_format = PIXEL_FORMAT_I420;
|
| - DVLOG(1) << "starting with own I420 buffers";
|
| + DVLOG(1) << "starting with own" << VideoPixelFormatToString(pixel_format_)
|
| + << "buffers";
|
| }
|
|
|
| - if (capture_format_.pixel_format == PIXEL_FORMAT_I420) {
|
| + if (buffer_ownership_ != BufferOwnership::CLIENT_BUFFERS) {
|
| fake_frame_.reset(new uint8_t[VideoFrame::AllocationSize(
|
| - PIXEL_FORMAT_I420, capture_format_.frame_size)]);
|
| + pixel_format_, capture_format_.frame_size)]);
|
| }
|
|
|
| beep_time_ = base::TimeDelta();
|
| @@ -249,8 +252,7 @@ void FakeVideoCaptureDevice::CaptureUsingClientBuffers(
|
| DLOG_IF(ERROR, !capture_buffer) << "Couldn't allocate Capture Buffer";
|
| DCHECK(capture_buffer->data()) << "Buffer has NO backing memory";
|
|
|
| - if (capture_format_.pixel_storage == PIXEL_STORAGE_GPUMEMORYBUFFER &&
|
| - capture_format_.pixel_format == media::PIXEL_FORMAT_I420) {
|
| + if (capture_format_.pixel_storage == PIXEL_STORAGE_GPUMEMORYBUFFER) {
|
| // Since SkBitmap expects a packed&continuous memory region for I420, we
|
| // need to use |fake_frame_| to draw onto.
|
| memset(fake_frame_.get(), 0, capture_format_.ImageAllocationSize());
|
| @@ -259,9 +261,10 @@ void FakeVideoCaptureDevice::CaptureUsingClientBuffers(
|
|
|
| // Copy data from |fake_frame_| into the reserved planes of GpuMemoryBuffer.
|
| size_t offset = 0;
|
| - for (size_t i = 0; i < VideoFrame::NumPlanes(PIXEL_FORMAT_I420); ++i) {
|
| + for (size_t i = 0; i < VideoFrame::NumPlanes(capture_format_.pixel_format);
|
| + ++i) {
|
| const size_t plane_size =
|
| - VideoFrame::PlaneSize(PIXEL_FORMAT_I420, i,
|
| + VideoFrame::PlaneSize(capture_format_.pixel_format, i,
|
| capture_format_.frame_size)
|
| .GetArea();
|
| memcpy(capture_buffer->data(i), fake_frame_.get() + offset, plane_size);
|
|
|