fuchsia.camera2

Added: 7

PROTOCOLS

Manager

Defined in fuchsia.camera2/manager.fidl

AcknowledgeDeviceEvent

AcknowledgeDeviceEvent must be called after any of the above events before more events will be sent.

Request

<EMPTY>

ConnectToStream

Connect to a camera stream: device_id Refers to a specific device_id that has been advertised by OnDeviceAvailable. constraints contains a set of constraints on the requested stream. The Camera Manager will attempt to find a stream that meets the constraints. If multiple streams match, one of the matching streams will be connected. token refers to a Sysmem buffer allocation that will be used to pass images using the Stream protocol. The Camera Manager will apply a BufferCollectionContraints related to the image format(s), so the client does not need to apply any ImageFormatConstraints. Sync is assumed to have been called on token before it is passed to ConnectToStream. Since constraints may not dictate a specific format, the initial format of images on the stream is indicated on the response. The connection is considered to be successful once a response has been given, unless stream is closed.

Request

NameType
device_id int32
constraints StreamConstraints
token fuchsia.sysmem/BufferCollectionToken
stream server_end<Stream>

Response

NameType
format fuchsia.sysmem/ImageFormat_2

OnDeviceAvailable

Notifies the client when a camera becomes available. A number of these events will be sent when a client first connects to this protocol. device_id is used to identify the camera. The device_id should not change throughout the lifetime of the camera. last_known_camera is set to true when the Camera Manager has notified the client of all the devices it currently knows about. description describes the properties of the camera.

Response

NameType
device_id int32
description DeviceInfo
last_known_camera bool

OnDeviceMuteChanged

Notifies the client when a camera becomes muted or unmuted. device_id refers to the device_id from the description of a previous OnDeviceAvailable call.

Response

NameType
device_id int32
currently_muted bool

OnDeviceUnavailable

Notifies the client when a camera becomes unavailable.

Response

NameType
device_id int32

MuteControl

Defined in fuchsia.camera2/manager.fidl

Mute

Mutes a camera. This is independent from stopping or closing a stream. A muted camera will not produce any more images until unmute is called. You can still connect to streams from a muted camera, but they will not produce frames until the camera is unmuted. device_id refers to the device_id from a previous OnDeviceAvailable call.

Request

NameType
device_id int32

Response

NameType
status zx/Status

Unmute

Request

NameType
device_id int32

Response

NameType
status zx/Status

Stream

Defined in fuchsia.camera2/stream.fidl

AcknowledgeFrameError

Provides flow control for receiving frame errors. See OnFrameAvailable comment.

Request

<EMPTY>

GetBuffers

Returns a token to the buffers that are being used to output frames on the stream. The token is dispensable which means it doesn't have to be turned in to sysmem for allocation to complete. This also means that any SetConstraints call on the returned token can't conflict with the constraints in the StreamConfig, otherwise attempts to wait for buffers on the token will fail.

Request

<EMPTY>

Response

NameType
token fuchsia.sysmem/BufferCollectionToken

GetImageFormats

Get the image formats that this stream supports.

Request

<EMPTY>

Response

NameType
image_formats vector<fuchsia.sysmem/ImageFormat_2>[256]

OnFrameAvailable

Sent by the driver to the client when a frame is available for processing, or an error occurred. The frame is considered read-locked by the client after this message. The client must call ReleaseFrame to release the read-lock for a non-error frame, or the consumer will eventually run out of buffers. If a frame has an error, the client must call AcknowledgeFrameError before another OnFrameAvailable will be called with an error frame.

Response

NameType
frame FrameAvailableInfo

ReleaseFrame

Unlocks the specified frame, allowing the driver to reuse the memory.

Request

NameType
buffer_id uint32

SetImageFormat

Change the image format of the stream. This is called when clients want to dynamically change the resolution of the stream while the streaming is is going on.

Request

NameType
image_format_index uint32

Response

NameType
s zx/Status

SetRegionOfInterest

Data operations This is used by clients to provide inputs for region of interest selection. Inputs are the x & y coordinates for the new bounding box. For streams which do not support smart framing, this would return an error.

Request

NameType
x_min float32
y_min float32
x_max float32
y_max float32

Response

NameType
s zx/Status

Start

Control Operations Starts the streaming of frames.

Request

<EMPTY>

Stop

Stops the streaming of frames.

Request

<EMPTY>

STRUCTS

FrameAvailableInfo

Defined in fuchsia.camera2/stream.fidl

Sent by the driver to the client when a frame is available for processing, or an error occurred.

FieldTypeDescriptionDefault
frame_status FrameStatus

Non zero if an error occurred.

No default
buffer_id uint32

The index of the buffer in the buffer collection.

No default
metadata FrameMetadata No default

FrameRate

Defined in fuchsia.camera2/stream.fidl

FieldTypeDescriptionDefault
frames_per_sec_numerator uint32

The frame rate is frames_per_sec_numerator / frames_per_sec_denominator.

No default
frames_per_sec_denominator uint32 No default

ENUMS

DeviceType strict

Type: uint32

Defined in fuchsia.camera2/manager.fidl

NameValueDescription
1
2

FrameStatus strict

Type: uint32

Defined in fuchsia.camera2/stream.fidl

Status to be set when a frame is signalled available.

NameValueDescription
0
1

An error occurred during the production of a frame. No data will be available in the data buffer corresponding to this notification.

2

No space was available in the data buffer, resulting in a dropped frame.

TABLES

DeviceInfo

Defined in fuchsia.camera2/manager.fidl

Identifying information about the device.

OrdinalFieldTypeDescription
vendor_id uint16

Information from physical device enumeration:

vendor_name string[255]
product_id uint16
product_name string[255]
type DeviceType

Information about the type of device:

FrameMetadata

Defined in fuchsia.camera2/stream.fidl

OrdinalFieldTypeDescription
timestamp int64
image_format_index uint32

|image_format_index| references the index into the vector of available formats supported by the stream.

capture_timestamp int64

The value of the system monotonic clock at the moment the buffer used to construct this frame was received from the ISP.

StreamConstraints

Defined in fuchsia.camera2/manager.fidl

These constraints are given to the Camera Manager when requesting a stream. The Camera Manager will use these constraints to match an appropriate stream.

OrdinalFieldTypeDescription
properties StreamProperties

A table that describes the properties of the stream. Any properties specified will be considered requirements for matching streams.

format_index uint32

If specified, the stream will be created using this index for the initial format index. If unspecified, the first stream format will be used.

StreamProperties

Defined in fuchsia.camera2/stream.fidl

OrdinalFieldTypeDescription
stream_type CameraStreamType

These could be one or more of the above mentioned Stream Types

BITS

CameraStreamType strict

Type: uint32

Defined in fuchsia.camera2/stream.fidl

Different Stream types provided by the camera stack.

NameValueDescription
1

ML request FR(Full Resolution) stream as well as a DS(Down Scaled Resolution) stream for Security Use Case which are of fixed resolutions

2

This is Security Video Stream which could support multiple resolutions at runtime.

4
8

ML request a DS stream for Video Conferencing which is fixed resolution

16

This is Video Conferencing Stream which could support multiple resolutions at runtime.

32

Stream with extended field of view.

CONSTANTS

NameValueTypeDescription
MAX_IMAGE_FORMATS 256 uint64

Maximum number of image formats per stream.