| 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 3d66b59b31fdc853d5e492eb9e86cafeaaab2ca4..0a3b18a7065bfe5c3b6cd821c183319b8a445e98 100644
|
| --- a/services/video_capture/video_capture_service.cc
|
| +++ b/services/video_capture/video_capture_service.cc
|
| @@ -4,17 +4,16 @@
|
|
|
| #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/service_manager/public/cpp/interface_registry.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() {
|
| @@ -25,7 +24,7 @@ std::unique_ptr<media::VideoCaptureJpegDecoder> CreateJpegDecoder() {
|
|
|
| namespace video_capture {
|
|
|
| -VideoCaptureService::VideoCaptureService() = default;
|
| +VideoCaptureService::VideoCaptureService() : mock_device_factory_(nullptr) {}
|
|
|
| VideoCaptureService::~VideoCaptureService() = default;
|
|
|
| @@ -58,7 +57,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));
|
| }
|
|
|
| @@ -74,34 +73,38 @@ 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.
|
| + 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));
|
| +
|
| + fake_device_factory_ = base::MakeUnique<DeviceFactoryMediaToMojoAdapter>(
|
| + base::MakeUnique<media::FakeVideoCaptureDeviceFactory>(),
|
| + base::Bind(&CreateJpegDecoder));
|
| }
|
|
|
| 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
|
|
|