mirror of
https://github.com/klzgrad/naiveproxy.git
synced 2024-11-25 06:46:09 +03:00
65 lines
3.1 KiB
Plaintext
65 lines
3.1 KiB
Plaintext
|
// Copyright 2017 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/scoped_access_permission.mojom";
|
||
|
import "ui/gfx/geometry/mojo/geometry.mojom";
|
||
|
|
||
|
// Interface for a producer to feed video frames into a virtual
|
||
|
// device. These frames will appear to the consumer of the device
|
||
|
// as if they were produced by a real device.
|
||
|
//
|
||
|
// The buffers used for transporting video frames are managed by
|
||
|
// this interface, and are obtained from a finite size buffer pool.
|
||
|
// When the producer wants to push a frame, it will first request a buffer
|
||
|
// via |RequestFrameBuffer|, and a buffer ID will be provided in the
|
||
|
// response. In the process of assigning a buffer to the producer, a new
|
||
|
// buffer might be created and/or an old buffer might be retired.
|
||
|
//
|
||
|
// To avoid the remapping of buffers in producer after each buffer
|
||
|
// request, a separate interface |Producer| is used for notifying the
|
||
|
// producer with the buffer information changes. It is producer's
|
||
|
// responsibility for caching the buffer information.
|
||
|
interface SharedMemoryVirtualDevice {
|
||
|
// This is used by the producer for requesting a buffer to store frame
|
||
|
// data. The frame can subsequently be pushed via |OnFrameReadyInBuffer|.
|
||
|
// An invalid buffer ID |Constants.kInvalidBufferId| will be returned
|
||
|
// if no buffer is available.
|
||
|
//
|
||
|
// Note: A new buffer might be created and/or an old buffer might be
|
||
|
// retired as a side-effect of the request. In that case,
|
||
|
// |Producer.OnNewBufferHandle| and/or |Producer.OnBufferRetired|
|
||
|
// will be invoked.
|
||
|
RequestFrameBuffer(gfx.mojom.Size dimension,
|
||
|
media.mojom.VideoCapturePixelFormat pixel_format)
|
||
|
=> (int32 buffer_id);
|
||
|
|
||
|
// Called to indicate that a video frame is ready in the given buffer
|
||
|
// |buffer_id|.
|
||
|
OnFrameReadyInBuffer(int32 buffer_id,
|
||
|
media.mojom.VideoFrameInfo frame_info);
|
||
|
};
|
||
|
|
||
|
// Similar to SharedMemoryVirtualDevice but uses MailboxHolders instead of
|
||
|
// shared memory for transporting frames. The MailboxHolders are to be
|
||
|
// provided by the caller.
|
||
|
interface TextureVirtualDevice {
|
||
|
// Registers a new set of mailbox holders for subsequent transport of
|
||
|
// frames.
|
||
|
OnNewMailboxHolderBufferHandle(
|
||
|
int32 buffer_id, media.mojom.MailboxBufferHandleSet mailbox_handles);
|
||
|
// The invoker must guarantee that the textures with |buffer_id| stay valid
|
||
|
// until |access_permission| is released by the invocation target.
|
||
|
OnFrameReadyInBuffer(int32 buffer_id,
|
||
|
ScopedAccessPermission access_permission,
|
||
|
media.mojom.VideoFrameInfo frame_info);
|
||
|
// Unregisters a set of mailbox holders previously registered via
|
||
|
// OnNewMailboxHolderBufferHandle(). Note, that this should not be called
|
||
|
// while the corresponding buffer is still in use via OnFrameReadyInBuffer().
|
||
|
OnBufferRetired(int32 buffer_id);
|
||
|
};
|