fuchsia.camera

新增:7

通訊協定

控管

定義於 fuchsia.camera/camera.fidl

這些是原始介面,用於相容性。為方便移植,這些名稱與 camera.h 中的名稱相同。

CreateStream

由用戶端傳送,表示所需的串流特性。如果成功設定格式,系統就會接受串流要求。串流權杖可用來進一步控管 Camera Manager 的介面。驅動程式會保證: 1) 如果串流權杖收到 PEER_CLOSED 事件,驅動程式庫會關閉串流。2) 如果 Stream 介面關閉,驅動程式庫會關閉 eventpair。

要求

名稱類型
buffer_collection fuchsia.sysmem/BufferCollectionInfo
rate FrameRate
stream server_end:Stream
stream_token handle<eventpair>

GetDeviceInfo

要求

<EMPTY>

回應

名稱類型
device_info DeviceInfo

GetFormats

取得這部裝置可用的格式類型 注意:格式會分頁至 MAX_FORMATS_PER_RESPONSE,必須發出多個 GetFormats,直到收到 total_format_count

要求

名稱類型
index uint32

回應

名稱類型
formats vector<VideoFormat>
total_format_count uint32
status zx/Result

管理員

定義於 fuchsia.camera/manager.fidl

Camera Manager 可授予個別或一組攝影機的存取權

  1. 您要求攝影機清單,系統會提供攝影機說明
  2. 要求提供要連線的相機支援的格式清單。
  3. 您可以使用 CreateStream 要求 Stream 介面。

CreateStream

建立具有指定存取權的串流。這項操作不一定會成功。 如果成功,Stream 將擁有指定的權利。buffer_info 包含一組要與串流搭配使用的緩衝區。這項功能即將淘汰,請改用 CreateStreamV2。

要求

名稱類型
request VideoStream
buffer_info fuchsia.sysmem/BufferCollectionInfo
stream server_end:Stream
client_token handle<eventpair>

CreateStreamV2

建立具有指定存取權的串流。這項操作不一定會成功。 如果成功,Stream 將擁有指定的權利。buffer_info 包含一組要與串流搭配使用的緩衝區。

要求

名稱類型
request VideoStreamV2
buffer_info fuchsia.sysmem/BufferCollectionInfo
stream server_end:Stream
client_token handle<eventpair>

GetDevices

傳回目前已插入並列舉的所有視訊裝置清單。DeviceInfo 的 camera_id 欄位用於在 GetFormats、GetStream 和 GetStreamAndBufferCollection 中指定裝置。

要求

<EMPTY>

回應

名稱類型
descriptions vector<DeviceInfo>

GetFormats

取得相機的所有可用格式。camera_id 是從 GetDevices 傳回的 DeviceInfo 取得。

要求

名稱類型
camera_id uint64
index uint32

回應

名稱類型
formats vector<VideoFormat>
total_format_count uint32

串流播放

定義於 fuchsia.camera/camera.fidl

OnFrameAvailable

當影格可供處理或發生錯誤時,驅動程式庫會傳送這個狀態碼給用戶端。

回應

名稱類型
frame FrameAvailableEvent

ReleaseFrame

解鎖指定影格,讓驅動程式庫重複使用記憶體。

要求

名稱類型
buffer_id uint32

開始

開始串流影格。

要求

<EMPTY>

停止

停止串流影格。

要求

<EMPTY>

STRUCTS

DeviceInfo

定義於 fuchsia.camera/camera.fidl

裝置的識別資訊。

欄位類型說明預設
camera_id uint64 無預設值
vendor_id uint16 無預設值
vendor_name string 無預設值
product_id uint16 無預設值
product_name string 無預設值
max_stream_count uint16

裝置可同時支援的串流介面數量上限。

無預設值
output_capabilities uint32 無預設值

FrameAvailableEvent

定義於 fuchsia.camera/camera.fidl

當影格可供處理或發生錯誤時,驅動程式庫會傳送這個狀態碼給用戶端。

欄位類型說明預設
frame_status FrameStatus

如果發生錯誤,則為非零值。

無預設值
buffer_id uint32

緩衝區集合中的緩衝區索引。

無預設值
metadata Metadata 無預設值

FrameRate

定義於 fuchsia.camera/camera.fidl

欄位類型說明預設
frames_per_sec_numerator uint32

影格率為 frames_per_sec_numerator / frames_per_sec_denominator。

無預設值
frames_per_sec_denominator uint32 無預設值

中繼資料

定義於 fuchsia.camera/camera.fidl

欄位類型說明預設
timestamp int64 無預設值
data_size uint32
新增:11
無預設值

VideoFormat

定義於 fuchsia.camera/camera.fidl

欄位類型說明預設
format fuchsia.sysmem/ImageFormat 無預設值
rate FrameRate 無預設值

VideoStream

定義於 fuchsia.camera/manager.fidl

相機管理工具可提供的串流。視訊串流會參照攝影機,但可能會有來自網際網路服務供應商或其他處理單元的額外硬體和頻寬限制。這項功能即將淘汰,請改用 VideoStreamV2 (下方)。

欄位類型說明預設
camera_id uint64

camera_id 對應的是從 GetDevices 接收的 DeviceInfo 中提供的 camera_id。

無預設值
format VideoFormat

要求的影片格式。請注意,即使呼叫 CreateStream,也必須設定這個欄位,才能設定影格率。呼叫 CreateStream 時,format.format 應與 buffer_info.format 相符。

無預設值

VideoStreamV2

定義於 fuchsia.camera/manager.fidl

偏好的串流版本。這個串流版本仰賴 fuchsia.hardware.camera 的 VideoFormat 定義。串流會參照攝影機,但可能會有來自網際網路服務供應商或其他處理單元的額外硬體和頻寬限制。新程式碼應依附這個版本,因為移除依附元件時,另一個版本會淘汰。

欄位類型說明預設
camera_id uint64

camera_id 對應的是從 GetDevices 接收的 DeviceInfo 中提供的 camera_id。

無預設值
format VideoFormat

要求的影片格式。請注意,即使呼叫 CreateStream,也必須設定這個欄位,才能設定影格率。呼叫 CreateStream 時,format.format 應與 buffer_info.format 相符。

無預設值

列舉

FrameStatus strict

類型:uint32

定義於 fuchsia.camera/camera.fidl

在影格標示為可用時設定的狀態。

名稱值說明
0
1

產生影格時發生錯誤。與這項通知對應的資料緩衝區不會有任何資料。

2

資料緩衝區沒有可用空間,導致影格遭到捨棄。

常數

名稱值類型說明
CAMERA_OUTPUT_BURST 2 uint32
CAMERA_OUTPUT_DEPTH 16 uint32
CAMERA_OUTPUT_HDR 8 uint32
CAMERA_OUTPUT_STEREO 32 uint32
CAMERA_OUTPUT_STILL_IMAGE 1 uint32
CAMERA_OUTPUT_STREAM 4 uint32
CAMERA_OUTPUT_UNKNOWN 0 uint32

一組粗略的功能。這個結構體用於相機說明,可協助篩除不具備所需功能的相機。這組宣告會是位元欄位:CameraOutputCapabilities。

MAX_FORMATS_PER_RESPONSE 16 uint32