EPG Generator a PST-ben - Personal Stream Tool v1.03 új moduljának bemutatása
|
A digitális televíziótechnika egyik legnagyobb újdonsága – a kép és hang minőségének jelentős mértékű javulása mellett – az elektronikus műsorfüzet, vagy EPG megjelenése. Digitális átvitelről lévén szó, e területen nem az adatok átvitele, hanem azok előállítása jelent megoldandó feladatot. Az elmúlt nyáron a PST szoftverét bővítettük egy olyan modullal, amelyik képes ilyen EPG adatfolyam előállítására. Cikkünkben a modul bemutatása mellett annak alkalmazásához is segítséget kívánunk nyújtani. Legtöbb olvasónk már tudja, hogy az EPG a 18-as PID értéken, táblák formájában kerül továbbításra. Az EIT (Event Information Table) szerkezete hasonlít a korábbi cikkeinkben ismertetett táblák szerkezetéhez, azonban azok méreténél lehet jóval, pontosabban négyszer, nagyobb. A tábla elején (szakszerűbben az Event Information Section elején) továbbított Service Id mondja meg, hogy az adott tábla melyik műsorhoz tartozik. Eddig nem nagyon figyeltünk rá, de ezen a ponton válik fontossá, hogy az adott szolgáltatásban minden egyes rádió- és tv műsornak különböző Service Id-vel kell rendelkeznie. Az adott műsorhoz tartozó műsorújság valójában bájtok halmaza, amit a vevőkészüléknek tárolnia kell. A tárolásra azért van szükség, mert a TS adatsebessége nem teszi lehetővé az EPG nagy adatmennyiségének túl gyakori ismételt továbbítását. Ma már a háziasszonyok is gigabájtos tárolókat használnak fényképeik tárolására, mégsem egyszerű a vevőkészülék gyártók helyzete. A legtöbb ajánlás minimum 8 nap anyagának tárolását javasolja. 100 ... 200 tv csatorna esetén ez már komoly mennyiség. Az EPG készítői felé a max. 1000 karakter/esemény betartását javasolják. A EIT tábláknak is van azonosítójuk (Table Id). A Table Id adja az első útmutatást a vevőkészülék számára az adatok feldolgozásához. Az EPG egyik része az éppen futó és a következő (present/following) műsorhoz szállít információt, a másik része a hosszú távú műsorfüzet (schedule) tartalmát hozza. Amikor a Table Id 0x4E értékű, az atuális TS-hez, amikor 0x4F értékű, más TS-ekhez történik a present/following információk szállítása. Könnyen belátható, hogy a present/following információ előállításához óra és számítógép kell, ugyanis ezt az adathalmazt a nap folyamán folyamatosan változtatni kell. Elterjedt megoldás, amikor a számítógép XML fájlt olvasva állítja elő ezeket a táblákat. A PST ehhez hardverrel nem rendelkezik, tehát ennek előállítására nem vállalkozhatunk. A hosszútávú előrejelzés a Table Id 0x50 ... 0x5F értékei alatt történik. A Table Id 0x60 ... 0x6F értékei alatt más TS-ek számára történik a továbbítás. Valamennyi esetben a táblában elhelyezett descriptorokba építve történik az információk szállítása. Vannak országok, melyekben előírják, hogy mely descriptorokat kell beépíteni a táblákba. Egy internetről letölthető előírásban olvasható, hogy a T-s adás EIT/schedule/actual tábláiba a következő descriptorokat kell beépíteni: •Short Event Descriptor (tag=0x4D), •Extended Event Descriptor (tag=0x4E), •Parental Rating Descriptor (tag=0x55), •Content Descriptor (tag=0x54). A szolgáltató oldaláról szemlélve az EPG-t, a vevőkészülék hosszútávú előrejelzést tároló memóriájának feltöltéséhez elsőként rendelkeznünk kell egy időrendbe állított esemény listával, amelyen belül az esemény kezdési idejének és időtartamának adatára lesz szükségünk. A világszerte egyformán használható dátum megadására a Julián Dátum egy módosított (MJD) változatát kell használni az EPG descriptorában. A JD az ie. 4713 január elseje óta eltelt napokat számlálja. Hibája, hogy e szám az EPG számára feleslegesen nagy és délben lép egyet, ezért az egészet fél nappal eltolták és csonkolták a feleslegesen nagy számértéket. A részletek mellőzésével az EN 300 468 azt mondja, hogy az 5 bájtos idő adatban a napot jelölő első két bájtnak 0xC079 értékűnek kell lennie 1993. október 13-án. Utánna számolva látható, hogy a problémák kb. 44,5 év letelte után jelentkeznek majd, amikor a szám eléri 0xFFFF értéket és átfordul. A napok számának megadása után az idő adat további három bájtja 4 bites BCD kódban hordozza a napon belüli időpont 6 digites értékét. Ennek megfelelően az 1993.10.13-i nap 12:45:00-ás idő adata így néz ki: 0xC079 12 45 00 A webes környezet a PC-től eltérően az 1970. január 1-je óta eltelt ms-ok számát használja lineáris időadatként. Ezt az értéket 1000-rel, majd 60×60×24-gyel osztva kapjuk a napok számát, amiből az MJD-re való áttérés egyszerű függvénnyel írható le. Szoftverünkben a webes időadatot használjuk az időpontokkal rendelkező adathalmazok rendezésére és csak a táblák készítésénél térünk át a descriptorokba építendő MJD adatformátumra. A vevőkészülékben elhelyezendő, de egyébként váratlanul össze-vissza érkező EPG adathalmazok rendezésének megkönnyítésére a szabvány további megkötéseket tartalmaz. Első lépésként előírja, hogy a továbbításra szánt műsorfüzet adatait 3 órás időtartamokra kell osztani miközben egy-egy tábla-azonosítón belül 32 szegmenst alakítunk ki. A 3 órás tartományba maximum 8 esemény adata helyezhető el. Az adathalmaz első napjának 0 és 3 óra közötti eseményeinek adatait a 0x50-es Table Id-vel jelölt tábla első szegmensébe kell tenni. A következő 3 órás tartományok a következő szegmensekbe kerülnek. Mint azt az internetről vett 1. ábra is mutatja, a 0x50-es ID-vel jelölt táblák az első 4 nap eseményeit tartalmazzák. A 0x5F-ig terjedő tartomány 16×4=64 napos előrejelzés elhelyezésére ad lehetőséget.
1. ábra A táblaazonosítók és a 3 órás tartományok összerendelési szabályának szemléltetése Az események további jellemzőinek megadásához elsőként a Short Event descriptor felépítésével kell megismerkednünk. A descriptor tag értéke 0x4D, mint azt már fentebb láttuk. A descriptorban az egy bájtos adathosszt, amely max. 255 bájt elhelyezését teszi lehetővé, a 3 bájtos ISO 639 szerinti Language Code követi. A további két hossz adatot tartalmazó bájt levonása után fennmaradó 250 bájt az esemény neve és a hozzá kapcsolt leírás között osztható fel. Már előre jelezzük, hogy a túlzottan hosszú név megadása nem célszerű, mivel a tv vevőkészülék ezt úgysem tudja megjeleníteni. A 10-20 karakter hosszú név után fennmaradó 230...240 bájt a legtöbb esetben elegendő az esemény leírására, ezért úgy döntöttünk, hogy szoftverünkbe nem építjük be az Extended Event Descriptort, amellyel az esemény leírása bővíthető. Az EIT táblában lenne a helye a műsorokhoz korhatárt rendelő Parental Rating Descriptornak, azonban a kezelőfelület egyszerűsítése érdekében egyelőre ennek szerkesztését sem építettük be szoftverünkbe. Hasonlóan eltekintettünk a tartalom jellegét leíró Content Descriptor beépítésétől. Az EPG átláthatatlannak tűnő nagy adathalmazából a következők szerint nyerhetünk ki néhány hasznos adatot: Amikor a Last Table Id=0x50, az EPG csak 4 napra tartalmaz adatokat, 0x51 esetén nyolc napra és így tovább. A Section Number számát 8-cal osztva megtudhatjuk, hogy melyik 3 órás szegmenshez tartozó adatokat szállítja. Igaz, hogy a mikroprocesszorok korában szinte korlátlan mennyiségben lehet az adatokat tárolni és feldolgozni, mégis a vevőkészülékek számára igen komoly kihívás száz vagy több száz műsor egy vagy több hetes adatainak tárolása, illetve lekérdezés esetén azok kikeresése és megjelenítése. Ez indokolja, hogy az adatokat meglehetősen strukturáltan kell kiadni. Saját véleményünk, hogy a szabványt ennek ellenére sokkal egyszerűbbre is el lehetett volna készíteni, de ma már ezen sem lehet módosítani. A felhasználói oldalról nézve az EPG modult, az események adatainak bevitele az izgalmas téma, a packetek előállítását a szoftver automatikusan intézi. A menü választását követően a 2. ábrán látható kezelőfelület jelenik meg. Az ábrán 1-es számmal jelölt vízszintes mezők egy-egy nap eseményeit jelzik. Példánkban 2016.10.13. és 14. a kiválasztott két nap. A vízszintes mezők 24×60=1440 pixel szélesek, azaz 1 perc/pixel a felbontás. Ebből adódóan a szerkesztéshez az 1980×1080 pixeles HD monitor használatát javasoljuk. Ennél kisebb felbontás esetén a böngésző alsó gördítőjét is használni kell. A vízszintes mezők bármely pontjára kattintva (a kattintás helye nyíllal jelölve) megjelenik az EPG Data Editor, 2-es számmal jelölve, amely lehetővé teszi egy esemény adatainak bevitelét. Mivel senkitől sem várható el, hogy 1 pixel pontosan kattintson az egérrel, a megjelenő időadatok tetszés szerint módosíthatók. A napokat módosítva – ha szükséges – a szoftver újabb sorokat jelenít meg. A gyakorlat azt mutatja, hogy a legtöbb esemény adatainak bevitelénél elegendő a perc adatainak igazítása. Az esemény időtartama, címe és leírása a műsorfüzetnek megfelelően töltendő ki. Nagyobb terjedelmű leírás begépeléséhez a jobb alsó sarkot megfogva a „Description” ablak nagyítható. Az adatok begépelését követően az „Apply” gombra kattintva a szoftver átveszi azokat és átléphetünk a következő esemény szerkesztésére.
2. ábra Az EPG modul eseményszerkesztő felülete Az esemény adatainak átvétele után a felületen megjelenik a 3-as számmal jelölt mező, benne az esemény címével. A mező szélessége arányos az időtartammal, így jól látható, ha átfedés vagy üres szakasz adódik az adatokból. Annak érdekében, hogy a rövidebb események címeinek megjelenítésével se legyenek problémák, a szoftver 3 sávban függőlegesen eltolva jeleníti meg az események azonosítóit. Az ábrán látható, hogy az első és a második esemény között közel 3/4 óra nagyságú üres hely tátong. Az adatok bevitelének sorrendje tetszőleges, bármikor bárhova beszúrható egy újabb esemény. Eseménnyel lefedett időtartományba kattintva a szoftver megkeresi az eseményhez tartozó adatokat és ezeket jeleníti meg a szerkesztőben. Amikor egy eseményt ismétlődően több napra is be kívánunk illeszteni, nem kell mást tenni, mint a dátumot manuálisan módosítani, majd az Apply gombra kattintani. A másolási funkció megismerése után nézzük meg milyen lehetőségeink vannak az adatok törlésére. Bármelyik eseményre, majd az Erase gombra kattintva az adott esemény törlődik. A nap jobb vagy bal szélére kattintva aktívvá válik a nap összes eseményét törlő gomb és megerősítést adva a nap valamennyi eseménye egyszerre törölhető. A Settings gombra kattintva megjelenő felületen van lehetőségünk a teljes adatbázis törlésére. Az új adatbázis a törlés napjával indul. E felületen találjuk az adott napig, és az adott naptól törlés lehetőségét is. Az EPG adatfolyamot csak akkor fogadják el a vevőkészülékek, ha a packetekben elhelyezett fő azonosítók (TS Id, Service Id stb.) egyeznek a TS-ből kiolvasható adatokkal. Ezek beállítására csak egyszer van szükség, de ne feledkezzünk meg róla. A beállítások és az eseményadatok a Save gombra kattintva menthetők a készülék flash memóriájába. Az EPG adatok begépelése hosszadalmas és fáradságos munka, ezért jó, ha azt számítógépünk tárolójára is elmentjük. A Save to File felirat mellett elhelyezett gomb ad erre lehetőséget. A betöltést az Open feliratú gomb biztosítja. Az Open feliratú gombot kell használni akkor is, ha fájlban szerkesztjük az adatbázist és Base64 kódolás után fájlból kívánjuk az adatokat a felületre vinni. Az ismétlődési idő beállításával a kiadott packetek ütemezése állítható. A 0 és 1200 sec között állítható adat csak tájékoztató jellegű. 0 begépelése esetén a készülék 50 ms-os távolsággal adja ki a packeteket elsősorban mérési célokra. A túl nagy ismétlődési időt a szoftver csökkenti ha kevés a kiadandó packetek darabszáma. Az Expert View nézetben a felhasználónak nincs több lehetősége, mint azt megadni, hogy a packetek melyik kimeneten jelenjenek meg. Minden további interfész konfigurálásáról a felhasználónak kell gondoskodnia. A Single Application View nézetben a szoftver a 63-as IP kimenetet konfigurálja a megadott IP Address: Port Number értékpárra. Az IP Input adatokat kitöltve a szoftver a 63-as IP bemenet jeléhez adja hozzá az EPG adatfolyamot. Ebben a módban van lehetőségünk TDT-TOT tábla beillesztésére is, ha az szükséges. A konfigurációs adatokat kitöltve, majd az Run gombra kattintva a szoftver megkezdi az EPG adatfolyamot alkotó packetek kiadását. Műsorváltozás esetén sem kell többet tenni, mint a változás adatainak bevitele után ismételten a Run gombra kattintani. A Stop gombra kattintva a szoftver törli az EPG packeteket tartalmazó memóriát és ezzel a packetek kiküldése leáll. Zigó József
|



