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 $
1. Johdanto
2. Ympäristö
3. Tukiohjelmat
4. Järjestelmän komponentit
5. Ylläpitotehtävät
6. Ohjelmiston kuvaus
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ä.
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.
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ä.
Internet-TV käsittää seuraavat ohjelmatiedostot:
itv Internet-TV:n pääohjelma itv-audio Internet-TV:n ääniohjelmaInternet-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.
Lähdekoodipaketti on haettavissa osoitteesta
http://www.niksula.cs.hut.fi/projects/ohtace/setup/itv10.tar.gz
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.
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.
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.
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.
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.
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).
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.