Kis multimédiás elmaradás

 ( balagesz | 2016. szeptember 25., vasárnap - 20:04 )

Jó egy éve foglalkoztam már ezzel a témával, de maradt akkor egy kis elmaradásom. A történet ilyen-olyan, „régi” videojelek (Composite/CVBS illetve S-Video) digitalizálásáról szól; a feladat, hogy ezek valahogy a számítógép képernyőjén meg tudjanak jelenni. Erre a célra szolgálnak az un. „Video Grabber” eszközök, a választék az széles, a róluk fellelhető specifikációk ezzel ellentétben igencsak szűkösek. A ma kapható olcsó eszközök leginkább „külsők”, és USB-s csatlakozással rendelkeznek, ez még önmagában előny is lehet, hiszen például használhatók egy notebookkal is. Arról viszont csak ritkán esik szó a leírásokban, hogy milyen alkatrészekből vannak összerakva. Ezt még azzal is tetézni szokták, hogy ugyanazon a néven / ugyanolyan külsővel is létezik ugyanaz a termék tök más beltartalommal.

A „beltartalom” (nekem) két dolog miatt is fontos: egyrészt létezik-e Linux alá meghajtó az eszközhöz, másrészt „tudásban” is vannak furcsa különbségek. Az utóbbi (nekem) azért is lényeges, mert nem biztos, hogy éppen szabvány videojelet kellene digitalizálni; jellemzően valami régi mikrogép képét szeretném látni, ezek meg csak ímmel-ámmal állítanak elő korrekt videojelet. Leginkább az interlace kép szokott hiányozni, helyette fele akkora függőleges felbontású progresszív képet szoktak produkálni. Ami jó, mert nem villog, de rossz, mert a mai modern cuccok ilyen bemenete fel sem tételezi, hogy lehet ilyen. A végeredmény kétséges, mint a múltkori próbálgatásaim alatt kiderült, sokszor egyenesen használhatatlan a produkció.

Viszont – mint említettem – van nekem egy olyan darabom, ami nagyjából működik, csak nincs nálam. Na, ezt a darabot sikerült még január körül visszaszereznem, csak kóros időhiányból kifolyólag eddig nem értem ide, hogy írjak is róla.

Ez az eszköz szintén EasyCAP néven nevezi magát, viszont a hozzá adott „driver” lemezen (írt CD, de legalább van rá címke nyomtatva... :) ) már az EzCAP név szerepel. De ez a név önmagában nem utal se gyártóra, se tartalomra, a LinuxTV oldala szépen össze is foglalja, hogy hány fajta beltartalomról is van szó... A csomagoláson látható még egy Model No.: DC60+ felirat is, vajon ez hihető információ-e?

Na de mi is az, amire mint „jól működő” emlékszek? Az lsusb lényege:

Bus 001 Device 007: ID eb1a:2861 eMPIA Technology, Inc.
  idVendor           0xeb1a eMPIA Technology, Inc.
  idProduct          0x2861

Szerencsére (?) itt nincs semmilyen bedugáskor/kapcsolódáskor letöltendő firmware, az eszköz egyből működőképes. Működőképes? A dmesg, itt is van azért érdekesség bőven:

[28089.461298] usb 1-2.4: new high-speed USB device number 7 using ehci-pci
[28089.535637] usb 1-2.4: New USB device found, idVendor=eb1a, idProduct=2861
[28089.535647] usb 1-2.4: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[28089.614733] em28xx: New device   @ 480 Mbps (eb1a:2861, interface 0, class 0)
[28089.614737] em28xx: Video interface 0 found: isoc
[28089.614985] em28xx: chip ID is em2860
[28089.683737] em2860 #0: board has no eeprom
[28089.713384] em2860 #0: No sensor detected
[28089.727482] em2860 #0: found i2c device @ 0x4a on bus 0 [saa7113h]
[28089.760727] em2860 #0: Your board has no unique USB ID.
[28089.760733] em2860 #0: A hint were successfully done, based on i2c devicelist hash.
[28089.760738] em2860 #0: This method is not 100% failproof.
[28089.760741] em2860 #0: If the board were missdetected, please email this log to:
[28089.760745] em2860 #0: 	V4L Mailing List  
[28089.760749] em2860 #0: Board detected as EM2860/SAA711X Reference Design
[28089.823337] em2860 #0: Identified as EM2860/SAA711X Reference Design (card=19)
[28089.823345] em2860 #0: analog set to isoc mode.
[28089.824639] em28xx audio device (eb1a:2861): interface 1, class 1
[28089.824663] em28xx audio device (eb1a:2861): interface 2, class 1
[28089.824706] usbcore: registered new interface driver em28xx
[28089.870989] em2860 #0: Registering V4L2 extension
[28089.911449] usbcore: registered new interface driver snd-usb-audio
[28090.072838] saa7115 11-0025: saa7113 found @ 0x4a (em2860 #0)
[28090.456562] em2860 #0: Config register raw data: 0x10
[28090.468439] em2860 #0: AC97 vendor ID = 0x414c4740
[28090.474438] em2860 #0: AC97 features = 0x5990
[28090.474445] em2860 #0: Unknown AC97 audio processor detected!
[28091.685171] em2860 #0: V4L2 video device registered as video1
[28091.685180] em2860 #0: V4L2 VBI device registered as vbi1
[28091.685186] em2860 #0: V4L2 extension successfully initialized
[28091.685190] em28xx: Registered (Em28xx v4l2 Extension) extension
[28091.698101] em2860 #0: Registering snapshot button...
[28091.698172] input: em28xx snapshot button as /devices/pci0000:00/0000:00:12.2/usb1/1-2/1-2.4/input/input5
[28091.698460] em2860 #0: Remote control support is not available for this card.
[28091.698463] em28xx: Registered (Em28xx Input Extension) extension

Elég bőbeszédű lett... De ennek tulajdonképpen most örülünk. :) Három dolog „feltűnő”: az egyik egy kis magyarázat: az eszköznek nincs egyedi USB azonosítója, de hogy itt mire is gondolt a költő, az jó kérdés. (Talán a New USB device strings: Mfr=0, Product=0, SerialNumber=0 sorban található „semmire”? Vagy arra, hogy az idVendor=eb1a, idProduct=2861 paraméterek a „referencia dizájn” adatai, a gyártó nem kért / kapott sajátot?) Emiatt a csip melletti összetevőket csak „találgatja” a kernel-modul, de „szerinte” egy SAA7113H van mellette, ezt majd mindjárt jól le is ellenőrzöm. A másik „feltűnő” dolog az ismeretlen AC'97 csip, ami magyarázatot ad arra, hogy anno miért nem működött a hang része az eszköznek, itt lesz az ideje kideríteni annak a típusát is. A harmadik szerint ennek a toknak is van „nyomógomb” bemenete, mint az előző alkalommal látott OTG102-nek, de itt az nincs kiépítve, legalábbis a kütyün nincs semmiféle gomb... Mindenesetre regisztrálásra került a megfelelő helyen, lehetne kezelni.

Na de hogy is néz ez ki a valóságban?

Két „gusztustalan” dolog is szembe jön... Az egyikből rögtön lett is egy konklúzióm: Soha ne adj kölcsön semmit olyan helyre, ahol bagóznak!. Ez több mint fél év után még mindig bűzlik, pedig kétszer át is mostam! :\ A másik már technikai: hogy lehet ilyen gusztustalanul ferdén beforrasztani azt az USB csatlakozót? :) Ezen hamarosan segítek is, viszont a lényeg a képről kiderül. A fő csip nem más, mint egy eMPIA EM2860 típusjelzésű tok. (A gyártó oldalán már meg se találni... Még hogy az interneten minden fennmarad... :( ) És valóban, egy (eredeti, nem klón) SAA7113H van mellette, ez csinálja a videojel feldolgozását / digitálissá alakítását. A harmadik csip nem más, mint egy Realtek ALC202. Természetesen adatlapot nem találni hozzá. (A gyártó oldalán ott van, NDA-t aláírva le is tölthető... B****k.) :\ Találtam viszont egy EMP202 nevű csipleírást, aminek a gyártója valahonnan ismerős... :) Az eMPIA a doksijaiban ezt emlegeti AC'97 codec-ként az eszközeihez, lehet hogy a két tok kompatibilis egymással? Ez most nem fog kiderülni, azt hiszem. A lábszám meg a tokozás mindenesetre stimmel. A bekötést kellene összehasonlítani következő lépésként, de az nem most lesz... A randa USB csatlakozó alakítva:

Azért csak normálisabb... Kiforrasztás után annyira ferdén be se tudtam rakni! :) Na de a lényeg: egyáltalán működik-e, és úgy-e, ahogy kellene?

Az alap funkció természetesen működik; a kép – még mindig – a rossz minőségű analóg jel miatt gagyi. Az eszköz kezelését továbbra is az UCView végzi, hang persze nincs, viszont az eszköz „megnyitása” viszonylag lassan megy a program részéről... A dmesg meg közben érdekes sorokkal gazdagodik:

[ 8327.435567] bttv: 0: SCERR @ ca4ec000,bits: HSYNC OFLOW FBUS SCERR*
[ 8327.456947] bttv: 0: SCERR @ ca4ec000,bits: HSYNC OFLOW FBUS SCERR*
[ 8327.649493] bttv: 0: SCERR @ ca4ec000,bits: HSYNC OFLOW FBUS SCERR*
[ 8328.116360] bttv: 0: SCERR @ ca4ec014,bits: HSYNC OFLOW FBUS SCERR*
[ 8328.827985] bttv: 0: SCERR @ ca4ec000,bits: HSYNC OFLOW FBUS SCERR*
[ 8329.752608] bttv: 0: SCERR @ ca4ec000,bits: HSYNC OFLOW FBUS SCERR*
[ 8329.773162] bttv: 0: SCERR @ ca4ec000,bits: HSYNC OFLOW FBUS SCERR*

Ezt most így hogy? :) A bttv most mit keres itt? Az igaz, hogy a BT878-as kártya benn van a gépben, de pont nem azt piszkálnám... Mondjuk ez csak „kezdeti nehézség”, mert ha az eszköz ki van választva, utána már megy a megjelenítés flottul. A fenti üzenetre keresve nem találtam szinte semmit, megint sikerült valami egyedi esetet kifognom? De ez most részletkérdés. Ami viszont nem az, az a progresszív 50 Hz-es bemenőjel, illetve az ahhoz való viszony. Hogy ne csak mindig plus/4-es képernyővel teszteljek, legyen itt egy másik ismerős:

Na ez az, szerencsére ez rendben van. Mi ezen a nehéz? :) Az UCView természetesen továbbra is összefűzi a páros / páratlan kép sorait, a tvtime-ot viszont most is be lehet állítani ennek a mellőzésére, így végre normálisak a mozgások is. :) (Kár, hogy a tvtime fejlesztése megállt bő 10 évvel ezelőtt. Illetve... Az oldalon az 1.0.2-es verzió 2005 november 10-ei, ott az a „legfrissebb”. Fedora alatt a csomag verziószáma ennek ellenére 1.0.10, ez vajon ilyen önkényes verziószám-növelés, vagy azért reszelik ezt máshol? A LinuxTV-n vannak az utóbbira utaló jelek...)

Most különösen látszik, hogy a képről nem marad le semmi. A digitalizált terület (látszólag) nagyobb, mint a hasznos képtartalom. A vízszintes felbontás 720 pixel, ami elsősorban a videojelet feldolgozó SAA7113H korlátja, hogy az USB-s feldolgozó csip (emiatt) tudna-e többet, az jó kérdés. A függőleges pedig természetesen 576 sor, ez a PAL videojel 25 fps-es függőleges felbontása. Amúgy a PAL kép összesen 625 sorból áll, de az 576 fölötti sorok a függőleges visszafutáshoz tartoznak, illetve ide vannak elkódolva a teletext adatai meg egyebek, ha vannak. (Ezen adatok elérésére való a /dev/vbi* eszköz, ez itt is létrejön a csatlakoztatáskor, de eddig még programmal nem találkoztam, amivel értelmesen kezelni is lehet. Mondjuk olyan retró kütyüről se tudok, ami ezt kihasználná, a teletext meg a digitális tévézés korszakában egy kissé elavult.)

Hogy a „horror” képernyő se maradjon ki a tesztből:

A függőleges sávosodás valamennyire itt is észrevehető, de messze nem annyira zavaró, mint a külső tuneremnél. De a lényeg: működik ez... :)

Közben „találtam” egy programot, amivel globálisan lehet a V4L2 eszközök mindenféle paraméterét állítgatni, ez nem más mint a gtk-v4l. Illetve van egy másik stuff is, ezzel is könnyű mindenféle beállítást tesztelni, ez pedig a qv4l2. (Ehhez normális oldal nem jött szembe...) Egyik program sem lesz egy mindennapi használati eszköz, de kísérletezni jók.

Vissza van még a grabber hang-része, de ez egy kicsit furcsa. A LinuxTV oldala azt írja, hogy az audió rész támogatott az ALSA által, működnie kéne. Ennek ellenére – mint az fent látszik – ismeretlennek jelöli a hangcsipet a meghajtó. (Szerelték ezt több fajta codec-kel is, simán előfordulhat!) Nekiálltam nézelődni a témában, de valahogy nem barátom a kereső, használható találatokat nem kaptam, csak eltoltam pár órát. :\ Az ismeretlen AC97 vendor ID = 0x414c4740-re keresve egyetlen találat van, egy Linux kernel forráskód részlet egy PCI-s AC'97 meghajtóból. Ott jól, ALC202-nek van értelmezve, persze ez most rajtam nem segít. A keresgélés során arra se találtam választ, hogy az EM2860-at kezelő em28xx modult milyen paraméterekkel lehetne betölteni, hátha csak valamit meg kell neki magyarázni.

Konklúzió most sem lesz sok... Elszerencsétlenkedtem pár órát, ráadásul – tulajdonképpen – a semmiért; hangot másféleképpen is simán lehet digitalizálni, legföljebb nem annyira elegáns, mintha az is ugyanoda lenne kötve mint a kép. Ettől függetlenül két tény maradt. Egyrészt a PCI-s BT878-as kártya használatban maradhat, ha más nem is szól mellette, legalább az MINDIG be van dugva a gépbe. :) De felbontásra is többet tud. Másrészt a hang hiányossága ellenére fallback eszköznek ezt az USB-s grabbert is elrakom, mert tulajdonképpen egész jól működik. Notebook mellett egyébként is csak ezt van esély használni. Ugyan – gyaníthatóan – egy darabig még lehet kapni majd ilyen kütyüket, de azt, hogy vajon tudja-e a „nem-éppen-szabványos” videojelet is fogadni, az mindig lutri kategória fog maradni... :|

Linkek:

  1. Előzmények
  2. LinuxTV oldal az EasyCAP-ről
  3. UCView, bele kellene rakni a progresszív megjelenítést

balagesz

---

2016.09.25.

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

EZCap-ről jutott eszembe: http://southpark.cc.com/clips/410869/dropping-the-z-from-ez-pay :)

Csak hogy ontopic is legyen, ha nagyon érdekel a teletext, vlc állítólag tudja, de soha nem próbáltam.

Valóban, van némi VBI-s beállítási lehetőség. Aztán hogy hogyan kell használni? ;)

A BTTV hibaüzenet a korábbi kommentemben írt IRQ kezelés okozta DMA túlcsordulás. Mondhatnám úgy s, hogy isten hozott a bttv driver sötét oldalán. Ez az a tipikus hiba amit utána feng-sui-val, füstölővel, szenteltvízzel és a kártya szakrális égőáldozatként való bemutatásával lehet csak javítani. Afféle orosz rulett IRQ-val.
A függőleges sávosodást okozhatja a tuner bemeneti impedanciájának az illesztetlensége és a kábel is. Ha jól számolom 59 csík van ami felszorozva a sorfrekvenciával, olyan 1MHz-re jön. Vagy próbálsz egy szűrőt tenni rá ami szépen elmossa majd a képet, vagy a korábban is javasolt vonalmeghajtót építesz. Annó, egyszer 10+ méteren kellett átvinnem kompozit videójelet, és mikor még a Kossuth rádió is jött a TV-n képtartalomként, picit leesett a gépszíj. Rövidre fogva, egy 5W-os szélessávú erősítő ment a drót végére, 1 Ohm lezárással a TV felőli oldalon. Fűtött az egész mint a rossz nyavaja, de tűéles volt utána a kép. Ennyit az analóg jelátvitel csodájáról.
--
"Maradt még 2 kB-om. Teszek bele egy TCP-IP stacket és egy bootlogót. "

Az a furcsa a bttv-s hibaüzenetekkel, hogy ezek valamikor akkor keletkeznek, amikor a másik eszközt akarom kiválasztani. Talán fél a BT-s kártya, hogy kidobom a gépből? :-D

A VIC20-as képnél (meg a tv-s esetben is) egy egyszerű, audió-célú kábel volt kéznél, de a C64 képe (ha jól emlékszem...) S-Video-n keresztül jött, az a kábel meg "jó". Melyiknél számoltad az oszlopokat? :)

"másik eszközt akarom kiválasztani"

Szerintem a combobox adatainak populalasakor keletkeznek ezek a hibak, de ne legyen igazam.
--
Blog | @hron84
Üzemeltető macik

A VIC20 képében számoltam az oszlopokat.
--
"Maradt még 2 kB-om. Teszek bele egy TCP-IP stacket és egy bootlogót. "

Az az 1 MHz elmegy ~1.1-nek is szerintem, ami meg lehet már a CPU órajele. Ezeknek a gépeknek a videó-kimenete nincs túl korrektül megoldva, még a "légyzümmögés" is belelátszik. Nekem jó lesz ez így is. Csak manapság persze nem ehhez vagyunk szokva... ;)

Teletext: ha minden igaz, annak idejen volt a KDETV nevu csoda KDE ala, az tudott rendesen teletextet, legalabbis hasznaltam, bar nem mindig talalta meg a jelet rendesen, raadasul neha kifagyott, ha hibas adat jott at, de hat ez meg a KDE3 idejen volt... azota ez a dolog csak javulhatott.
--
Blog | @hron84
Üzemeltető macik

...de hat ez meg a KDE3 idejen volt... azota ez a dolog csak javulhatott.

Ö... Ja... Talán... :-D

Valami rémlik, most hogy említetted, mintha tényleg használtam volna a kdetv-t anno. Viszont most csomag nincs belőle Fedora alatt... De úgy tűnik, hogy ennek már nem is lett KDE4-es verziója. Végül is mindegy ám; manapság a neten is megtalálom azt, amiért a teletextet nézném.

Ha eleg kitartoan csakanyozod, lehet, hogy a Trinity Desktop-ban van portja neki. Marmint, ha esetleg hobbi szinten erdekel a dolog.
--
Blog | @hron84
Üzemeltető macik

Nem gondolnám, hogy az interlace nélküliséget tudná, a teletext meg számomra nem éri meg a küzdést.