通訊協定
控管
定義於 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 可授予個別或一組攝影機的存取權
- 您要求攝影機清單,系統會提供攝影機說明
- 要求提供要連線的相機支援的格式清單。
- 您可以使用 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 |
|
ERROR_FRAME |
1 |
產生影格時發生錯誤。與這項通知對應的資料緩衝區不會有任何資料。 |
ERROR_BUFFER_FULL |
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 |