fuchsia.camera

PROTOCOLS

Control

Defined in fuchsia.camera/camera.fidl

These are the original interfaces, which are being used for compatibility. The names are preserved from the ones in camera.h for porting ease.

GetFormats

Get the available format types for this device NOTE: The formats are paginated to MAX_FORMATS_PER_RESPONSE, multiple GetFormats need to be issued until total_format_count are received

Request

NameType
index uint32

Response

NameType
formats vector<VideoFormat>
total_format_count uint32
status int32

CreateStream

Sent by the client to indicate desired stream characteristics. If setting the format is successful, the stream request will be honored. The stream token is used to provide additional control over the interface from the Camera Manager. The driver provides the guarantee that: 1) If the stream token receives the PEER_CLOSED event, the driver will close the stream. 2) If the Stream interface is closed, the driver will close the eventpair.

Request

NameType
buffer_collection fuchsia.sysmem/BufferCollectionInfo
rate FrameRate
stream request<Stream>
stream_token handle<eventpair>

GetDeviceInfo

Request

NameType

Response

NameType
device_info DeviceInfo

Stream

Defined in fuchsia.camera/camera.fidl

Start

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.

Response

NameType
frame FrameAvailableEvent

Manager

Defined in fuchsia.camera/manager.fidl

The Camera Manager grants access to individual or sets of cameras 1) You request the list of cameras, which gives you camera descriptions 2) You request the list of formats available for the camera to which you wish to connect. 3) You request a Stream interface using CreateStream.

GetDevices

Returns a list of all the video devices that are currently plugged in and enumerated. The camera_id field of the DeviceInfo is used to specify a device in GetFormats, GetStream and GetStreamAndBufferCollection.

Request

NameType

Response

NameType
descriptions vector<DeviceInfo>

GetFormats

Get all the available formats for a camera. camera_id is obtained from a DeviceInfo returned by GetDevices.

Request

NameType
camera_id uint64
index uint32

Response

NameType
formats vector<VideoFormat>
total_format_count uint32

CreateStream

Create a Stream with the specified access rights. This may not succeed. If it does succeed, the Stream will have the rights indicated. buffer_info contains a set of buffers to be used with the Stream. This is being deprecated - please use CreateStreamV2.

Request

NameType
request VideoStream
buffer_info fuchsia.sysmem/BufferCollectionInfo
stream request<Stream>
client_token handle<eventpair>

CreateStreamV2

Create a Stream with the specified access rights. This may not succeed. If it does succeed, the Stream will have the rights indicated. buffer_info contains a set of buffers to be used with the Stream.

Request

NameType
request VideoStreamV2
buffer_info fuchsia.sysmem/BufferCollectionInfo
stream request<fuchsia.camera.common/Stream>
client_token handle<eventpair>

STRUCTS

DeviceInfo

Defined in fuchsia.camera/camera.fidl

Identifying information about the device.

NameTypeDescriptionDefault
camera_id uint64 No default
vendor_id uint16 No default
vendor_name string No default
product_id uint16 No default
product_name string No default
serial_number string No default
max_stream_count uint16 The maximum number of stream interfaces that the device can support simultaneously. No default
output_capabilities uint32 No default

Metadata

Defined in fuchsia.camera/camera.fidl

NameTypeDescriptionDefault
timestamp int64 No default

FrameAvailableEvent

Defined in fuchsia.camera/camera.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 Metadata No default

FrameRate

Defined in fuchsia.camera/camera.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

VideoFormat

Defined in fuchsia.camera/camera.fidl

NameTypeDescriptionDefault
format fuchsia.sysmem/ImageFormat No default
rate FrameRate No default

VideoStream

Defined in fuchsia.camera/manager.fidl

A stream that the camera manager can provide. Video streams reference a a camera, but may have additional hardware and bandwidth restrictions from and ISP or other processing units. This is being deprecated - please use VideoStreamV2 (below).

NameTypeDescriptionDefault
camera_id uint64 The camera_id corresponds to the camera_id that is given in the DeviceInfo received from GetDevices. No default
format VideoFormat The requested video format. Note that this is field is necessary to set The frame rate, even when calling CreateStream. When calling CreateStream, format.format should match buffer_info.format. No default

VideoStreamV2

Defined in fuchsia.camera/manager.fidl

Preferred version of stream. A version of stream that relies on definition of VideoFormat coming out of fuchsia.hardware.camera. Streams reference a camera, but may have additional hardware and bandwidth restrictions from an ISP or other processing units. New code should depend on this as the other version will be deprecated when dependencies are removed.

NameTypeDescriptionDefault
camera_id uint64 The camera_id corresponds to the camera_id that is given in DeviceInfo received from GetDevices. No default
format fuchsia.camera.common/VideoFormat The requested video format. Note that this field is necessary to set the frame rate, even when calling CreateStream. When calling CreateStream format.format should match buffer_info.format. No default

ENUMS

FrameStatus

Type: uint32

Defined in fuchsia.camera/camera.fidl

Status to be set when a frame is signalled available.

NameValueDescription
OK 0
ERROR_FRAME 1
ERROR_BUFFER_FULL 2

CONSTANTS

NameValueType
MAX_FORMATS_PER_RESPONSE 16 uint32
CAMERA_OUTPUT_UNKNOWN 0 uint32
CAMERA_OUTPUT_STILL_IMAGE 1 uint32
CAMERA_OUTPUT_BURST 2 uint32
CAMERA_OUTPUT_STREAM 4 uint32
CAMERA_OUTPUT_HDR 8 uint32
CAMERA_OUTPUT_DEPTH 16 uint32
CAMERA_OUTPUT_STEREO 32 uint32