Chromium Code Reviews| Index: services/video_capture/video_capture_service.cc |
| diff --git a/services/video_capture/video_capture_service.cc b/services/video_capture/video_capture_service.cc |
| index 20c85df51d90e20f5c1fdc924afaa044fdeb4b2c..43f4853b51302b6e02eec863c606b9fd8f372fd5 100644 |
| --- a/services/video_capture/video_capture_service.cc |
| +++ b/services/video_capture/video_capture_service.cc |
| @@ -4,16 +4,15 @@ |
| #include "services/video_capture/video_capture_service.h" |
| -#include "media/capture/video/fake_video_capture_device.h" |
| +#include "base/message_loop/message_loop.h" |
| +#include "media/capture/video/fake_video_capture_device_factory.h" |
| +#include "media/capture/video/video_capture_buffer_pool.h" |
| +#include "media/capture/video/video_capture_buffer_tracker.h" |
| #include "media/capture/video/video_capture_jpeg_decoder.h" |
| -#include "services/video_capture/video_capture_device_factory_impl.h" |
| +#include "services/video_capture/device_factory_media_to_mojo_adapter.h" |
| +#include "services/video_capture/mock_device_factory.h" |
| namespace { |
| -static const char kFakeDeviceDisplayName[] = "Fake Video Capture Device"; |
| -static const char kFakeDeviceId[] = "FakeDeviceId"; |
| -static const char kFakeModelId[] = "FakeModelId"; |
| -static const float kFakeCaptureDefaultFrameRate = 20.0f; |
| - |
| // TODO(chfremer): Replace with an actual decoder factory. |
| // https://crbug.com/584797 |
| std::unique_ptr<media::VideoCaptureJpegDecoder> CreateJpegDecoder() { |
| @@ -24,7 +23,7 @@ std::unique_ptr<media::VideoCaptureJpegDecoder> CreateJpegDecoder() { |
| namespace video_capture { |
| -VideoCaptureService::VideoCaptureService() = default; |
| +VideoCaptureService::VideoCaptureService() : mock_device_factory_(nullptr) {} |
| VideoCaptureService::~VideoCaptureService() = default; |
| @@ -57,7 +56,7 @@ void VideoCaptureService::ConnectToFakeDeviceFactory( |
| void VideoCaptureService::ConnectToMockDeviceFactory( |
| mojom::VideoCaptureDeviceFactoryRequest request) { |
| LazyInitializeMockDeviceFactory(); |
| - mock_factory_bindings_.AddBinding(mock_device_factory_.get(), |
| + mock_factory_bindings_.AddBinding(mock_device_factory_adapter_.get(), |
| std::move(request)); |
| } |
| @@ -73,34 +72,40 @@ void VideoCaptureService::AddDeviceToMockFactory( |
| void VideoCaptureService::LazyInitializeDeviceFactory() { |
| if (device_factory_) |
| return; |
| - device_factory_ = base::MakeUnique<VideoCaptureDeviceFactoryImpl>( |
| - base::Bind(CreateJpegDecoder)); |
| + |
| + // Create the platform-specific device factory. |
| + // Task runner does not seem to actually be used. |
|
mcasas
2016/11/04 23:24:29
Nit: it's actually used for CrOs implementation [1
chfremer
2016/11/07 18:42:37
Thanks. I should have seen that.
Makes me wonder i
|
| + std::unique_ptr<media::VideoCaptureDeviceFactory> media_device_factory = |
| + media::VideoCaptureDeviceFactory::CreateFactory( |
| + base::MessageLoop::current()->task_runner()); |
| + |
| + device_factory_ = base::MakeUnique<DeviceFactoryMediaToMojoAdapter>( |
| + std::move(media_device_factory), base::Bind(CreateJpegDecoder)); |
| } |
| void VideoCaptureService::LazyInitializeFakeDeviceFactory() { |
| if (fake_device_factory_) |
| return; |
| - fake_device_factory_ = base::MakeUnique<VideoCaptureDeviceFactoryImpl>( |
| - base::Bind(CreateJpegDecoder)); |
| - media::VideoCaptureDeviceDescriptor fake_device_descriptor; |
| - fake_device_descriptor.display_name = kFakeDeviceDisplayName; |
| - fake_device_descriptor.device_id = kFakeDeviceId; |
| - fake_device_descriptor.model_id = kFakeModelId; |
| - fake_device_descriptor.capture_api = media::VideoCaptureApi::UNKNOWN; |
| - fake_device_descriptor.transport_type = |
| - media::VideoCaptureTransportType::OTHER_TRANSPORT; |
| - fake_device_factory_->AddMediaDevice( |
| - base::MakeUnique<media::FakeVideoCaptureDevice>( |
| - media::FakeVideoCaptureDevice::BufferOwnership::OWN_BUFFERS, |
| - kFakeCaptureDefaultFrameRate), |
| - std::move(fake_device_descriptor)); |
| + |
| + auto media_fake_device_factory = |
| + base::MakeUnique<media::FakeVideoCaptureDeviceFactory>(); |
| + |
| + fake_device_factory_ = base::MakeUnique<DeviceFactoryMediaToMojoAdapter>( |
| + std::move(media_fake_device_factory), base::Bind(CreateJpegDecoder)); |
|
mcasas
2016/11/04 23:24:29
This might work for l.90-94:
fake_device_factor
chfremer
2016/11/07 18:42:37
Done.
|
| } |
| void VideoCaptureService::LazyInitializeMockDeviceFactory() { |
| if (mock_device_factory_) |
| return; |
| - mock_device_factory_ = base::MakeUnique<VideoCaptureDeviceFactoryImpl>( |
| - base::Bind(CreateJpegDecoder)); |
| + |
| + auto mock_device_factory = base::MakeUnique<MockDeviceFactory>(); |
| + // We keep a pointer to the MockDeviceFactory as a member so that we can |
| + // invoke its AddMockDevice(). Ownership of the MockDeviceFactory is moved |
| + // to the DeviceFactoryMediaToMojoAdapter. |
| + mock_device_factory_ = mock_device_factory.get(); |
| + mock_device_factory_adapter_ = |
| + base::MakeUnique<DeviceFactoryMediaToMojoAdapter>( |
| + std::move(mock_device_factory), base::Bind(CreateJpegDecoder)); |
| } |
| } // namespace video_capture |