Tik-76.115 Ylläpito-ohje

Internet-televisio

http://www.niksula.cs.hut.fi/projects/ohtace/documents/yo.html
CVS Info: $Id: yo.html,v 1.17 1997/04/30 07:30:47 mtuisku Exp $


Sisällysluettelo

1. Johdanto
2. Ympäristö
3. Tukiohjelmat
4. Järjestelmän komponentit
5. Ylläpitotehtävät
6. Ohjelmiston kuvaus

1. Johdanto

Tämä yllläpito-ohje on Internet-TV:n versiolle 1.0, jota on testattu SGI:n IRIX 5.3- ja Sun Solaris 2.5 -käyttöjärjestelmillä.

Termistö

2. Ympäristö

Käyttöympäristö on tavanomainen ikkunoitu käyttöjärjestelmä. Tässä vaiheessa on rajoituttu SGI:n IRIX 5.3, Sun Solaris 2.5 -käyttöjärjestelmiin ja X11 käyttöliittymäympäristöön.

Varsinainen ohjelmointi on toteutettu C/C++-kielellä ohjelmakoodin siirrettävyyden aikaansaamiseksi. C/C++-kääntäjänä on käytetty gcc C/C++ kääntäjän versiota 2.7.2. Käyttöliittymä on luotu Tcl/Tk -kielillä käyttäen viimeisintä Tcl/Tk versiota (työryhmä on käyttänyt menestyksellisesti Tcl-versioita 7.5 ja 7.6 sekä tk-versioita 4.1 ja 4.2).

Versionhallintaan on käytetty CVS- versionhallintaohjelmaa. Alkuhankaluuksien jälkeen cvs on osoittanut kyntensä. Vaikka kolmekin henkilöä on muuttanut saman aikaisesti samaa tiedostoa, niin cvs:n avulla konfliktit on pysytytty ratkaisemaan todella helposti.

3. Tukiohjelmat

3.1. Käännetyn ohjelman tukiohjelmat

Käännetty ohjelmisto ei tarvitse tuekseen mitään muita ohjelmistoja. Tämä on aikaansaatu linkittämällä tcl/tk kirjastot binääreihin staattisesti, jolloin ohjelmiston siirtäminen ja asentaminen on mahdollisimman helppoa.

Jotta ohjelmistoa voisi käyttää, tulee koneessa olla toimiva ip-multicast reititys. Käyttöjärjestelmä tukee ip-multicast reititystä, jos reititystaulusta löytyy reitti verkolle 224.0.0.0/4. Tämän voi tarkistaa esim. komennolla netstat -nr. Jos reitti löytyy, käyttöjärjestelmä tukee ip-multicast reititystä.

Jotta lähetyksiä voisi vastaanottaa, tulee käytettävästä lähiverkosta olla toimiva ip-multicast reititys MBONE:een. Tämä on helpointa selvittää verkon ylläpitäjiltä.

3.2. Lähdekoodin kääntämiseen tarvittavat ohjelmat

g++
Tcl, vähintäänversio 7.5
Tk, vähintään versio 4.1

4. Järjestelmän komponentit

4.1. Käännetyn ohjelman tiedostot

Asennuspaketin kuvaus on asennusohjeessa

Internet-TV käsittää seuraavat ohjelmatiedostot:

itv           Internet-TV:n pääohjelma
itv-audio     Internet-TV:n ääniohjelma
Internet-TV toimii myös ilman itv-audiota, mutta tällöin ääntä ei kuulu.

Internet-TV tallettaa erilaisia käyttäjän antamia asetuksia tiedostoon itv.ini. Ohjelma kuitenkin toimii, vaikka tätä tiedostoa ei olisi.

4.2. Lähdekooditiedostot

Lähdekoodipaketti on haettavissa osoitteesta
http://www.niksula.cs.hut.fi/projects/ohtace/setup/itv10.tar.gz

Itv:n lähdekoodi on jaettu kolmeen hakemistoon.

itv/
itv/video/ Tämä hakemisto sisältää itv:n videopuolen lähdekoodin.
itv/video/src-sdr Tässä alihakemistossa on kanavan hakuun sisältyvät tcl- ja c-tiedostot
itv/audio/ Tässä hakemistossa on itv:n audiopuolen lähdekoodi.

Tarkempi listaus kaikista lähdekooditiedostoista on tiedostolistauksessa.

4.3. Ohjelmiston kääntäminen lähdekoodista

Ohjelmisto koostuu kahdesta modulista: audio- ja videomoduli. Nämä modulit käännetään erikseen. Audiomodulin kääntäminen edellyttää gsm-koodauskirjaston kääntämistä etukäteen.

4.3.1. Videomoduli

Lähdekoodipaketin purkamisen jälkeen siirrytään hakemistoon itv/video ja ajetaan komento ./configure --with-tcl=/usr/local --with-tk=/usr/local. Edellä polkua /usr/local tulee muuttaa sen mukaan, mihin tcl/tk on asennettu. Ko. hakemiston alta tulisi löytyä alihakemisto include ja sen alta tiedostot tcl.h ja tk.h. Hakemiston löytämistä voi helpottaa komento locate include/tcl.h.

Tämän jälkeen voidaan vielä tarvita Makefile-tiedoston hienosäätöä: esim. Solaris-ympäristössä mukaan linkattaviin kirjastoihin tulee lisätä resolver-kirjasto, eli Makefile-tiedostoon tulee lisätä optio -lresolv muiden järjestelmäkirjastojen mukaan.

4.3.2. Audiomoduli

Lähdekoodipaketissa on mukana erillinen gsm-koodauskirjasto. Tämä tulee kääntää ennen audiomodulin kääntämistä. Gsm-koodauskirjasto on hakemistossa itv/gsm-1.0-pl10. Tämä käännetään ko. hakemistossa olevien ohjeiden mukaan. Tämän jälkeen ajetaan itv/audio hakemistossa ./configure --with-tcl=/usr/local --with-tk=/usr/local --with-gsm=../gsm-1.0-pl10. Jälleen polku /usr/local on korvattava paikallisella tcl/tk:n asenushakemistolla. Tämän jälkeen audiomoduli voidaan kääntää komennolla make.

5. Ylläpitotehtävät

Ohjelman ylläpito rajoittuu mahdollisten uusien versioiden asennuksiin. Uudelleenasennus suoritetaan asentamalla uusi ohjelma vanhan päälle.

Ohjelmiston asennusohjeet.

Ohjelman mahdollisista virheistä voi laittaa sähköpostia osoitteeseen ohtace@tcm.hut.fi.

6. Ohjelmiston kuvaus

Internet-TV koostuu kahdesta modulista: audio- ja videomoduli. Modulien binäärien nimet ovat itv ja itv-audio. Ohjelmiston päämoduli on itv, joka sisältää käyttöliittymän, videokuvan käsittelyn ja kanavatietojen keruun verkosta. Itv-moduli käynnistää audiomodulin, kun käytäjä on valinnut kanavan jolta pitäisi tulla ääntä. Itv-moduli ohjaa audiomodulia käynnistyksen jälkeen tcp-soketin 29995 kautta.

Videomoduli pohjautuu vic-2.8 videokonferenssityökaluun. Tähän on integroitu sdr-2.3 kanavanhallintaohjelmistosta kanavan käsittelyyn tarvittavia rutiineja sekä rakennettu kokonaan uusi käyttöliittymä ja audiomodulin ohjaamiseen tarvittavat rutiinit.

Audiomoduli pohjautuu vat-4.0 konferenssityökaluun. Tästä on poistettu käyttöliittymä ja rakennettu tarvittavat rutiinit modulin ohjaamiseen videomodulista käsin.

Arkkitehtuuri on kuvattu teknisen määrittelyn kohdassa 3.

6.1. Itv-moduli

Itv-moduli kostuu siis kahdesta osasesta. tässä kerrotaan niihin liittyvä ylläpito. Toinen osahan on vic:iin perustuva koodi joka on dokumentoitu tarkemmin teknisessa määrittelyssä ja toinen on sdr-toiminnallisuus.

6.1.1 Itv-modulin Sdr-osa

Itv:hen on sulauttettu sdr:n versiosta 2.3 kanavan haisteluun liittyvät rutiinit. Toisin sanoen itv pystyy itsenäisesti ottamaan selville mistä ja milloin lähetystä tulee. Tämän lisäksi itv osaa kirjoittaa keräämänsä lähetystiedot talteen silloin kun ohjelma lopetaan. Samalla tavoin itv osaa lukea nämä tiedot takaisin kun se käynnistetään uudestaan. Nämä tiedot kirjoitetaan käyttäjän kotihakemistossa sijaitsevaan .itv/cache/-alihakemistoon. Tässä hakemistossa olevat nimet ovat kryptisiä, eikä nimistä saa selvää mikä lähetys kyseiseen tiedostoon on tallettu.

Lähdekooditasolla sdr-funktionaalisuus on sulautettu seuraavasti: sdr:n vaatima c-koodi sijaitsee main.cc:ssä ITV-"ifdef":ien sisällä. Loput sdr:n tarvitsemasta c-koodista sijaitsee src-sdr-alihakemistossa ".c" päätteisissä tiedostoissa. Sdr:n tcl osuus sijaitsee src-sdr- alihakemistossa sdr.tcl tiedostossa. Sdr.tcl:stä on poistettu käyttöliittymään kuuluvat funktiot ja siihen on lisätty lähetysmediatietojen, kuten mistä osoitteesta ja portista tavaraa tulee, tallenus omaan hash-muuttujaan (sessionmedia set_media funktiossa).

6.1.2 Itv-modulin Vic-osa

Vic-osa perustuu suurelta osin alkuperäiseen vic-koodin, kuitenkin sillä lisäyksellä, että tcl-koodin on lisätty kanavan vaihdon tarvitsemat lisätoiminnallisuudet. Lisäksi käännettäessä ei oteta mukaan lähetyksen lähettämiseen tarkoitettuja luokkia (Makefileessa LIB_GRABBER:in ja OBJ_GRABBER:in pois jättäminen).

6.2. Itv-audio-moduli

Itv-moduli käynnistää audio-modulin kun liitytään kanavalle, jolta pitäisi tulla ääntä. Käynnistyksen yhteydessä itv-moduli kertoo audio-modulille komentorivioptiolla -p tcp-portin, jonka kautta kommunikointi itv- ja itv-audio-modulin välillä tapahtuu.

Käynnistyttyään itv-audio-moduli avaa välittömästi soketin osoitteeseen 127.0.0.1 (localhost) siihen porttiin, joka komentorivillä kerrottiin. Juuri ennen itv-audio-modulin käynnistämistä itv-moduli on avannut ko. portin LISTEN tilaan. Kun yhteys prosessien välille on muodostunut, antaa itv-moduli ko. soketin kautta tarvittavat kanavatiedot itv-audio-modulille. Tämän jälkeen itv-audio moduli liittyy kanavalle ja alkaa vastaanottaa ja toistaa ääntä.

Toiminnassa ollessaan itv-audio saa em. komentokanavan kautta mm. äänenvoimakkuuden säätöön tarvittavat tiedot tai komennon sulkea itsensä. Kanavalta toiselle siirtyminen tapahtuu aina käynnistämällä itv-audio-moduli uudelleen.

Varotoimena sille, että itv-moduli kaatuisi ja itv-audio-moduli jäisi pyörimään yksinään, on itv- ja itv-audio-modulien välillä yksinkertainen echo-protokolla. Itv-audio prosessi lähettää komentokanavalle 10 sekunnin välein viestin "echo" ja odottaa siihen vastausta. Jos vastausta ei tule 10 sekunnin kuluessa, itv-audio olettaa itv-modulin kuolleen ja lopettaa itsekin toimintansa.

6.3. Linkit koodidokumentteihin