| // Copyright 2019 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| module video_capture.mojom; |
| |
| import "media/capture/mojom/video_capture_types.mojom"; |
| import "services/video_capture/public/mojom/producer.mojom"; |
| import "services/video_capture/public/mojom/video_source.mojom"; |
| import "services/video_capture/public/mojom/virtual_device.mojom"; |
| |
| // Provides access to a set of video sources. |
| interface VideoSourceProvider { |
| GetSourceInfos() => (array<media.mojom.VideoCaptureDeviceInfo> source_infos); |
| |
| // This essentially constrains things down to a particular source. This is |
| // useful for subsequently passing the resulting |stream| to clients that |
| // are supposed to get access to only a particular source. |
| GetVideoSource(string source_id, VideoSource& stream); |
| |
| // Creates a new virtual capture device, which will be exposed |
| // using the given |device_info|. The returned |virtual_device| is to |
| // be used by the caller to subsequently push video frames. These frames will |
| // appear to clients of the device as if they were produced by the device. |
| // If |send_buffer_handles_to_producer_as_raw_file_descriptors| is set to |
| // true, buffers requested via |
| // |SharedMemoryVirtualDevice.RequestFrameBuffer()| will be shared with |
| // |producer| as |VideoBufferHandle.shared_memory_via_raw_file_descriptor|, |
| // and otherwise as |VideoBufferHandle.shared_buffer_handle|. |
| // The virtual device is removed either when the caller releases |
| // |virtual_device| or the given |producer| is closed. |
| AddSharedMemoryVirtualDevice( |
| media.mojom.VideoCaptureDeviceInfo device_info, |
| Producer producer, |
| bool send_buffer_handles_to_producer_as_raw_file_descriptors, |
| SharedMemoryVirtualDevice& virtual_device); |
| |
| // Similar to AddSharedMemoryVirtualDevice() but for virtual devices that |
| // are fed with textures (via MailboxHolders) allocated by the caller instead |
| // of shared memory buffers provided by the service on demand. |
| AddTextureVirtualDevice( |
| media.mojom.VideoCaptureDeviceInfo device_info, |
| TextureVirtualDevice& virtual_device); |
| }; |