Latest:
- Sailfish OS and memory
- Hillshade tile server
- Statistics of OSM Scout for Sailfish OS
- Nebezpečný router
- Tree model with Silica components
By month:
- November 2021
- January 2019
- December 2017
- December 2016
- May 2014
- April 2014
- November 2013
- April 2013
- April 2011
- February 2011
- January 2011
- August 2010
- May 2010
- March 2010
- January 2010
- October 2009
- April 2009
- February 2009
- October 2008
- September 2008
- August 2008
- April 2008
- March 2008
- February 2008
Topic:
Kamera m5602 a Skype
…aneb už mě uvidíte!
Posledně jsem psal o ošlivé kameře a krásném driveru pro ní. Hlavním důvodem proč jsem se do vývojového procesu driveru zapojoval bylo, že jsem chtěl kameru používat při kecání přes Skype. Ten totiž od verze 2.0 beta pro Linux podporuje video rozhovory.
V ideálním světě by stačilo zavést modul pro kameru, zapnout Skype a kecat. Jenže ten náš svět má do toho ideálního hodně daleko… Z kamery m5602 tečou data v bayer formátu ale Skype akceptuje (tuším) pouze formát rgb24.
Konverze formátů v uživatelském prostoru pomocí libv4l
Převádět video formáty přímo v modulu, tedy v jádře, není příliš žádoucí. Takové věci je lepší dělat mimo jádro, v uživatelském prostoru. K tomu se přímo nabízí knihovna libv4l, která poskytuje standardizovanou vrstvu aplikacím pro komunikaci s video 4 linux kompatibilními ovladači v jádře (možná jsem to nepopsal přesně…).
Tímto problémem se naštěstí už zabýval Hans de Goede a implementoval konverzi z rozličných video formátů, včetně různých variant bayer-u, do rgb24 nebo yuv420. Jeho libv4l knihovnu si můžete stáhnout z http://people.atrpms.net/~hdegoede/. Pár slov o její funkci a budoucnosti sepsal Hans do slidů (pdf) prezentovaných na Linux Plumbers Conference 2008 (LPC/2008).
Jak knihovnu zkompilovat a použít je popsáno ve wiki projektu ALi m560× Linux Driver.
Já zde popíšu svůj postup pro amd64 a 32bit Skype:
Nejdříve zkompilovat knihovnu jako 32 bit:
make clean make CFLAGS="-m32" LDFLAGS="-shared -m32"
poté nainstalovat (Já ji instaluji do odděleného adresáře v home složce. Přeci jen, je to vývojová záležitost.)
make install PREFIX=~/lib/libv4l_32
Poté nainstalovat Skype verze 2.0.0.27 ! Nejnovější Skype mi nechtěl s kamerou pracovat.
A nakonec vytvořit si speciální script na spouštění Skypu s použitím knihovny pro konverzi video formátů. Já ten script mám pojmenován skype-camera v adresáři ~/bin. Jeho obsah:
export LD_PRELOAD=~/lib/libv4l_32/lib/libv4l/v4l1compat.so export LD_LIBRARY_PATH=~/lib/libv4l_32/lib/libv4l/:~/lib/libv4l_32/lib/: skype
Poté už jen stačí spustit script skype-camera a někomu zavolat…
Nastavování jasu a zisku
Protože driver m5602 nemá (se senzorem s5k83a) automatickou úpravu jasu a Skype v Linuxu nemá pro video žádné ovládání, vždy před hovorem si jas upravím ručně. K tomu jsem si napsal script po použití mplayeru s libv4l knihovnou (zkompilovanou jako 64bit).
#!/bin/bash if [ $# -lt 2 ] ; then echo "pouzij dva parametry:" echo " prvni je svetlost v rozsahu -100 do 100" echo " to druhy je zisk v rozsahu 0 az 100" exit fi export LD_PRELOAD=~/lib/libv4l_64/lib/libv4l/v4l1compat.so export LD_LIBRARY_PATH=~/lib/libv4l_64/lib/libv4l/:~/lib/libv4l_64/lib/: exec="mplayer tv:// -tv driver=v4l2:device=/dev/video0:brightness=$1:gain=$2 -fps 30 " echo $exec `echo $exec`