이 문서에서는 Google Meet 회의 시스템에서 스마트 카메라 기능을 사용 설정하는 데 사용하는 지원되는 USB 동영상 클래스 확장 단위 (XU) API를 간략히 설명합니다. 이 사양을 만드는 목적은 이러한 기능을 사용 설정하는 방식에 영향을 주고 파트너가 더 나은 비동기 확장성과 테스트를 수행할 수 있도록 하는 것입니다.
이 문서의 최신 변경사항에 관한 자세한 내용은 출시 노트를 참고하세요.
테스트 시설
파트너가 이 사양을 준수하는지 확인할 수 있도록 개발자 모드로 설정된 회의용 Chromebox 기기에 테스트 시설을 제공합니다.
파일 시스템에 쓰기를 사용 설정합니다.
/etc/chrome_dev.conf
에 다음 줄을 추가합니다.
--enable-logging
--log-level=0
기기를 다시 시작하고 카메라와 USB 키보드를 연결한 다음 Ctrl-Alt-X
를 누르면 활성 카메라의 사양 준수가 실행되고 /home/chronos/user/log/chrome
에 로깅됩니다.
Little-endian 규칙
USB는 리틀 엔디언 표준입니다. 이 문서의 내용:
- 멀티바이트 숫자는 Big Endian으로 표시되며 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 |
요청 유형 제어
제어 요청 유형은 UVC 1.5 클래스 사양의 4장: 클래스별 요청에 정의되어 있습니다.
작업 | UVC 제어 |
---|---|
GET |
GET_CUR , GET_MIN , GET_MAX , GET_RES , GET_LEN , GET_INFO , GET_DEF |
SET |
SET_CUR |
카메라 모드
카메라 모드는 회의실에 있는 개인을 프레이밍하는 데 사용되며 다음 항목의 tuple
입니다.
- 전략 (카메라 뷰)
- 편향 (스피커 또는 방)
- 피드 (단일 또는 여러 스트림)
각 측정기준은 다음 섹션에 설명된 값을 사용할 수 있습니다.
자동 프레이밍 전략
기능 | 설명 |
---|---|
없음 | 카메라에서 모든 지능형 프레이밍 기능을 사용 중지하고 클라이언트가 PTZ 값을 자유롭게 제어할 수 있도록 허용합니다. 참고: 이 프레이밍 전략으로 설정하면 카메라는 현재 화면 이동, 기울이기, 확대/축소 위치에 유지됩니다. |
연속 프레이밍 (CAZ) | 프레이밍 편향을 기반으로 카메라는 방에 있는 사용자를 지속적으로 추적합니다. 참고: 이 모드에서는 PTZ가 사용 중지됩니다. |
프레임 분할 | 카메라는 필요에 따라 동영상 뷰를 만듭니다. 자동 프레이밍 피드 옵션에 따라 단일 스트림의 타일로 구성하거나 뷰별로 별도의 동영상 스트림을 만듭니다. 참고: 이 모드에서는 PTZ가 사용 중지됩니다. |
동적 뷰 | 하나 이상의 카메라가 객실을 가장 잘 볼 수 있도록 합니다. 여러 피드를 하나의 피드로 구성할지 또는 현재 방의 '재미있는' 뷰를 제공할지 여부를 결정할 수 있습니다. 이 보기의 목적은 통화에 참여하는 방 안의 참가자를 가장 공정하게 보여주는 것입니다. 참고:
|
자동 프레이밍 편향
기능 | 설명 |
---|---|
중대한 사안을 다루는 발표자 (발표자 추적) | 카메라는 회의실에서 말하는 사람을 가장 잘 담으려고 합니다. 이 시나리오에서는 카메라가 발표자를 향해야 합니다. 예를 들어 회의실에서 CEO가 프레젠테이션하는 장면을 촬영할 수 있습니다. |
공동작업 (회의실 추적) |
카메라는 회의실에 있는 모든 참여자의 프레임을 최적화하려고 시도합니다. 이 시나리오에서 카메라는 모든 참여자를 동등하게 대해야 합니다. 대부분의 회의에 이 전략을 사용해야 합니다. |
자동 프레이밍 피드
기능 | 설명 |
---|---|
단일 스트림 | 카메라는 호스트 기기에 단일 동영상 스트림을 전송합니다. |
다중 스트림 (진행 중) |
카메라는 스트림을 분할하고 여러 동영상 스트림을 만들어 호스트로 전송합니다. 참고: 이 기능의 전체 사양 및 예상 동작은 검토 대기 중이며 이 문서의 이후 버전이 수정될 때까지 지원되지 않습니다. |
자동 프레이밍 모드 비트맵 값
빈 바이트 배열로 표시되는 기본 상태 None
를 제외하고 바이트 배열의 각 비트는 자동 프레이밍 전략, 자동 프레이밍 편향, 자동 프레이밍 피드의 특정 조합인 서로 다른 카메라 모드를 나타냅니다.
비트 색인 | CAZ | 분할 프레임 | 동적 | - |
---|---|---|---|---|
스피커 | D1 - |
- - |
D5 D6 |
단일 스트림 멀티 스트림 |
Room | D2 - |
3일 일 4일 |
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
명령어는 값이 0 또는 1인 8바이트 길이의 비트 마스크를 반환하여 기기에서 기능이 지원되는지 여부를 각각 나타냅니다. 예를 들어 카메라가 CAZ, Speaker, Single-Stream
, Split-Frame, Room, Single-Stream
, Dynamic, Room, Multi-Stream
를 지원하지만 다른 모드는 지원하지 않는 경우 GET_RES
는 0x000000000000000085 (0b10000101
뒤에 0 바이트 7개)를 반환해야 합니다.
SET_CUR
명령어는 비트맵을 전송하여 카메라에 사용 설정할 단일 카메라 모드를 알려주는 데 사용됩니다.
컨트롤 선택기 | 1 | |||
---|---|---|---|---|
작업 | GET / SET |
|||
wLength |
8 | |||
오프셋 | 필드 | 크기 | 값 | 설명 |
0 | bActiveMode |
8 | 비트맵 | 활성 카메라 모드 설정 또는 반환 |
참고:
|
지원되는 요청 유형의 동작은 다음과 같습니다.
오프셋 | 0 | 설명 |
---|---|---|
GET_CUR |
능동 프레이밍 카메라 모드 가져오기 | |
GET_MIN |
카메라에 따라 다름 | |
GET_MAX |
카메라에 따라 다름 | |
GET_RES |
지원되는 카메라 모드의 8바이트 길이 비트 마스크를 반환합니다. | |
GET_LEN |
0x0008 | 길이 |
GET_INFO |
0x0B | 자동 업데이트 / 쓰기 / 읽기 |
GET_DEF |
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 |
기본값 |
SET_CUR |
능동 프레이밍 카메라 모드 설정 |
컨트롤: GOOGXU_REFRAME
이 컨트롤은 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 |
원샷 프레이밍 요청 설정 |
인원 수 집계
참석자 수 집계 (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 | 자동 업데이트 / 쓰기 / 읽기 |
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 값이 변경될 때는 0이 아닙니다. 공급업체는 다양한 축 또는 모터를 다양한 비트에 매핑할 수 있습니다. |
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 좌표를 지정하는 데 사용됩니다.
Preset index
0은 홈 좌표에 매핑되며 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 클래스 사양의 PanTilt (절대) 제어에 정의되어 있습니다.
제어: GOOGXU_PAN_TILT_RELATIVE
(지원 중단됨)
팬 및 기울기 보조 매핑 컨트롤은 4장: 클래스별 요청 섹션 4.2.2.1.15 UVC 1.5 클래스 사양의 PanTilt (상대) 제어에 정의되어 있습니다.
관련 주제
- Linux USB 비디오 클래스 (UVC) 드라이버
- 동영상 클래스 v1.5 문서 세트
- USB 2.0 사양
- Google Meet 하드웨어 고객센터
- Google Workspace 관리자 고객센터의 Google Meet 하드웨어 섹션
출시 노트
이 출시 노트에는 이 문서 각 버전의 개선사항 및 새로운 기능이 반영되어 있습니다.
2024년 5월 21일
SET
를 실행하고 Series One 카메라의 유효성 검사도 지원하는 새로운 CfM 테스트 시설을 위해 테스트 스크립트를 삭제했습니다.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-1이 아닌 N이어야 합니다.
2023년 4월 17일
첫 출시입니다.