fuchsia.camera2

PROTOCOLS

Manager

Defined in fuchsia.camera2/manager.fidl

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

OnDeviceUnavailable

Notifies the client when a camera becomes unavailable.

Response

NameType
device_id int32

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

AcknowledgeDeviceEvent

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

Request

NameType

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 request<Stream>

Response

NameType
format fuchsia.sysmem/ImageFormat_2

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 int32

Unmute

Request

NameType
device_id int32

Response

NameType
status int32

Stream

Defined in fuchsia.camera2/stream.fidl

Start

Control Operations Starts the streaming of frames.

Request

NameType

Stop

Stops the streaming of frames.

Request

NameType

ReleaseFrame

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

Request

NameType
buffer_id uint32

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

AcknowledgeFrameError

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

Request

NameType

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 int32

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 int32

GetImageFormats

Get the image formats that this stream supports.

Request

NameType

Response

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

Manager

Defined in fuchsia.camera2/manager.fidl

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

OnDeviceUnavailable

Notifies the client when a camera becomes unavailable.

Response

NameType
device_id int32

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

AcknowledgeDeviceEvent

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

Request

NameType

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 request<Stream>

Response

NameType
format fuchsia.sysmem/ImageFormat_2

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 int32

Unmute

Request

NameType
device_id int32

Response

NameType
status int32

Stream

Defined in fuchsia.camera2/stream.fidl

Start

Control Operations Starts the streaming of frames.

Request

NameType

Stop

Stops the streaming of frames.

Request

NameType

ReleaseFrame

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

Request

NameType
buffer_id uint32

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

AcknowledgeFrameError

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

Request

NameType

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 int32

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 int32

GetImageFormats

Get the image formats that this stream supports.

Request

NameType

Response

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

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.

NameTypeDescriptionDefault
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

NameTypeDescriptionDefault
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

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.

NameTypeDescriptionDefault
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

NameTypeDescriptionDefault
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

Type: uint32

Defined in fuchsia.camera2/manager.fidl

NameValueDescription
BUILTIN 1
VIRTUAL 2

FrameStatus

Type: uint32

Defined in fuchsia.camera2/stream.fidl

Status to be set when a frame is signalled available.

NameValueDescription
OK 0
ERROR_FRAME 1
ERROR_BUFFER_FULL 2

DeviceType

Type: uint32

Defined in fuchsia.camera2/manager.fidl

NameValueDescription
BUILTIN 1
VIRTUAL 2

FrameStatus

Type: uint32

Defined in fuchsia.camera2/stream.fidl

Status to be set when a frame is signalled available.

NameValueDescription
OK 0
ERROR_FRAME 1
ERROR_BUFFER_FULL 2

TABLES

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.

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

DeviceInfo

Defined in fuchsia.camera2/manager.fidl

Identifying information about the device.

OrdinalNameTypeDescription
1 vendor_id uint16 Information from physical device enumeration:
2 vendor_name string[255]
3 product_id uint16
4 product_name string[255]
5 serial_number string[255]
6 type DeviceType Information about the type of device:

FrameMetadata

Defined in fuchsia.camera2/stream.fidl

OrdinalNameTypeDescription
1 timestamp int64
2 image_format_index uint32 |image_format_index| references the index into the vector of available formats supported by the stream.

StreamProperties

Defined in fuchsia.camera2/stream.fidl

OrdinalNameTypeDescription
1 stream_type CameraStreamType These could be one or more of the above mentioned Stream Types

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.

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

DeviceInfo

Defined in fuchsia.camera2/manager.fidl

Identifying information about the device.

OrdinalNameTypeDescription
1 vendor_id uint16 Information from physical device enumeration:
2 vendor_name string[255]
3 product_id uint16
4 product_name string[255]
5 serial_number string[255]
6 type DeviceType Information about the type of device:

FrameMetadata

Defined in fuchsia.camera2/stream.fidl

OrdinalNameTypeDescription
1 timestamp int64
2 image_format_index uint32 |image_format_index| references the index into the vector of available formats supported by the stream.

StreamProperties

Defined in fuchsia.camera2/stream.fidl

OrdinalNameTypeDescription
1 stream_type CameraStreamType These could be one or more of the above mentioned Stream Types

BITS

CameraStreamType

Type: uint32

NameValueDescription
MACHINE_LEARNING 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
MONITORING 2 This is Security Video Stream which could support multiple resolutions at runtime.
FULL_RESOLUTION 4
DOWNSCALED_RESOLUTION 8 ML request a DS stream for Video Conferencing which is fixed resolution
VIDEO_CONFERENCE 16 This is Video Conferencing Stream which could support multiple resolutions at runtime.

CameraStreamType

Type: uint32

NameValueDescription
MACHINE_LEARNING 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
MONITORING 2 This is Security Video Stream which could support multiple resolutions at runtime.
FULL_RESOLUTION 4
DOWNSCALED_RESOLUTION 8 ML request a DS stream for Video Conferencing which is fixed resolution
VIDEO_CONFERENCE 16 This is Video Conferencing Stream which could support multiple resolutions at runtime.

CONSTANTS

NameValueTypeDescription
MAX_IMAGE_FORMATS 256 uint64 Maximum number of image formats per stream.
MAX_IMAGE_FORMATS 256 uint64 Maximum number of image formats per stream.