mirror of
https://github.com/klzgrad/naiveproxy.git
synced 2024-11-24 22:36:09 +03:00
67 lines
3.1 KiB
Plaintext
67 lines
3.1 KiB
Plaintext
// Copyright 2016 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/device.mojom";
|
|
import "services/video_capture/public/mojom/producer.mojom";
|
|
import "services/video_capture/public/mojom/virtual_device.mojom";
|
|
|
|
enum DeviceAccessResultCode {
|
|
NOT_INITIALIZED,
|
|
SUCCESS,
|
|
ERROR_DEVICE_NOT_FOUND
|
|
};
|
|
|
|
// Enables access to a set of video capture devices.
|
|
// Typical operation is to first call GetDeviceInfos() to obtain
|
|
// information about available devices. The |device_id| of the infos can
|
|
// subsequently be used to create an instance of
|
|
// video_capture.mojom.Device using CreateDevice().
|
|
// The factory guarantees that no two device infos it returns use the
|
|
// same |device_id|.
|
|
interface DeviceFactory {
|
|
GetDeviceInfos()
|
|
=> (array<media.mojom.VideoCaptureDeviceInfo> device_infos);
|
|
|
|
// Provides exclusive access to the device identified by |device_id|.
|
|
// The access is valid until either the message pipe associated with
|
|
// |device_request| is closed by the client, or a subsequent call to
|
|
// CreateDevice() is made. When a subsequent call is made while the
|
|
// |device_request| from a previous call has not yet been closed, the service
|
|
// "revokes" that previous |device_request| (by closing the connection) and
|
|
// the exclusive access goes to the new |device_request|.
|
|
// Note: This design avoids the issue of it not being clear how soon after a
|
|
// |device_request| has been (asynchronously) discarded a subsequent call to
|
|
// CreateDevice() would succeed if it were to deny access while still
|
|
// in use.
|
|
CreateDevice(string device_id, Device& device_request)
|
|
=> (DeviceAccessResultCode result_code);
|
|
|
|
// Creates a new virtual capture device, which will be exposed by the device
|
|
// factory 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);
|
|
};
|