Snímání, přenos a zobrazování stereoskopického videa ve formátu DV Miloš Liška Fakulta informatiky, Masarykova univerzita v Brně, Botanická 68a, 602 00 Brno, Czech Republic Email: xliska@fi.muni.cz Abstrakt. Současné širokopásmové sítě jsou ideálním médiem pro vysokorychlostní přenosy a umožňují celou řadu nových aplikací jako jsou přenosy videa s vysokým rozlišením. Příspěvek popisuje řešení snímání, přenosu a zobrazování stereoskopického videa ve formátu Digital Video (DV), tj. popisuje systém pro snímání a zobrazování stereoskopického videa a implementaci nástrojů pro přenos DV videa. Výhodou formátu Digital video je vysoká kvalita a nízká degradace obrazu vlivem komprese. DV používá intra-frame kompresi s konstantním počtem bitů za sekundu a výsledný datový tok má 25 Mbps. Systém vytvořený pro přenos DV videa vychází ze standardů RFC3189 a RFC3190 a byl inspirován projektem DVTS, se kterým je kompatibilní. Přenos videa probíhá nad UDP prostřednictvím protokolu RTP. Proud DV videa je možné vysílat unicastově i multicastově a to jak nativně tak i pomocí zrcadla paketů. Systém pro přenos videa se skládá ze dvou částí. Odesílající strana přijímá proud DV videa z rozhraní IEEE-1394 (Firewire), zabalí jej do RTP paketů a ty pošle do IP sítě. Přijímající strana pakety rozbalí a dekóduje proud videa, které pak zobrazí. Při přenosu stereoskopického videa pak tímto způsobem přenášíme a zobrazujeme dva proudy nezávisle ze dvou kamer. Popsaný systém byl implementován tak, že poskytuje stabilní řešení použitelné pro přenos a zobrazování stereoskopického videa. V příspěvku bude uvedeno měření výkonosti systému a zatížení sítě při přenosu jednoho proudu videa a zejména při přenosu stereoskopického videa ve formátu DV. 1 Úvod Digital Video (DV) [1, 2] je v současné době jeden z běžných formátů pro kompresi a ukládáni digitálního videa. Jeho velkou výhodou je vysoká kvalita v plném rozlišení (720 576 obrazových bodů se snímkovou frekvencí 25 fps pro normu PAL a 720 480 se snímkovou frekvencí až 30 fps pro normu NTSC) a nízká degradace obrazu vlivem komprese a to i při několikanásobné rekompresi. DV komprese používá vzorkování 4:1:1 pro normu NTSC a 4:2:0 pro normu PAL. DV je komprese podobná kompresi MPEG. Jedná se pouze o intra-frame kompresi s pevně stanoveným počtem bitů za sekundu. Výsledný datový tok proudu DV videa je pak 25 Mbps. Zvuk se kóduje a ukládá společně s příslušným rámcem videa. Zvuková stopa je vzorkována s frekvencemi 32 khz, 44,1 khz nebo 48 khz a kvantována do 12, 16 nebo 20 bitů. Kvalita zvukového záznamu je tedy minimálně srovnatelná a nebo i vyšší než kvalita záznamu na CD. Vzhledem k tomu, že DV nepoužívá interframe kompresi, je tento formát vhodný pro přenosy videa s nízkou latencí probíhajíci v reálném čase. Pro přenos DV videa IP sítí se používá protokol RTP. RTP poskytuje nespolehlivou a nezaručenou vrstvu pro přenosy audia a videa probíhající v reálném čase pomocí protokolu UDP. Kvalita přenosu není na úrovni protokolu RTP není vůbec řešena a v případě potřeby její řešení zůstává na aplikační úrovni. Způsob balení DV videa do RTP paketů je popsán ve standardech RFC3189 [3] a RFC3190 [4]. Pro přenos DV videa je podstatné zejména použití polí Timestamp a Merker bit v RTP hlavičce. Timestamp je časová značka odeslání prvního paketu s rámcem videa. V rámci jednoho rámce videa pak mají všechny RTP pakety stejné časové značky. Marker bit je v hlavičce RTP paketu ponechaný pro libovolné použití na aplikační úrovni. Podle RFC3189 nastavený Marker bit označuje poslední paket s daty nějakého rámce videa. Jakmile přijímající strana detekuje nastavený Marker bit v přijatém paketu, může zobrazit přijatý rámec videa. Avšak detekce nově přijatého rámce videa nesmí záviset na nastaveném marker bitu (paket s nastaveným marker bitem se může ztratit), ale na detekci změny časové značky v RTP hlavičce přijímaných paketů. Popsaný přenos DV videa po IP síti byl implementován pro několik operačních systémů (Linux, FreeBSD, Windows 2000/XP a MacOS X) v projektu Digital Video Transport System (DVTS) [5]. Balík DVTS obsahuje ovladač IEEE-1394 rozhraní pro operační systém FreeBSD a nástroje dvsend, dvrecv a dvplay. dvsend čte DV video z IEEE-1394 rozhraní, balí jej do RTP paketů a posílá jej do
sítě. dvrecv naopak přijímá DV video zabalené v RTP streamu ze sítě a ukládá jej do souboru. Konečně dvplay slouží k posílání libovolného DV videa na lokální rozhraní IEEE-1394. Balík DVTS ještě původně obsahoval nástroj xdvshow. Ten měl sloužit k přímému zobrazování přijatého DV videa na obrazovce počítače. Bohužel se ale velmi záhy přestal vyvíjet, až byl nakonec z balíku DVTS vyřazen úplně. Kromě xdvshow jsou všechny nástroje z balíku DVTS velmi stabilní a použitelné. Pro potřeby zobrazování stereoskopického videa jsme se rozhodli od základů reimplementovat původní nástroj xdvshow. Nová implementace xdvshow včetně všech klíčových vlastností je podrobněji popsána dále v tomto článku. 2 Návrh systému Stereoskopické video má co nejvěrněji napodobit pohled skutečného člověka. Scénu proto snímají dvě kamery, které simulují pohled obou očí. Použité kamery by měly být, pokud možno, totožné, abychom předešli možným rozdílům v kvalitě snímaného obrazu a nerušili tím dojem ze zobrazované scény. Obě kamery jsou upevněné na speciální stativové hlavě (viz obrázek 1), která dovoluje Obrázek 1. Stativová hlava "Parallax Setting Device" zejména nastavení tzv. paralaxy. Paralaxa pak ovlivňuje vnímání zobrazované scény. V závislosti na jejím nastavení budeme vnímat snímané objekty zobrazené před, na stejné úrovni nebo za projekční plochou. Nastavení vzájemné polohy kamer lze přesně vypočítat, výsledek ale nakonec nejvíce závisí na subjektivním dojmu z promítané scény. Z toho plyne, že celé nastavení lze provést ad hoc doslova od oka. Obě kamery jsou pak prostřednictvím rozhraní IEEE-1394 připojené k počítači, který čte proud DV videa a balí jej do RTP paketů, které pak prostřednictvím IP sítě posílá zobrazujícímu počítači. Stereoskopické video přenášíme jako dva nezávislé proudy DV videa. Přijímající (zobrazovací) počítač pak rozbali přijaté pakety, dekóduje oba proudy DV videa a ty zobrazí každý zvlášť na jedné hlavě grafické karty. Ke každé hlavě je připojený projektor s polarizačním filtrem před objektivem. Roviny polarizace obou filtrů jsou navzájem kolmé. Ve spojení s nedepolarizujícím projekčním plátnem a polarizačními brýlemi, které mají pro každé oko stejné roviny polarizace jako filtry u projektorů, pozorovatel vidí každým okem pouze obraz z příslušné kamery, což vytváří výsledný stereoskopický vjem. Obrázek 2 ukazuje zapojeni celého systému.
3 Reimplementace xdvshow Obrázek 2. Zapojení systému Legenda: 1) Kamera Canon XM-2, 2) Posílací počítač, 3) Posílací počítač (notebook), 4) Zobrazovací počítač, 5) Příhledové monitory, 6) Projektor s polarizačním filtrem, 7) Projekční plátno Původní implementace xdvshow používala pouze jedno vlákno pro všechny operace s DV videem. Vzájemné výlučnosti čtení, dekódování a zobrazování rámců videa bylo dosaženo pomocí aktivního čekání, což je neakceptovatelné zejména kvůli vysokému zatížení procesoru. Vícevláknová implementace dovoluje oddělit čtení od dekódován a zobrazování DV videa, Pro synchronizaci navíc nepoužívá aktivní čekání, takže celý systém je méně náročný na procesor počítače. xdvshow podporuje tři různé způsoby získávání proudu DV videa. Především umožňuje čtení DV videa zabaleného v RTP paketech, dále čtení videa uloženého jako raw DV soubor a konečně čtení DV videa ze zařízení připojenému k lokálnímu IEEE-1394 rozhraní. Proud DV videa zabaleného RTP paketech je možné přijímat v unicastovém i v multicastovém režimu. Pokud v síti není multicast podporovaný, lze proud DV videa přijímat od zrcadla paketů [6]. Protože xdvshow je pouze pasivní klient, je nutné za tímto účelem vytvořit navíc ještě jedno vlákno, které neustále udržuje přijímající počítač v seznamu klientů zrcadla paketů. Proud DV videa je dekódován pomoci kodeku Quasar DV implementovaného v knihovně libdv. Pod operačními systémy Linux a FreeBSD nyní existuje více implementací DV kodeku. Kodek Quasar DV byl zvolen zejména proto, že v době vzniku projektu šlo o jedinou použitelnou implementaci DV kodeku, která svému účelu navíc zcela dostačuje. Možnosti zobrazení dekódovaného videa závisí na systémové konfiguraci přijímajícího počítače a zejména na parametrech jeho grafické karty. Pokud to systém dovolí, xdvshow používá pro zobrazování videa rozhraní knihovny SDL. V opačném případě používá jako nouzové řešení pomalejší rozhraní X Windows. Knihovna SDL podporuje několik režimů škálováni obrazu při použití celoobrazovkového zobrazení a umožňuje využít HW akceleraci grafické karty pro zobrazení videa, což je velmi výhodné pro zobrazování stereoskopického videa. xdvshow implementuje tři metody škálování videa, z nichž každá klade jiné nároky na výkon počítače použitého pro zobrazování. Nejjednodušší a nejméně náročnou metodou je video zobrazené uprostřed obrazovky a doplněné černým okrajem, který vyplňuje zbytek obrazovky. Další metodou je úprava aktuálního rozlišení obrazovky tak, aby se co nejvíce přiblížilo rozlišení zobrazovaného videa. Poslední a nejnáročnější metodou je video skutečně škálované na rozlišení obrazovky. Kvůli zobrazování
stereoskopického videa bylo nutné implementovat alespoň základní podporu X Windows rozšíření Xinerama. 4 Stereoskopické video s xdvshow Pro ověření návrhu sytému a jeho implementace byl použit zobrazovací počítač se dvěma procesory Intel Xeon 2,4 GHz, 1024 MB paměti, gigabitovou síťovou kartou Intel 82544EI, dvouhlavou grafickou kartou Matrox MGA550 a operačním systémem Linux 2.4.x. Dále pak dva posílací počítače vybavené rozhraním IEEE-1394. Na jednom z posílacích počítačů byl nainstalovaný operační systém FreeBSD 5.2.1-RELEASE a byl osazen dvěma procesory Intel Xeon 2,4 GHz, 1024 MB paměti a gigabitovou síťovou kartou Intel PRO/100, druhý (notebook) s operačním systémem Linux 2.6.x byl osazený procesorem Intel P4 2,6 GHz, 512 MB paměti a pouze 100Base-T integrovanou síťovou kartou Broadcom BCM4400. Balení DV streamu do RTP paketů zajišťoval na obou posílacích počítačích dvsend z projektu DVTS. Pro každý stream je nutné použít odlišný port. dvsend na posílacích počítačích tedy spustíme následujícím způsobem: dvsend -4 -P 8000 -p -h klapacius.fi.muni.cz dvsend -4 -P 12000 -p -h klapacius.fi.muni.cz Kde -4 říká, že pro přenos používáme IPv4 síť, -P označuje port, na který posíláme stream, -p říká, že používáme video ve formátu PAL a konečně -h označuje jméno zobrazovacího počítače. Na zobrazovacím počítači pak běží dvě instance xdvshow. Každá z instancí poslouchá na jednom z portů na které posíláme RTP stream z posílacích počítačů, rozbalí jej, dekóduje DV video a to zobrazí na jedné z hlav grafické karty. Obě instance xdvshow spustíme takto: xdvshow -P 8000 -F -Z xdvshow -P 12000 -F -Z -P zde označuje port, na kterém instance xdvshow poslouchá, -F říká, že chceme dekódované DV video zobrazit v celoobrazovkovém režimu a -Z znamená, že používáme skutečné škálování obrazu. Všechna měření na výše zmíněných konfiguracích ukázala, že přijmutí, dekódování a zobrazení jednoho DV streamu zatíží procesor na přibližně 50 %. Datový tok DV streamu je 25 Mbps, tj. 3,125 MBps. Přidáme-li režii vzniklou zabalením DV streamu do RTP paketů a posláním do IP sítě (UDP hlavičky a IP hlavičky) dostaneme výsledný datový tok jednoho streamu přibližně 3,51 MBps. Čtení streamu DV videa z IEEE-1394 rozhraní, zabalení do RTP paketů a poslání do sítě tak představuje pro posílaci počítač téměř žádnou zátěž. Pokud přenášíme stereoskopické video, tedy dva streamy DV videa současně ze dvou posílacích počítačů, jejich zatížení zůstane stejně jako v předchozím případě zanedbatelné. Jelikož je zobrazující počítač osazen dvěma procesory, zůstává celková zátěž opět okolo 50 %, a to i přesto, že na zobrazujícím počítači běží dvě instance xdvshow a zpracovávají dva DV streamy. Pokud by došlo k migraci obou instancí xdvshow mezi procesory, může být celková zátěž o několik procent vyšší než v případě jednoprocesorového počítače s jednou spuštěnou instancí xdvshow. V případě přenosu stereoskopického videa ve formátu DV je síťový provoz na straně přijímajícího počítače dvojnásobný v porovnání s přenosem pouze jednoho streamu. 5 Závěr Navržený systém poskytuje stabilní řešení pro příjem, dekódování a přímé zobrazování proudu DV videa pro operační systémy Linux a FreeBSD. Přímé zobrazování videa je největším přínosem ve srovnání s nástroji z projektu DVTS. Navržený a implementovaný systém navíc představuje použitelné řešení pro snímání, přenos a zobrazování stereoskopického videa ve formátu DV. Ve spolupráci se zrcadlem paketů pak může být základem pro pokročilé videokonferenční nástroje.
Reimplementované xdvshow navíc bylo na podzim 2004 úspěšně prezentováno jako součást Linuxové live distribuce Knoppix během workshopu DVTS Trainig na konferenci Internet2 Member Meeting. V současné době probíhá další vývoj xdvshow zejména na Georgia Institute of Technology. Poděkování Tato práce byla řešena za podpory Výzkumného záměru Optická síť národního výzkumu a její nové aplikace MŠM 6383917201. Autor článku by chtěl poděkovat zejména Petru Holubovi z Ústavu výpočetní techniky MU za mnoho cenných rad a dále kolegům z Laboratoře pokročilých síťových technologii FI MU. Literatura a odkazy [1]International Electrotechnical Commission: IEC 61834: Recording - Helical-scan digital video cassette recording system using 6.35\,mm magnetic tape for consumer use. http://www.iec.ch [2]Video Equipment Division, AVC Company, Matsushita Electric Industrial Co., Ltd: Specifications of Consumer-Use Digital VCRs using 6.3\,mm magnetic tape. [3]K. Kobayashi, A. Ogawa, S. Casner, C. Bormann: RFC3189-RTP Payload Format for DV (IEC 61834) Video. http://www.zvon.org/tmrfc/rfc3189/output/index.html [4]K. Kobayashi, A. Ogawa, S. Casner, C. Bormann: RFC3190-RTP Payload Format for 12-bit DAT Audio and 20- and 24-bit Linear Sampled Audio. http://www.zvon.org/tmrfc/rfc3190/output/index.html [5]Akimichi Ogawa, Katsushi Kobayashi, Kazunori Sugiura, Osamu Nakamura, Jun Murai: Design and Implementation of DV based video over RTP. http://www.sfc.wide.ad.jp/dvts/pv2000/index.html [6]Eva Hladká, Petr Holub, Miloš Liška: Modulární komunikační reflektor s DV přenosem. In Sborník konference Vysokorychlostní sítě 2004. Univerzita Karlova v Praze, 2004. http://vrs.pasnet.cz/vrs2004/sbornik_vrs2004.pdf