Bu belgede, Google Meet konferans sistemleri tarafından akıllı kamera özelliklerini etkinleştirmek için kullanılan desteklenen USB Video Sınıfı Uzatma Birimi (XU) API'leri açıklanmaktadır. Bu spesifikasyonun oluşturulmasının amacı, bu özellikleri etkinleştirmek için uygulamaları etkilemek ve iş ortaklarımız için daha iyi eşzamansız ölçeklenebilirlik ve test olanağı sağlamaktır.
Bu dokümandaki en son değişikliklerle ilgili ayrıntılar için Sürüm notları bölümüne gidin.
Test merkezi
İş ortaklarının bu spesifikasyona uygunluğu doğrulamasına yardımcı olmak için geliştirici modunda ayarlanmış Chromebox for Meetings cihazlarında bir test olanağı sunuyoruz.
Dosya sistemine yazma özelliğini etkinleştirin.
/etc/chrome_dev.conf
dosyasına aşağıdaki satırları ekleyin:
--enable-logging
--log-level=0
Cihazı yeniden başlatın, kamerayı ve bir USB klavyeyi bağlayın, Ctrl-Alt-X
tuşuna basın. Etkin kameranın spesifikasyonlara uygunluğu test edilir ve /home/chronos/user/log/chrome
dosyasına kaydedilir.
Küçük Endiyans kongresi
USB, küçük endian standardıdır. Bu dokümanda:
- Çok baytlı sayılar büyük endian olarak görünür (ve küçük endian olarak iletilir).
- Bayt dizileri küçük endian bellek düzenindedir.
Örneğin, 0x12345678
ile [0x78, 0x56, 0x34, 0x12]
aynıdır.
Uzantı birimi GUID'si
Bu Meet XU kontrol spesifikasyonunu destekleyen uzantı birimleri bu GUID'yi kullanmalıdır.
Uzatma birimi | GUID |
---|---|
Çevre Birimi Kontrol XU | {74D7E924-49C9-4A45-98A3-8A9F60061E83} |
Çevre birimi kontrolü XU seçicileri
Bunlar, tanımlanmış çevre birimi kontrolü XU seçicileridir.
Kontrol seçicileri | Değer |
---|---|
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 |
Kontrol isteği türü
Kontrol isteği türleri, UVC 1.5 Sınıf Spesifikasyonu Bölüm 4: Sınıfa Özel İstekler bölümünde tanımlanmıştır.
İşlem | UVC kontrolü |
---|---|
GET |
GET_CUR , GET_MIN , GET_MAX , GET_RES , GET_LEN , GET_INFO , GET_DEF |
SET |
SET_CUR |
Kamera modları
Kamera modları, toplantı odasındaki kişileri kadraja almak için kullanılır ve tuple
aşağıdakilerden biri olabilir:
- Strateji (kamera görünümü)
- Önyargı (hoparlör veya oda)
- Feed'ler (tek veya birden fazla akış)
Her boyut, aşağıdaki bölümlerde açıklanan değerleri alabilir.
Otomatik çerçeveleme stratejisi
Özellik | Açıklama |
---|---|
Yok | Kamera, tüm akıllı kadraj özelliklerini devre dışı bırakır ve istemcinin PTZ değerlerini özgürce kontrol etmesine olanak tanır. Not: Bu çerçeveleme stratejisine ayarlandığında kamera, mevcut kaydırma, yatırma ve yakınlaştırma konumunda kalır. |
Kesintisiz çerçeveleme (CAZ) | Kamera, çerçeveleme önyargısıyla odadaki kişileri sürekli olarak izler. Not: PTZ bu modda devre dışıdır. |
Çerçeveleri böl | Kamera, gerektiği kadar video görüntüleme oluşturur. Otomatik kadrajlama feed'leri seçeneğine bağlı olarak, feed'leri tek bir akışta karolar halinde oluşturur veya her görünüm için ayrı video akışları oluşturur. Not: PTZ bu modda devre dışıdır. |
Dinamik Görünüm | Bir veya daha fazla kamera, odanın en iyi görüntüsünü sunmaya çalışır. Birden fazla feed'in tek bir feed halinde birleştirilip birleştirilmeyeceğine veya mevcut odanın "ilginç" bir görünümünü sağlayıp sağlamayacağına karar verebilir. Bu görünümün amacı, görüşmedeki odadaki katılımcıların en eşitlik görünümünü sunmaktır. Notlar:
|
Otomatik çerçeveleme önyargısı
Özellik | Açıklama |
---|---|
Yüksek riskli sunucu (Konuşmacı takibi) | Kamera, odada aktif olarak konuşan kişiyi en iyi şekilde kadraja almaya çalışır. Bu senaryoda kamera, sunucunun bulunduğu tarafa doğru eğilmelidir. Örneğin, yönetim kurulu odasında sunum yapan CEO. |
Ortak çalışma (Oda İzleme) |
Kamera, odadaki tüm katılımcıları en iyi şekilde çerçevelemeye çalışır. Bu senaryoda kamera, her katılımcıyı eşit şekilde göstermelidir. Çoğu toplantıda bu strateji kullanılır. |
Otomatik kadraja alma feed'leri
Özellik | Açıklama |
---|---|
Tek Akış | Kamera, ana cihaza tek bir video akışı gönderir. |
Çoklu Yayın (Devam Eden Çalışma) |
Kamera, akışı böler ve ana makineye gönderilmek üzere birden fazla video akışı oluşturur. Not: Bu özelliğin tam spesifikasyonu ve beklenen davranışı incelenmeyi beklemektedir ve bu dokümanın sonraki düzeltmelerine kadar desteklenmemektedir. |
Otomatik çerçeveleme modu bit eşlem değerleri
Boş bir bayt dizisiyle temsil edilen None
varsayılan durumu hariç olmak üzere, bayt dizisindeki her bit farklı bir kamera modunu temsil eder. Bu mod, otomatik kadraj stratejisi, otomatik kadraj yanlılığı ve otomatik kadraj feed'lerinin belirli bir kombinasyonudur.
Bit dizini | CAZ | Bölünmüş çerçeve | Dinamik | - |
---|---|---|---|---|
Hoparlör | D1 - |
- - |
D5 D6 |
Tek Akış Çoklu Akış |
Oda | D2 - |
D3 D4 |
D7 D8 |
Tek Akış Çoklu Akış |
Çerçeve modları | Çerçeve modu değeri (en az önemli bayt) |
---|---|
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 |
Kontrol: GOOGXU_FRAME_STRATEGY
Bu denetim, Otomatik çerçeveleme modu bitmap değerleri bölümünde listelenen kamera çerçeveleme modlarını almak veya ayarlamak için kullanılır. Her mod, ilgili bit eşleminde bir bit olarak temsil edilir. GET_RES
komutu, özelliğin cihaz tarafından desteklenip desteklenmediğini sırasıyla sıfır (0) veya bir (1) değerine sahip 8 bayt uzunluğunda bir bit maskesi döndürür. Örneğin, bir kamera CAZ, Speaker, Single-Stream
, Split-Frame, Room, Single-Stream
ve Dynamic, Room, Multi-Stream
modlarını destekliyorsa ancak başka modları desteklemiyorsa GET_RES
, 0x000000000000000085 değerini (yani 0b10000101
ve ardından yedi sıfır bayt) döndürmelidir.
SET_CUR
komutu, kameraya hangi TEK kamera modunun etkinleştirileceğini bildirmek için bitmap göndermek amacıyla kullanılır.
Kontrol seçici | 1 | |||
---|---|---|---|---|
İşlem | GET / SET |
|||
wLength |
8 | |||
Göreli konum | Alan | Boyut | Değer | Açıklama |
0 | bActiveMode |
8 | Bit eşlem | Etkin Kamera Modunu ayarlama veya geri döndürme |
Notlar:
|
Desteklenen istek türlerinin davranışı aşağıdaki gibidir:
Göreli konum | 0 | Açıklama |
---|---|---|
GET_CUR |
Etkin çerçeveleme kamera modunu alma | |
GET_MIN |
Kameraya bağlı | |
GET_MAX |
Kameraya bağlı | |
GET_RES |
Desteklenen kamera modlarının 8 bayt uzunluğunda bir bit maskesini döndürür | |
GET_LEN |
0x0008 | Uzunluk |
GET_INFO |
0x0B | Otomatik Güncelleme / Yazma / Okuma |
GET_DEF |
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 |
Varsayılan değer |
SET_CUR |
Aktif Kadrajlama Kamera modunu ayarlama |
Kontrol: GOOGXU_REFRAME
Bu kontrol, OTAZ olarak da bilinen Tek Çekim Kadrajını tetiklemek için kullanılır. OTAZ tetiklendiğinde, kamera görünümü odanın en iyi görünümüne uyum sağlar. Daha sonra, müşteri PTZ değerlerini kontrol etme becerisini yeniden kazanır. Tek seferlik çerçeveleme desteklenmiyorsa kamera bu kontrolü tanımlamamalıdır.
Kontrol seçici | 2 | |||
---|---|---|---|---|
İşlem | SET |
|||
wLength |
1 | |||
Göreli konum | Alan | Boyut | Değer | Açıklama |
0 | bReframe |
1 | Sayı | 0x01 Yeniden çerçeveleme isteğini yürüt |
Desteklenen istek türlerinin davranışı aşağıdaki gibidir:
Göreli konum | 0 | Açıklama |
---|---|---|
GET_MIN |
0x00 | |
GET_MAX |
0x01 | |
GET_RES |
0x01 | |
GET_LEN |
0x0001 | |
GET_INFO |
0x02 | Yalnızca Yazma |
GET_DEF |
0x00 | |
SET_CUR |
Tek seferlik kadraj için istek ayarlama |
Doluluk sayımı
Doluluk sayımı (DS), kameranın kırpılmış görünümüne rağmen bir toplantı odasındaki katılımcı sayısını tahmin etmek için kullanılan bir özelliktir.
Bu tabloda, OC kontrollerinin beklenen davranışı ve kamera video akışı ile kamera LED göstergesiyle olan etkileşimleri gösterilmektedir.
Doluluk durumu sayımı şu durumlarda: | ve kamera video akışı: | Kamera LED göstergesi | GOOGXU_OCCUPANCY_COUNTING_TOGGLE GET_CUR olmalı |
GOOGXU_OCCUPANCY_COUNTING_READ GET_CUR olmalıdır |
---|---|---|---|---|
Açık | Akış yapılmıyor ve ses kapatılmadı | Açık | 0x01 |
Kameranın tam görüş alanındaki kişilerin sayısı. |
Açık | Canlı Yayın | Açık | 0x01 |
Kameranın tam görüş alanındaki kişilerin sayısı. |
Açık | Sesin kapatıldığını | Kapalı | 0x01 |
Kapalı |
Kapalı | Akış yapılmıyor ve ses kapatılmadı | Kapalı | 0x00 |
Kapalı |
Kapalı | Canlı Yayın | Açık | 0x00 |
Kapalı |
Kapalı | Sesin kapatıldığını | Kapalı | 0x00 |
Kapalı |
Kontrol: GOOGXU_OCCUPANCY_COUNTING_TOGGLE
Bu denetim, bir odadaki kullanıcı sayısını sayma özelliğini etkinleştirmek veya devre dışı bırakmak için kullanılır. Sıfır (0) değerini ayarladığınızda bu özellik devre dışı bırakılır, bir (1) değerini ayarladığınızda ise bu özellik etkinleştirilir. Bu özellik desteklenmiyorsa kameranın bu kontrolü tanımlamaması gerekir.
Kontrol seçici | 3 | |||
---|---|---|---|---|
İşlem | GET / SET |
|||
wLength |
1 | |||
Göreli konum | Alan | Boyut | Değer | Açıklama |
0 | bOccupancy |
1 | Boole | Doluluk sayma işlevini ayarlayın 0x00 İşlevi devre dışı bırak 0x01 İşlevi etkinleştir |
Desteklenen istek türlerinin davranışı aşağıdaki gibidir:
Göreli konum | 0 | Açıklama |
---|---|---|
GET_CUR |
Doluluk sayımı açıksa döndürme | |
GET_MIN |
0x00 | |
GET_MAX |
0x01 | |
GET_RES |
0x01 | |
GET_LEN |
0x0.001 | |
GET_INFO |
0x0B | Otomatik Güncelleme / Yazma / Okuma |
GET_DEF |
0x00 | |
SET_CUR |
Doluluk durumu sayma özelliğini etkinleştirme veya devre dışı bırakma |
Kontrol: GOOGXU_OCCUPANCY_COUNTING_READ
Bu denetim, doluluk sayımı etkinleştirildiğinde kamera tarafından bildirilen bir odadaki katılımcı sayısını okumak için kullanılır. Doluluk sayımı devre dışı bırakıldığında kamera bu kontrolü devre dışı bırakır. Doluluk sayımı desteklenmiyorsa kamera bu kontrolü tanımlamamalıdır.
Kontrol seçici | 4 | |||
---|---|---|---|---|
İşlem | GET |
|||
wLength |
2 | |||
Göreli konum | Alan | Boyut | Değer | Açıklama |
0 | bNumPeople |
2 | Sayı | Görüntüdeki algılanan kişi sayısı. (Salt Okunur) |
Desteklenen istek türlerinin davranışı aşağıdaki gibidir:
Göreli konum | 0 | Açıklama |
---|---|---|
GET_CUR |
Tespit edilen kullanıcıların sayısını döndürme | |
GET_MIN |
0x0000 | |
GET_MAX |
0x00FF | |
GET_RES |
0x0.001 | |
GET_LEN |
0x0002 | |
GET_INFO |
0x09 | Otomatik güncelleme / okuma |
GET_DEF |
0x0000 |
Cihaz telemetrisi ve teşhisi
Bu kontroller, Meet donanımıyla daha iyi hata ayıklama uygulamalarına teşvik etmek için tasarlanmıştır ve genellikle kullanıcılara yönelik değildir.
Kontrol: GOOGXU_STATUS_INFO
Bu kontrol, ana kameradan alınan bilgileri sorgulayarak hata ayıklama için iş ortaklarıyla paylaşmak amacıyla kullanılır.
Kontrol seçici | 5 | |||
---|---|---|---|---|
İşlem | GET |
|||
wLength |
8 | |||
Göreli konum | Alan | Boyut | Değer | Açıklama |
0 | bNumCameras |
1 | Sayı | Ana kameraya bağlı ve ana makineye döndürülen kamera akışını etkileyebilecek ek uydu sayısı. |
1 | bIsMoving |
1 | Bit eşlem | Kamera boştayken 0, PTZ değerleri değişirken sıfır olmayan bir değerdir. Tedarikçi firmalar, farklı eksenleri veya motorları farklı bitlerle eşleyebilir. |
2 | Undef |
6 | Undef | İleride uzatılacak. |
Desteklenen istek türlerinin davranışı aşağıdaki gibidir:
Göreli konum | 0 | 1 | 2 | Açıklama |
---|---|---|---|---|
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 | Otomatik güncelleme / okuma | ||
GET_DEF |
0x00 | 0x00 | 0x00 0x00 0x00 0x00 0x00 0x00 |
Kontrol: GOOGXU_STATUS_RESET
Bu kontrol, kameraya sıfırlama isteği göndermek için kullanılır. Bir (1) değerini ayarlamak, kameranın sıfırlanmasını ister. Son sıfırlamadan bu yana kamerayı yeniden başlatma isteği gönderilmemişse kamera sıfır (0) değerini, sıfırlama işlemi devam ediyorsa bir (1) değerini döndürür. Sıfırlama işlemi, kameranın yeniden başlatılmasını tetiklemelidir. (Bu, hotspot emüle etmek için USB bağlantısını kesmenin işe yaramadığı kendi kendine çalışan cihazlar için gereklidir.)
Kontrol seçici | 6 | |||
---|---|---|---|---|
İşlem | GET / SET |
|||
wLength |
1 | |||
Göreli konum | Alan | Boyut | Değer | Açıklama |
0 | bResetRequest |
1 | Boole | Ana makineye ve bağlı kameralara sıfırlama isteği gönderin. Son sıfırlamadan sonra sıfırlama isteği gönderildiyse 0x01, aksi takdirde 0x00 değerini döndürür. |
Desteklenen istek türlerinin davranışı aşağıdaki gibidir:
Göreli konum | 0 | Açıklama |
---|---|---|
GET_MIN |
0x00 | |
GET_MAX |
0x01 | |
GET_RES |
0x01 | |
GET_LEN |
0x0001 | |
GET_INFO |
0x03 | Yazma / Okuma |
GET_DEF |
0x00 |
PTZ hazır ayarları
Kameranın görüş alanını önceden ayarlanmış bir konuma yapılandırmak ve geri yüklemek için kullanılır.
Kontrol: GOOGXU_PRESETS
Bu kontrol, kameranın kaydırma, eğme ve yakınlaştırma (PTZ) değerlerini önceden ayarlanmış bir yapılandırmaya ayarlamak için kullanılır.
Preset Action
, komutun amaçlanan işlemini belirtmek için kullanılır. Mevcut kaydırma, eğme ve yakınlaştırma değerlerini sağlanan önceden ayarlanmış bir dizinle eşlemek için bir (1) değerinin ayarlanması kullanılır. İki (2) değerini ayarlamak, kameranın yatay kaydırma, dikey kaydırma ve yakınlaştırma ayarlarını, sağlanan dizin için önceden eşlenmiş değerlere veya varsayılan fabrika koordinatlarına (daha önce eşlenmemişse) geçirir. Üç (3) değerini ayarlamak, dizini fabrika varsayılan koordinatlarına sıfırlar.
Preset Index
, dizinle eşlenen PTZ koordinatlarını belirtmek için kullanılır.
Sıfırın (0) Preset index
değeri ev koordinatlarıyla eşlenir ve GOOGXU_FRAME_STRATEGY
NONE
olarak ayarlandığında kameranın uyanık kalma durumunda varsayılan konumu olmalıdır.
Kontrol seçici | 7 | |||
---|---|---|---|---|
İşlem | SET |
|||
wLength |
2 | |||
Göreli konum | Alan | Boyut | Değer | Açıklama |
0 | bPresetAction |
1 | Sayı | 0x01: Hazır ayarı kaydet 0x02: Hazır ayarı geri yükle 0x03: Hazır ayarı varsayılan ayarlara sıfırla. (Varsayılan değer, geçerli bir hazır koordinat olmalıdır.) |
1 | bPresetIndex |
1 | Sayı | Etkin Hazır Ayar dizini. 0~N-1 Burada 0, varsayılan kamera başlangıç konumu olarak kabul edilir ve N-1, hazır ayar sayısı için tedarikçi firma tarafından tanımlanan bir sabittir. |
Desteklenen istek türlerinin davranışı aşağıdaki gibidir:
Göreli konum | 0 | 1 | Açıklama |
---|---|---|---|
GET_MIN |
0x00 | 0x00 | |
GET_MAX |
0x03 | N-1 | N maksimum hazır ayar desteklenir. |
GET_RES |
0x01 | 0x01 | |
GET_LEN |
0x02 | 0x00 | 0x0002 |
GET_INFO |
0x02 | Yalnızca yazma | |
GET_DEF |
0x00 | 0x00 |
Yardımcı haritalama kaydırma ve yatırma
Bazı kameralarda mekanik kameralar için motorlar veya dijital PTZ özellikleri gibi özel bileşenler bulunur. Bunlar için kaydırma, yatırma ve yakınlaştırmaya yönelik standart V4L2 kontrollerini kullanın.
Kontrol: GOOGXU_PAN_TILT_ABSOLUTE
(desteği sonlandırıldı)
Kaydırma ve yatırma yardımcı haritalama kontrolleri, UVC 1.5 Sınıf Spesifikasyonu'nun 4. Bölümü: Sınıfa Özel İstekler Bölüm 4.2.2.1.14 Kaydırma (Mutlak) Kontrolü'nde tanımlanmıştır.
Kontrol: GOOGXU_PAN_TILT_RELATIVE
(desteği sonlandırıldı)
Yatay kaydırma ve dikey kaydırma yardımcı eşleme kontrolleri, UVC 1.5 Sınıf Spesifikasyonu Bölüm 4: Sınıfa Özel İstekler Bölüm 4.2.2.1.15 Yatay Kaydırma ve Dikey Kaydırma (İlişkili) Kontrolü'nde tanımlanmıştır.
İlgili konular
- Linux USB Video Sınıfı (UVC) sürücüsü
- Video Sınıfı v1.5 belge kümesi
- USB 2.0 spesifikasyonu
- Google Meet Donanım Yardım Merkezi
- Google Workspace Yönetici Yardım Merkezi'nin Google Meet Donanım bölümü
Sürüm notları
Bu sürüm notları, bu dokümanın her düzeltmesinde yapılan iyileştirmeleri ve yeni özellikleri açıklamaktadır.
21 Mayıs 2024
- Test komut dosyası,
SET
'yi çalıştıran ve ayrıca Series One kameraların doğrulamasını destekleyen yeni CfM test tesisi için kaldırıldı. GOOGXU_STATUS_INFO
alanındaki alanlar netleştirildi.GOOGXU_STATUS_RESET
ile ilgili davranış netleştirildi.GOOGXU_PAN_TILT_ABSOLUTE
veGOOGXU_PAN_TILT_RELATIVE
desteği sonlandırıldı.
15 Kasım 2023
Geçerli çerçeveleme modlarını kontrol etmek ve yorumlamak için test komut dosyası güncellendi. Açıklanmış bayt temsilleri.
21 Temmuz 2023
İş ortaklarının, uygulamaları bu spesifikasyona uygunluk açısından doğrulaması için test komut dosyası eklendi.
25 Mayıs 2023
Hazır ayarların sayısıyla ilgili GOOGXU_PRESETS
not düzeltildi. N-1 değil, N olmalıdır.
17 Nisan 2023
İlk sürüm.