poniedziałek, 23 maja 2016

Sprzętowa kompresja w kamerze wideo

Nie wiem, czy wiecie, że specyfikacja UVC (USB Video Class) od wersji 1.1 przewiduje sprzętową kompresję obrazu i dźwięku w kamerce.
Dzisiaj użyłem narzędzia WireShark + USBPcaps do przetestowania ruchu na magistrali USB podczas wideo-połączenia Skype na dwóch kamerkach wideo:
Połączenia odbyły się po LAN do telewizora LG z kamerką 1280x720 z wyłączonym nagrywaniem audio po obu stronach.

Najpierw C210:

Kamerka nagrywała w 480p30, ale kodek docelowo wysyłał tylko 14 fps. A oto ruch na magistrali USB:
Widać, że nie ma kompresji sprzętowej i to, co przychodzi z kamerki jest kompresowane do H264. W miarę zmniejszania FPS widać spadek użycia pasma USB od 16 do 9 mega-bajtów na sekundę.
Bez kompresji spodziewałem się maksymalnie ruchu 640 x 480 x 30fps x 24bit = 27.6 MBps, więc Skype i tak dobrze kombinował z ograniczeniem FPS (przy 14fps jest 13MBps).

Teraz C930e:

Tutaj po chwili mamy 720p30 i Skype używa kompresji sprzętowej. Praktycznie rzecz biorąc przekłada strumień z USB wprost w tunel. Zobaczmy, co się dzieje na kablu:

Początkowo miałem spore użycie ze względu na 1080p30 - 19 MB/s, ale już po chwili Skype zszedł na 720p30, co obniżyło ruch na USB do 4MB/s.
Bez kompresji spodziewałbym się maksymalnie ruchu 1280 x 720 x 30fps x 24bit = 83 MBps, tymczasem otrzymałem ślicznie skompresowane 4MBps.

Ku memu zaskoczeniu użycie CPU było bardzo podobne. Niestety nie znalazłem sposobu na test w tj samej rozdzielczości.

Brak komentarzy:

Prześlij komentarz