Nejnovější:
- Sailfish OS and memory
- Hillshade tile server
- Statistics of OSM Scout for Sailfish OS
- Nebezpečný router
- Tree model with Silica components
Podle data:
- listopad 2021
- leden 2019
- prosinec 2017
- prosinec 2016
- květen 2014
- duben 2014
- listopad 2013
- duben 2013
- duben 2011
- únor 2011
- leden 2011
- srpen 2010
- květen 2010
- březen 2010
- leden 2010
- říjen 2009
- duben 2009
- únor 2009
- říjen 2008
- září 2008
- srpen 2008
- duben 2008
- březen 2008
- únor 2008
Téma:
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`