通訊協定
管理員
定義於 fuchsia.camera2/manager.fidl
AcknowledgeDeviceEvent
在上述任何事件發生後,必須先呼叫 AcknowledgeDeviceEvent,系統才會傳送更多事件。
要求
<EMPTY>
ConnectToStream
連線至攝影機串流影像:
device_id 參照 OnDeviceAvailable 廣告的特定 device_id。
constraints 包含一組對所要求串流的限制。Camera Manager 會嘗試尋找符合限制的串流。如果有多個相符的串流,系統會連線至其中一個。token 是指 Sysmem 緩衝區分配,用於透過 Stream 通訊協定傳遞圖片。Camera Manager 會套用與圖片格式相關的 BufferCollectionContraints,因此用戶端不需要套用任何 ImageFormatConstraints。系統會假設在將 token 傳遞至 ConnectToStream 之前,已對其呼叫 Sync。由於 constraints 可能不會指定特定格式,因此回應會指出串流上圖片的初始格式。只要收到回應,連線就會視為成功,除非 stream 已關閉。
要求
| 名稱 | 類型 |
|---|---|
device_id |
int32
|
constraints |
StreamConstraints
|
token |
client_end:fuchsia.sysmem/BufferCollectionToken
|
stream |
server_end:Stream
|
回應
| 名稱 | 類型 |
|---|---|
format |
fuchsia.sysmem/ImageFormat_2
|
OnDeviceAvailable
在攝影機可用時通知用戶端。當用戶端首次連線至這個通訊協定時,系統會傳送多個這類事件。device_id 用於識別攝影機。device_id 在攝影機的生命週期內不應變更。當 Camera Manager 已通知用戶端目前已知的所有裝置時,last_known_camera 會設為 true。description 描述相機的屬性。
回應
| 名稱 | 類型 |
|---|---|
device_id |
int32
|
description |
DeviceInfo
|
last_known_camera |
bool
|
OnDeviceMuteChanged
在攝影機靜音或取消靜音時通知用戶端。device_id 是指先前 OnDeviceAvailable 呼叫說明中的 device_id。
回應
| 名稱 | 類型 |
|---|---|
device_id |
int32
|
currently_muted |
bool
|
OnDeviceUnavailable
在相機無法使用時通知用戶端。
回應
| 名稱 | 類型 |
|---|---|
device_id |
int32
|
MuteControl
定義於 fuchsia.camera2/manager.fidl
靜音
將攝影機設為靜音。這與停止或關閉串流無關。在呼叫取消靜音前,靜音的相機不會再產生任何圖片。您仍可連線至靜音相機的串流,但必須取消靜音,相機才會產生影格。device_id 是指先前 OnDeviceAvailable 呼叫中的 device_id。
要求
| 名稱 | 類型 |
|---|---|
device_id |
int32
|
回應
| 名稱 | 類型 |
|---|---|
status |
zx/Result
|
取消靜音
要求
| 名稱 | 類型 |
|---|---|
device_id |
int32
|
回應
| 名稱 | 類型 |
|---|---|
status |
zx/Result
|
串流播放
定義於 fuchsia.camera2/stream.fidl
AcknowledgeFrameError
提供接收影格錯誤的流量控制。請參閱 OnFrameAvailable 註解。
要求
<EMPTY>
GetBuffers
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
token |
client_end:fuchsia.sysmem/BufferCollectionToken
|
GetBuffers2
將權杖傳回至用於在串流上輸出影格的緩衝區。權杖為 dispensable,表示不必將權杖交給 sysmem 即可完成分配。這也表示,在傳回的權杖上呼叫 SetConstraints 時,不得與 StreamConfig 中的限制衝突,否則等待權杖緩衝區的嘗試會失敗。
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
token |
client_end:fuchsia.sysmem2/BufferCollectionToken
|
GetImageFormats
取得這個串流支援的圖片格式。
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
image_formats |
vector<fuchsia.sysmem/ImageFormat_2>:256
|
OnFrameAvailable
當有影格可供處理或發生錯誤時,驅動程式庫會傳送這個狀態碼給用戶端。收到這則訊息後,用戶端會將影格視為讀取鎖定。用戶端必須呼叫 ReleaseFrame,釋放非錯誤影格的讀取鎖定,否則消費者最終會用盡緩衝區。如果影格發生錯誤,用戶端必須先呼叫 AcknowledgeFrameError,才能使用錯誤影格呼叫另一個 OnFrameAvailable。
回應
| 名稱 | 類型 |
|---|---|
frame |
FrameAvailableInfo
|
ReleaseFrame
解鎖指定影格,讓驅動程式庫重複使用記憶體。
要求
| 名稱 | 類型 |
|---|---|
buffer_id |
uint32
|
SetImageFormat
變更串流的圖片格式。當用戶端想在串流期間動態變更串流解析度時,就會呼叫這個方法。
要求
| 名稱 | 類型 |
|---|---|
image_format_index |
uint32
|
回應
| 名稱 | 類型 |
|---|---|
s |
zx/Result
|
SetRegionOfInterest
資料作業 用戶端會使用這項作業,提供感興趣區域選取的輸入內容。輸入內容是新定界框的 x 和 y 座標。如果串流不支援智慧取景,則會傳回錯誤。
要求
| 名稱 | 類型 |
|---|---|
x_min |
float32
|
y_min |
float32
|
x_max |
float32
|
y_max |
float32
|
回應
| 名稱 | 類型 |
|---|---|
s |
zx/Result
|
開始
控制作業 開始串流影格。
要求
<EMPTY>
停止
停止串流影格。
要求
<EMPTY>
STRUCTS
FrameAvailableInfo
定義於 fuchsia.camera2/stream.fidl
當影格可供處理或發生錯誤時,驅動程式庫會傳送這個狀態碼給用戶端。
| 欄位 | 類型 | 說明 | 預設 |
|---|---|---|---|
frame_status |
FrameStatus
|
如果發生錯誤,則為非零值。 |
無預設值 |
buffer_id |
uint32
|
緩衝區集合中的緩衝區索引。 |
無預設值 |
metadata |
FrameMetadata
|
無預設值 |
FrameRate
定義於 fuchsia.camera2/stream.fidl
| 欄位 | 類型 | 說明 | 預設 |
|---|---|---|---|
frames_per_sec_numerator |
uint32
|
影格率為 frames_per_sec_numerator / frames_per_sec_denominator。 |
無預設值 |
frames_per_sec_denominator |
uint32
|
無預設值 |
列舉
DeviceType strict
類型:uint32
定義於 fuchsia.camera2/manager.fidl
| 名稱 | 值 | 說明 |
|---|---|---|
BUILTIN |
1 |
|
VIRTUAL |
2 |
FrameStatus strict
類型:uint32
定義於 fuchsia.camera2/stream.fidl
在影格標示為可用時設定的狀態。
| 名稱 | 值 | 說明 |
|---|---|---|
確定 |
0 |
|
ERROR_FRAME |
1 |
產生影格時發生錯誤。與這項通知對應的資料緩衝區不會有任何資料。 |
ERROR_BUFFER_FULL |
2 |
資料緩衝區沒有可用空間,導致影格遭到捨棄。 |
TABLES
DeviceInfo
定義於 fuchsia.camera2/manager.fidl
裝置的識別資訊。
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
vendor_id |
uint16
|
實體裝置列舉資訊: |
2 |
vendor_name |
string:255
|
|
3 |
product_id |
uint16
|
|
4 |
product_name |
string:255
|
|
5 |
type |
DeviceType
|
裝置類型相關資訊: |
FrameMetadata
定義於 fuchsia.camera2/stream.fidl
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
timestamp |
int64
|
|
2 |
image_format_index |
uint32
|
|image_format_index| 參照串流支援的可用圖片格式向量索引。 |
3 |
capture_timestamp |
int64
|
從 ISP 收到用於建構這個影格的緩衝區時,系統單調時鐘的值。 |
StreamConstraints
定義於 fuchsia.camera2/manager.fidl
要求串流時,系統會將這些限制提供給 Camera Manager。相機管理工具會使用這些限制條件來比對適當的串流。
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
properties |
StreamProperties
|
說明串流屬性的表格。指定的任何屬性都會視為比對串流的必要條件。 |
2 |
format_index |
uint32
|
如果指定,系統會使用這個索引建立串流,做為初始格式索引。如未指定,系統會使用第一個串流格式。 |
StreamProperties
定義於 fuchsia.camera2/stream.fidl
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
stream_type |
CameraStreamType
|
這些可能是上述一或多種串流類型 |
BITS
CameraStreamType strict
類型:uint32
定義於 fuchsia.camera2/stream.fidl
相機堆疊提供的不同串流類型。
| 名稱 | 值 | 說明 |
|---|---|---|
MACHINE_LEARNING |
1 | 機器學習要求 FR(完整解析度) 串流,以及 DS(縮小解析度) 串流,用於解析度固定的安全性用途 |
監控 |
2 | 這是安全性影片串流,可在執行階段支援多種解析度。 |
FULL_RESOLUTION |
4 | |
DOWNSCALED_RESOLUTION |
8 | 機器學習要求視訊會議使用 DS 串流,解析度固定 |
VIDEO_CONFERENCE |
16 | 這是視訊會議串流,可在執行階段支援多種解析度。 |
EXTENDED_FOV |
32 | 串流時視野更廣。 |
常數
| 名稱 | 值 | 類型 | 說明 |
|---|---|---|---|
| MAX_IMAGE_FORMATS |
256
|
uint64 |
每個串流的圖片格式數量上限。 |