本文件概述了 Google Meet 會議系統用於啟用智慧相機功能支援的 USB Video Class Extension Unit (XU) API。建立此規格的主要目的,是為了影響實務做法,讓這些功能能夠啟用,並為合作夥伴提供更完善的非同步可擴充性和測試功能。
如要進一步瞭解本文件的最新異動內容,請參閱「版本資訊」。
檢測設施
為協助合作夥伴驗證是否符合此規格,我們在開發人員模式的 Chromebox 視訊會議解決方案裝置中提供測試設施。啟用寫入檔案系統。在 /etc/chrome_dev.conf
中新增下列行:
--enable-logging
--log-level=0
請重新啟動裝置、連接攝影機和 USB 鍵盤,然後按下 Ctrl-Alt-X
,當前使用攝影機的規格都會運動並記錄至 /home/chronos/user/log/chrome
。
小端慣例
USB 是 little-endian 標準。本文件內:
- 多位元組數字看起來是大端序 (且會傳輸到小端序)。
- 位元組陣列適用於小端序記憶體配置。
例如,0x12345678
與 [0x78, 0x56, 0x34, 0x12]
相同。
擴充單元 GUID
支援這項 Meet XU 控制規格的擴充功能單位必須使用這個 GUID。
擴充單元 | GUID |
---|---|
周邊控制 XU | {74D7E924-49C9-4A45-98A3-8A9F60061E83} |
週邊裝置控制 XU 選取器
以下是已定義的周邊控制 XU 選取器。
控制選取器 | 值 |
---|---|
GOOGXU_FRAME_STRATEGY |
0x01 |
GOOGXU_REFRAME |
0x02 |
GOOGXU_OCCUPANCY_COUNTING_TOGGLE |
0x03 |
GOOGXU_OCCUPANCY_COUNTING_READ |
0x04 |
GOOGXU_STATUS_INFO |
0x05 |
GOOGXU_STATUS_RESET |
0x06 |
GOOGXU_PRESETS |
0x07 |
GOOGXU_PAN_TILT_ABSOLUTE |
0x08 |
GOOGXU_PAN_TILT_RELATIVE |
0x09 |
控制要求類型
控制要求類型定義於第 4 章:UVC 1.5 類別規格的類別特定要求。
作業 | UVC 控制 |
---|---|
GET |
GET_CUR ,GET_MIN ,GET_MAX ,GET_RES ,GET_LEN ,GET_INFO ,GET_DEF |
SET |
SET_CUR |
相機模式
相機模式可用於拍攝會議室中的個人,也是以下項目的 tuple
:
- 策略 (攝影機畫面)
- 偏差 (講者或房間)
- 動態饋給 (單一或多個串流)
每個維度可接受下列各節所述的值。
自動取景策略
自動取景偏誤
功能 | 說明 |
---|---|
高風險講者 (追蹤講者) | 攝影機會盡力將房間內正在說話的人納入畫面。 在這種情況下,攝影機應偏向講者。例如,執行長在董事會會議室中進行簡報。 |
協同合作 (會議室追蹤) |
攝影機會盡可能為會議室中的所有參與者取景,在這種情況下,攝影機應公平對待每位參與者。大部分會議都應採用這項策略。 |
自動取景動態饋給
功能 | 說明 |
---|---|
單一串流 | 相機會將單一影片串流傳送至主機裝置。 |
多串流 (處理中) |
相機會分割串流,並建立多個視訊串流傳送給主機。 注意:這項功能的完整規格和預期行為仍待審核,且不支援本文件的後續修訂版本。 |
自動取景模式點陣圖值
除了由空白位元組陣列表示的 None
預設狀態之外,位元組陣列中的每個位元都代表不同的相機模式,這些模式是自動對焦策略、自動對焦偏差和自動對焦動態饋給的特定組合。
位元索引 | CAZ | 分割畫面 | 動態 | - |
---|---|---|---|---|
喇叭 | D1 - |
- - |
D5 D6 |
單一串流 多串流 |
Room | D2 - |
D3 D4 |
D7 D8 |
單一串流 多串流 |
影格模式 | 影格模式值 (最低有效位元組) |
---|---|
None |
0x00 |
CAZ, Speaker, Single-Stream |
0x01 |
CAZ, Room, Single-Stream |
0x02 |
Split-Frame, Room, Single-Stream |
0x04 |
Split-Frame, Room, Multi-Stream |
0x08 |
Dynamic, Speaker, Single-Stream |
0x10 |
Dynamic, Speaker, Multi-Stream |
0x20 |
Dynamic, Room, Single-Stream |
0x40 |
Dynamic, Room, Multi-Stream |
0x80 |
控制組:GOOGXU_FRAME_STRATEGY
這個控制項可用來取得或設定相機的構圖模式,如自動構圖模式位圖值所列。每個模式都會以位元表示,位於各自的位圖中。指令 GET_RES
會傳回 8 個位元組長度的位元遮罩,其值為零 (0) 或一 (1),分別表示裝置是否支援該功能。舉例來說,如果相機支援 CAZ, Speaker, Single-Stream
、Split-Frame, Room, Single-Stream
和 Dynamic, Room, Multi-Stream
,但不支援其他模式,GET_RES
應傳回 0x000000000000000085 (即 0b10000101
後面接著七個零位元組)。
SET_CUR
指令可用來傳送點陣圖,告知相機要啟用哪個 SINGLE 相機模式。
控制選項 | 1 | |||
---|---|---|---|---|
作業 | GET / SET |
|||
wLength |
8 | |||
偏移 | 欄位 | 大小 | 值 | 說明 |
0 | bActiveMode |
8 | 點陣圖 | 設定或返回主動式攝影機模式 |
注意事項:
|
支援的要求類型的行為如下:
偏移 | 0 | 說明 |
---|---|---|
GET_CUR |
取得有效的構圖鏡頭模式 | |
GET_MIN |
取決於相機 | |
GET_MAX |
取決於相機 | |
GET_RES |
針對支援的相機模式傳回 8 位元組長位元遮罩 | |
GET_LEN |
0x0008 | 長度 |
GET_INFO |
0x0B | AutoUpdate / Write / Read |
GET_DEF |
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 |
預設值 |
SET_CUR |
設定攝影機的 Active Framing 模式 |
控制組:GOOGXU_REFRAME
這個控制項可用於觸發一次性構圖 (One-Shot Framing),也稱為 OTAZ。觸發 OTAZ 後,攝影機畫面會快速切換至房間的最佳視角。之後,用戶端就能再次控制 PTZ 值。如果不支援單鏡頭取景功能,攝影機就不應定義這個控制項。
控制選項 | 2 | |||
---|---|---|---|---|
作業 | SET |
|||
wLength |
1 | |||
偏移 | 欄位 | 大小 | 值 | 說明 |
0 | bReframe |
1 | 數字 | 0x01 執行重新設定要求 |
支援的要求類型的行為如下:
偏移 | 0 | 說明 |
---|---|---|
GET_MIN |
0x00 | |
GET_MAX |
0x01 | |
GET_RES |
0x01 | |
GET_LEN |
0x0001 | |
GET_INFO |
0x02 | 唯寫 |
GET_DEF |
0x00 | |
SET_CUR |
設定 One-Shot Framing 要求 |
人車數量計算
使用入座率計算 (OC) 功能可用於預估會議室中的參與者人數,但攝影機會裁剪掉這類畫面。
下表列出 OC 控制項的預期行為,以及這些控制項與攝影機影片串流和相機 LED 指示燈的互動情形。
人車數量計算功能 | 攝影機影片串流: | 攝影機 LED 指示燈應為 | GOOGXU_OCCUPANCY_COUNTING_TOGGLE GET_CUR 應為 |
應為 GOOGXU_OCCUPANCY_COUNTING_READ GET_CUR |
---|---|---|---|---|
已啟用 | 未串流播放且未設為靜音 | 開啟 | 0x01 |
攝影機完整視野範圍內的人數。 |
已啟用 | 串流 | 開啟 | 0x01 |
攝影機完整視野範圍內的人數。 |
已啟用 | 已略過 | 關閉 | 0x01 |
已關閉 |
已關閉 | 未播放音訊且未設為靜音 | 關閉 | 0x00 |
已關閉 |
已關閉 | 串流 | 開啟 | 0x00 |
已關閉 |
已關閉 | 已略過 | 關閉 | 0x00 |
已關閉 |
控制組:GOOGXU_OCCUPANCY_COUNTING_TOGGLE
這個控制項可用來啟用或停用計算房內人數的功能。將值設為零 (0) 會停用這項功能,設為一 (1) 則會啟用這項功能。如果不支援這項功能,攝影機就不應定義這個控制項。
控制項選取器 | 3 | |||
---|---|---|---|---|
作業 | GET / SET |
|||
wLength |
1 | |||
偏移 | 欄位 | 大小 | 值 | 說明 |
0 | bOccupancy |
1 | 布林值 | 設定入座率計算功能 0x00 關閉功能 0x01 開啟功能 |
支援的要求類型的行為如下:
偏移 | 0 | 說明 |
---|---|---|
GET_CUR |
傳回是否已啟用入座率計算功能 | |
GET_MIN |
0x00 | |
GET_MAX |
0x01 | |
GET_RES |
0x01 | |
GET_LEN |
0x0001 | |
GET_INFO |
0x0B | AutoUpdate / Write / Read |
GET_DEF |
0x00 | |
SET_CUR |
啟用或停用入座率計算功能 |
控制組:GOOGXU_OCCUPANCY_COUNTING_READ
啟用入座率計算功能後,這個控制項可用於讀取攝影機回報的會議室參與者人數。停用入座率計算功能時,攝影機應停用這個控制項。如果不支援座位占用率計算,攝影機不應定義這個控制項。
控制項選取器 | 4 | |||
---|---|---|---|---|
作業 | GET |
|||
wLength |
2 | |||
偏移 | 欄位 | 大小 | 值 | 說明 |
0 | bNumPeople |
2 | 數字 | 系統在檢視畫面中偵測到的乘客人數。(唯讀) |
支援的要求類型的行為如下:
偏移 | 0 | 說明 |
---|---|---|
GET_CUR |
傳回偵測到的人員數 | |
GET_MIN |
0x0000 | |
GET_MAX |
0x00FF | |
GET_RES |
0x0001 | |
GET_LEN |
0x0002 | |
GET_INFO |
0x09 | AutoUpdate / Read |
GET_DEF |
0x0000 |
裝置遙測資料與診斷
這些控制項旨在鼓勵使用 Meet 硬體進行更完善的偵錯作業,通常不會供使用者使用。
控制組:GOOGXU_STATUS_INFO
這個控制項可用於查詢主機攝影機的資訊,並與合作夥伴分享,以利偵錯。
控制選項 | 5 | |||
---|---|---|---|---|
作業 | GET |
|||
wLength |
8 | |||
偏移 | 欄位 | 大小 | 值 | 說明 |
0 | bNumCameras |
1 | 數字 | 主相機連接的額外衛星數量,可能會影響傳回主機的相機串流。 |
1 | bIsMoving |
1 | 點陣圖 | 攝影機閒置時為 0,PTZ 值變更時為非零值。供應商可以將不同的軸或馬達對應至不同的位元。 |
2 | Undef |
6 | Undef | 日後將擴大服務範圍。 |
支援的要求類型的行為如下:
偏移 | 0 | 1 | 2 | 說明 |
---|---|---|---|---|
GET_MIN |
0x00 | 0x00 | 0x00 0x00 0x00 0x00 0x00 0x00 |
|
GET_MAX |
0xFF | 0xFF | 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF |
|
GET_RES |
0x01 | 0x01 | 0x01 0x00 0x00 0x00 0x00 0x00 |
|
GET_LEN |
0x08 | 0x00 | 0x0008 | |
GET_INFO |
0x09 | AutoUpdate / Read | ||
GET_DEF |
0x00 | 0x00 | 0x00 0x00 0x00 0x00 0x00 0x00 |
控制組:GOOGXU_STATUS_RESET
這個控制項可用於向相機發出重設要求。設定值為 1 時,系統會要求攝影機重設。如果自上次重設後,攝影機未收到重新啟動要求,則會傳回零 (0);如果正在重設,則會傳回一 (1)。重設必須重新啟動相機。(如果是自供電裝置,強制 USB 斷開以模擬熱插拔功能就沒有用處,因此需要這項功能)。
控制選項 | 6 | |||
---|---|---|---|---|
作業 | GET / SET |
|||
wLength |
1 | |||
偏移 | 欄位 | 大小 | 值 | 說明 |
0 | bResetRequest |
1 | 布林值 | 向主機和已連結的攝影機發出重設要求。 如果自上次重設後發出重設要求,會傳回 0x01,否則傳回 0x00。 |
支援的要求類型行為如下:
偏移 | 0 | 說明 |
---|---|---|
GET_MIN |
0x00 | |
GET_MAX |
0x01 | |
GET_RES |
0x01 | |
GET_LEN |
0x0001 | |
GET_INFO |
0x03 | 寫入 / 讀取 |
GET_DEF |
0x00 |
PTZ 預設
用於設定並將攝影機的視野還原到預設位置。
控制組:GOOGXU_PRESETS
這個控制項可將攝影機的平移、傾斜和變焦 (PTZ) 值設為預設設定。
Preset Action
是用來指出指令的預期動作。設定 1 的值將用來將目前的平移、傾斜和縮放值對應至系統提供的預設索引。設定二 (2) 的值應將相機的平移、傾斜和縮放轉換成先前對應的值,或是預設的工廠座標 (如果不先前對應)。將值設為 3 會將索引重設為原廠預設座標。
Preset Index
用於指定對應至索引的 PTZ 座標。零 (0) 的 Preset index
會對應至初始座標,並應設為攝影機喚醒時的預設位置,前提是 GOOGXU_FRAME_STRATEGY
已設為 NONE
。
控制選項 | 7 | |||
---|---|---|---|---|
作業 | SET |
|||
wLength |
2 | |||
偏移 | 欄位 | 大小 | 值 | 說明 |
0 | bPresetAction |
1 | 數字 | 0x01:儲存預設設定 0x02:還原預設設定 0x03:將預設設定重設為預設值。(預設應為有效的預設座標)。 |
1 | bPresetIndex |
1 | 數字 | 使用中的預設索引。0~N-1 將 0 視為預設相機起始位置,N-1 則是廠商定義的預設選項數量常數。 |
支援的要求類型的行為如下:
偏移 | 0 | 1 | 說明 |
---|---|---|---|
GET_MIN |
0x00 | 0x00 | |
GET_MAX |
0x03 | N-1 | 支援 N 個預設值 |
GET_RES |
0x01 | 0x01 | |
GET_LEN |
0x02 | 0x00 | 0x0002 |
GET_INFO |
0x02 | 唯寫 | |
GET_DEF |
0x00 | 0x00 |
平移和傾斜輔助對應
部分攝影機具有特殊元件,例如機械式攝影機的馬達或數位 PTZ 功能。請針對這些功能使用標準的 V4L2 控制項,以便平移、傾斜和縮放。
控制項:GOOGXU_PAN_TILT_ABSOLUTE
(已淘汰)
平移和傾斜輔助對應控制項的定義,請參閱「第 4 章:類別特定要求」一節的「4.2.2.1.14 平移/傾斜 (絕對) 控制」UVC 1.5 類別規格。
控制項:GOOGXU_PAN_TILT_RELATIVE
(已淘汰)
平移和傾斜輔助對應控制項定義於第 4 章:類別專屬要求第 4.2.2.1.15 節 (相對) 控制的 UVC 1.5 類別規格。
相關主題
- Linux USB 視訊類別 (UVC) 驅動程式
- Video Class v1.5 文件集
- USB 2.0 規格
- Google Meet 設備說明中心
- Google Workspace 管理員說明中心的 Google Meet 硬體專區
版本資訊
以下版本資訊列載這份文件各修訂版的新功能和改善項目。
2024 年 5 月 21 日
- 移除測試指令碼,改用新的 CfM 測試設施,該工具會執行
SET
,並支援驗證 Series One 相機。 - 清楚闡釋
GOOGXU_STATUS_INFO
中的欄位。 - 說明
GOOGXU_STATUS_RESET
的行為。 - 已淘汰
GOOGXU_PAN_TILT_ABSOLUTE
和GOOGXU_PAN_TILT_RELATIVE
。
2023 年 11 月 15 日
更新測試指令碼,以便檢查及解讀有效的構圖模式。清楚說明位元組表示法。
2023 年 7 月 21 日
新增測試指令碼,方便合作夥伴驗證導入作業是否符合此規格。
2023 年 5 月 25 日
已修正GOOGXU_PRESETS
關於預設值數量的附註。應該是 N,而不是 N-1。
2023 年 4 月 17 日
第 1 版。