ˇ ´ UCEN ´I TECHNICKE ´ V BRNEˇ VYSOKE BRNO UNIVERSITY OF TECHNOLOGY
ˇ ´ICH TECHNOLOGI´I FAKULTA INFORMACN ˇ ´ITACOV ˇ ´ ´ GRAFIKY A MULTIMEDI ´ ´I USTAV POC E FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF COMPUTER GRAPHICS AND MULTIMEDIA
´ ´I MULTIMEDIALN ´ ´I CENTRUM DOMAC HOME MULTIMEDIA CENTRE
´ RSK ˇ ´ PRACE ´ BAKALA A BACHELOR’S THESIS
´ AUTOR PRACE
DAVID SULAIMAN
AUTHOR
´ VEDOUC´I PRACE SUPERVISOR
BRNO 2008
ˇ Ph.D. doc. RNDr. PAVEL SMRZ,
Abstrakt Tato pr´ ace se zab´ yv´ a n´ avrhem a implementac´ı multimedi´aln´ıho centra pro GNU/Linux. Pr´ace zaˇc´ın´ a teoretick´ ym u ´vodem, ve kter´em je uveden pˇrehled jiˇz existuj´ıc´ıch aplikac´ı, operaˇcn´ıch syst´em˚ u, programovac´ıch jazyk˚ u a souˇcasn´eho hardwaru. Souˇc´ast´ı jsou tak´e v´ ysledky ankety na t´ema multim´edia v dom´acnosti. Ve druh´e ˇc´asti najdeme kompletn´ı n´avrh j´ adra syst´emu, rozvrˇzen´ı modul˚ u, n´astin moˇznosti ovl´ad´an´ı a kr´atk´e shrnut´ı testov´ an´ı bˇehem v´ yvoje. V z´ avˇeru jsou zachyceny v´ ysledky pr´ace a n´astin dalˇs´ıho v´ yvoje.
Kl´ıˇ cov´ a slova linux, java, mutlim´edia, video, fotografie, hudba, pˇrehr´avaˇc, v´ yvoj
Abstract This beachelor’s thesis is engaged in presentation of implementation of multimedia centre for GNU/Linux. The thesis begins with preambule summarized existing applications, operating systems, programming languages and current hardware. Another part analyses results of questionnare on the theme household multimedia. In the second part there is full presentation of kernel of the system, scheme of modules, vignette of operating system and short summary of testing procedure beeing in procedure of program creation. A brief summary judges results of the work and proposal of the next system development.
Keywords linux, java, mutlimedia, video, photos, music, player, development
Citace David Sulaiman: Dom´ ac´ı multimedi´aln´ı centrum, bakal´aˇrsk´a pr´ace, Brno, FIT VUT v Brnˇe, 2008
Dom´ ac´ı multimedi´ aln´ı centrum Prohl´ aˇ sen´ı Prohlaˇsuji, ˇze jsem tuto bakal´ aˇrskou pr´aci vypracoval samostatnˇe pod veden´ım pana doc. RNDr. Pavla Smrˇze Ph.D. ....................... David Sulaiman 12. kvˇetna 2008
c David Sulaiman, 2008.
Tato pr´ ace vznikla jako ˇskoln´ı d´ılo na Vysok´em uˇcen´ı technick´em v Brnˇe, Fakultˇe informaˇcn´ıch technologi´ı. Pr´ ace je chr´ anˇena autorsk´ym z´ akonem a jej´ı uˇzit´ı bez udˇelen´ı opr´ avnˇen´ı autorem je nez´ akonn´e, s v´yjimkou z´ akonem definovan´ych pˇr´ıpad˚ u.
Obsah ´ 1 Uvod
2
I
4
Teoretick´ yu ´ vod
2 Pˇ rehled softwaru multimedi´ aln´ıch center
5
3 Pˇ rehled dostupn´ ych technologi´ı 3.1 Operaˇcn´ı syst´emy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 Programovac´ı jazyky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3 Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7 7 7 8
4 V´ ysledky ankety
11
II
12
Realizace syst´ emu
5 J´ adro syst´ emu 5.1 Zas´ıl´ an´ı zpr´ av . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2 Konfigurace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13 13 14
6 Moduly 6.1 V´ ystupn´ı modul . ´ 6.2 Uvodn´ı obrazovka . 6.3 Videopˇrehr´ avaˇc . . 6.4 Prohl´ıˇzeˇc fotografi´ı 6.5 Hudebn´ı pˇrehr´ avaˇc
. . . . .
17 17 17 18 19 20
7 Ovl´ ad´ an´ı 7.1 Kl´ avesnice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21 21
8 Testov´ an´ı
22
9 Z´ avˇ er 9.1 V´ ysledky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.2 Dalˇs´ı v´ yvoj . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23 23 23
A Pˇ r´ılohy
27
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
1
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
Kapitola 1
´ Uvod Programy z oblasti multimedi´ aln´ıch center nahrazuj´ı vˇetˇs´ı mnoˇzstv´ı zaˇr´ızen´ı pro pr´aci s multim´edii, jako jsou DVD pˇrehr´ avaˇce a rekord´ery, video rekord´ery, HiFi vˇeˇze a audiosyst´emy, um´ı obsluhovat televizn´ı kartu a obsahuj´ı rozˇsiˇruj´ıc´ı funkce. Mezi rozˇsiˇruj´ıc´ı funkce patˇr´ı napˇr´ıklad n´ astroje pro jednoduch´ y stˇrih videa nebo jednoduch´e funkce pro pr´aci s fotografiemi vˇcetnˇe jejich prohl´ıˇzen´ı. Tyto funkce se pokouˇsej´ı implementovat tak´e v´ yrobci DVD pˇrehr´avaˇc˚ u a rekord´er˚ u. Jsou to ovˇsem pouze jedno´ uˇcelov´a zaˇr´ızen´ı. U multimedi´aln´ıch program˚ u se pˇredpokl´ ad´ a jako v´ ystupn´ı zaˇr´ızen´ı televizor nebo vˇetˇs´ı monitor a ovl´ad´ an´ı pomoc´ı d´ alkov´eho ovl´ ad´ an´ı. Hlavn´ım rysem je centralizovanost, to znamen´a, ˇze vˇsechny funkce umoˇzn ˇuje jedna aplikace nikoliv nˇekolik specializovan´ ych program˚ u. Kaˇzd´ y bˇeˇzn´ y operaˇcn´ı syst´em nab´ız´ı moˇznost pˇrehr´av´an´ı videa, hudby nebo prohl´ıˇzen´ı obr´azk˚ u. Nˇekter´e aplikace se pokouˇs´ı integrovat v´ıce funkc´ı do sebe napˇr´ıklad Windows MediaPlayer nebo WinAmp. Nen´ı vyjj´ımkou, ˇze tyto programy zaˇc´ınaj´ı b´ yt obt´ıˇznˇe ovladateln´e a uˇzivatel se se v nich h˚ uˇre orientuje. Jejich funkcionalita nen´ı vˇzdy zcela dotaˇzena do konce. Napˇr´ıklad Windows MediaPlayer neumoˇzn ˇuje pˇrehr´av´an´ı DVD nebo vkl´ad´an´ı titulk˚ u k film˚ um a je nutno pouˇz´ıt extern´ı program, kter´ y titulky vkl´ad´a. Ovl´ad´an´ı takov´ ychto program˚ u je koncipov´ ano pro pr´ aci s myˇs´ı ev. kl´avesnic´ı, nikoliv napˇr. pomoc´ı d´alkov´eho ˇ sen´ı t´eto situace nab´ızej´ı multimedi´aln´ı centra, kter´a se snaˇz´ı pˇrizp˚ ovl´ad´an´ı. Reˇ usobit svou funkcionalitu poˇzadavk˚ um uˇzivatel˚ u a jsou koncipov´ana pro snadn´e ovl´ad´an´ı myˇs´ı, kl´avesnic´ı ale i d´alkov´ ym ovladaˇcem. Multimedi´ aln´ı aplikace jsou bud’ samostatn´e aplikace spouˇstˇen´e v urˇcit´em operaˇcn´ım syt´emu nebo mohou b´ yt se syst´emem prov´az´any a spouˇst´ı se automaticky po startu syst´emu. Bˇeˇzn´ y uˇzivatel ani nezaznamen´ a start operaˇcn´ıho syst´emu, kter´ y je vhodnˇe skryt. V´ yhodou integrovan´ ych aplikac´ı je stoprocentn´ı pˇrizp˚ usoben´ı syst´emu pouze pro potˇreby aplikace a vyznaˇcuje se rychlejˇs´ım startem a niˇzˇs´ımi n´aroky na v´ ykon poˇc´ıtaˇce. Oproti tomu ˇreˇsen´ı s vyuˇzit´ım standardn´ıho operaˇcn´ıho syt´emu nab´ız´ı moˇznost vyuˇz´ıt bˇeˇzn´ ych program˚ u bez restartu syst´emu nebo z´ aroveˇ n pracovat spoleˇcnˇe pˇri pˇrehr´av´an´ı m´edi´ı napˇr´ıklad na druh´e obrazovce. Programy, kter´e existuj´ı v integrovan´em proveden´ı, se tak´e vyskytuj´ı v proveden´ı pro bˇeˇzn´ y operaˇcn´ı syst´em. Na poli operaˇcn´ıch syst´em˚ u jsou majoritn´ı syst´emy spoleˇcnosti Microsoft a pomalu s´ıl´ıc´ı GNU/Linux. Protoˇze jsem zast´ance a dlouholet´ y uˇzivatel a administr´ator syt´emu GNU/Linux, rozhodl jsem se vytvoˇrit aplikaci multimedi´aln´ıho centra pro GNU/Linux. Bude snadno rozˇsiˇriteln´e a upraviteln´e, na coˇz jsou pr´avˇe uˇzivatel´e GNU/Linuxu zvykl´ı. Jednou z moˇznost´ı ˇreˇsen´ı, kter´e by odpov´ıdalo linuxov´emu principu, je vytvoˇrit pouze uˇzivatelsk´e rozhran´ı a vyuˇz´ıvat jiˇz hotov´e aplikace pro pˇrehr´av´an´ı. Tato varianta je vˇsak silnˇe omezuj´ıc´ı a je v´ az´ ana na konkr´etn´ı aplikace. Tak´e moˇznosti u ´prav a rozˇs´ıˇren´ı st´av´aj´ıc´ıch 2
pˇrehr´avaˇc˚ u jsou miziv´e nemluvˇe o rozd´ıln´em ovl´ad´an´ı. Zvolil jsme nejflexibilnˇejˇs´ı variantu, a to program sloˇzen´ y z j´ adra a modul˚ u/plugin˚ u, kter´e se budou start o vlastn´ı pˇrehr´av´an´ı, zobrazov´ an´ı nebo ovl´ ad´ an´ı. y obsahuje n´astin jiˇz vytvoˇren´ ych proPrvn´ı ˇc´ ast t´eto pr´ ace je teoretick´ yu ´vod (I), kter´ gram˚ u pro multimedi´ aln´ı centra (2). Obsahuje tak´e pˇrehled rozd´ıl˚ u mezi operaˇcn´ımi syst´emy Microsoft Windows, MacOS a GNU/Linux, shrnut´ı programovac´ıch jazyk˚ u dostupn´ ych v Liyv´ a souˇcasn´ ym hardwarem z pohledu na multimedi´aln´ı vyuˇzit´ı. nuxu. Kapitola (3) se zab´ Z´avˇer t´eto ˇc´ asti obsahuje struˇcn´e shrnut´ı ankety o multim´edi´ıch v dom´acnosti (4), kterou jsem v r´ amci pr´ ace provedl. Druh´ a ˇc´ ast popisuje realizaci syt´emu (II) od n´avrhu j´adra syst´emu (5), pˇres n´avrh a realizaci modul˚ u (6). D´ ale jsem se zab´ yval ovl´ad´an´ım syst´emu (7) a z´avˇereˇcn´a kapitola se vˇenuje testov´ an´ı (8).
3
ˇ ast I C´
Teoretick´ yu ´ vod
4
Kapitola 2
Pˇ rehled softwaru multimedi´ aln´ıch center Software implementuj´ıc´ı multimedi´aln´ı centra jiˇz nˇejakou dobu existuje, st´ale se vyv´ıj´ı a z´arovˇen ˇ vznikaj´ı i varianty, kter´e se plnohodnotn´emu centru jen podobaj´ı. Software pro multimedi´ aln´ı centrum lze zakoupit nebo z´ıskat spoleˇcnˇe s jin´ ym softwarem, napˇr´ıklad avaj´ı v´ yrobci hardwaru, napˇr´ıklad v´ yrobci televizn´ıch karet. Drtiv´ a Nero1 , software tak´e dod´ vˇetˇsina tˇechto karet dod´ av´ a programy pouze pro operaˇcn´ı syt´em Microsoft Windows, tyto programy nejsou pˇr´ıliˇs propracovan´e. Lepˇs´ı varianty jsou Windows Media Center [6] nebo software vyvinut´ y speci´ alnˇe pro pr´aci s prod´avan´ ym zaˇr´ızen´ım. Jako pˇr´ıklad bych uvedl ˇspiˇckov´ y software od spoleˇcnosti Pinacle nebo jiˇz ne tak zdaˇril´ y od spoleˇcnosti AverMedia.
Obr´ azek 2.1: Windows XP Media Center Edition 2005, zdroj [16] 1
Software pro vypalov´ an´ı, dod´ av´ an k vˇetˇsine CD/DVD vypalovaˇcek
5
Podpora GNU/Linuxu v´ yrobci je jen nepatrn´a, ve vˇetˇsinˇe pˇr´ıpad˚ u nedod´avaj´ı ovladaˇce ani software. Ten ovˇsem nen´ı zcela podstatn´ y. Linuxov´a komunita tyto probl´emy ˇreˇs´ı tvorbou vlastn´ıch ovladaˇc˚ u, kter´e integruj´ı pˇr´ımo do j´adra syt´emu. Tak´e open source software, kter´ y vznik´ a, je mnohdy kvalitnˇejˇs´ı neˇz software dod´avan´ y. Je tˇreba ˇr´ıci, ˇze ten v nˇekter´ ych pˇr´ıpadech slouˇz´ı pouze pro uk´ azku funkˇcnosti zaˇr´ızen´ı. V kaˇzd´em pˇr´ıpadˇe je vˇenov´ano v´ıce n´aklad˚ u na v´ yrobu hardwaru neˇz doprovodn´eho softwaru. Jedinou v´ yjimku v tomto ohledu zˇrejmˇe tvoˇr´ı spoleˇcnost Pinacle. Jak jsem se jiˇz zm´ınil, Linux ˇreˇs´ı software po sv´em. Je vyv´ıjeno nˇekolik multimedi´aln´ıch y jako all-in-one, kter´ y zahrnuje obsahuje vˇse center, napˇr´ıklad Linux MCE [3] oznaˇcovan´ naˇc si jen vzpomenete. U Linuxu nen´ı takov´ y rozd´ıl mezi programem spouˇstˇen´ ym v klasick´e linuxov´e distribuci nebo upravenou distribuc´ı. Linux s´am o sobˇe je velice variabiln´ı a pˇrizp˚ usobiv´ y. Existuj´ı vˇsak jiˇz hotov´a ˇreˇsen´ı multimedi´aln´ıho centra bez nutnosti dalˇs´ı instalace a administrace syst´emu nebo tak zvan´e Live distribuce, kter´e se spouˇstˇej´ı z CD a po naˇcten´ı syst´emu do pamˇeti umoˇzn´ı toto CD vymˇenit za multimedi´aln´ı titul.
Obr´ azek 2.2: Linux MCE, zdroj [3]
Dalˇs´ım velice zaj´ımav´ ym centrem, bohuˇzel bez moˇznosti pr´ace s televiz´ı, je Elisa [1]. Na prvn´ı pohled vypad´ a velice zdaˇrile, nepodaˇrilo se mi ovˇsem po instalaci spustit film y je a ani lok´ aln´ı soubor s hudbou. Varantou ˇreˇsen´ı pomoc´ı Live CD je GeeXboX [2], kter´ postaven na programu MythTV [7]. Za zm´ınku stoj´ı, ˇze cel´a distribuce o velikosti pouh´ ych 6,8MB se zkop´ıruje do pamˇeti a t´ım umoˇzn ˇuje vyjmut´ı zdrojov´eho CD a vloˇzen´ı poˇzadov´eho m´edia.
6
Kapitola 3
Pˇ rehled dostupn´ ych technologi´ı 3.1
Operaˇ cn´ı syst´ emy
Na poli operaˇcn´ıch syst´em˚ u v´ alˇc´ı tˇri druhy. Mac OS X, kter´ y se stadardnˇe dod´av´a s poˇc´ıtaˇci Macintosh firmy Apple. Jeho velkou pˇrednost´ı je velice ergonomick´ y zp˚ usob pr´ace a vysok´ a u ´roveˇ n uˇzivatelsk´eho rozhran´ı. Tento syst´em m´a pokroˇcil´e technologie pro pr´aci s multim´edii. Je moˇzn´e ho nainstalovat i na poˇc´ıtaˇce typu PC, ale i kdyˇz patˇr´ı mezi silnˇe minoritn´ı syst´emy, m´ a sv´e uˇzivatele. Na vˇetˇsinˇe prod´ avan´ ych PC nebo notebooc´ıch je jiˇz v´ yrobcem nebo prodejcem instalov´an operaˇcn´ı syst´em Microsoft Windows. Tato situace se vˇsak pomalu mˇen´ı a pˇrich´azej´ı osobn´ı poˇc´ıtaˇce s GNU/Linux. Microsoft patˇr´ı mezi nejvˇetˇs´ı dodavatele operaˇcn´ıch syst´em˚ u pro PC jiˇz od jejich poˇc´ atku. Prvn´ı operaˇcn´ı syst´em, kter´ y byl dod´an toto spoleˇcnost´ı pro spoleˇcnost IBM byl 16bitov´ y MS DOS. N´asledovaly grafick´e nadstavby, po vzoru program˚ u spoleˇcnosti Apple, Windows 3 a Windows 3.11. Nejvˇetˇs´ım skokem bylo uveden´ı Windows 95, kter´e jiˇz nebyly pouze grafickou nadstavbou DOSu a mˇeli nativn´ı grafick´e rozhran´ı. N´asledovala ˇrada syst´em˚ u Windows 98, NT, Milenium, 2000. Dneˇsn´ımu trhu dominuj´ı Windows XP a Windows Vista. Kaˇzd´a nov´a verze pˇrin´aˇs´ı zmˇeny, nˇekter´e jsou v´ıce pozitivn´ı nˇekter´e m´enˇe. Posledn´ım syst´emem, kter´ y postupnˇe zvyˇsuje sv˚ uj pod´ıl na trhu je GNU/Linux. Autorem j´ adra syst´emu Linux je Linus Torvalds. Tento syst´em je tvoˇren j´adrem a skupinou program˚ u, kterou m´ a moˇznost si kaˇzd´ y uˇzivatel upravit. Je vyd´av´an v mnoha distribuc´ıch, kter´e se od sebe liˇs´ı sadou standardnˇe dod´avan´ ych program˚ u, spr´avou konfigurace syst´emu, bal´ıˇckovac´ım syst´emem1 a v neposledn´ı ˇradˇe pˇr´ıstupem k uˇzivateli. Linux ve sv´em poˇc´atku byl textov´ y stejnˇe jako Microsoft DOS, ale m´a mnoho grafick´ ych nadstaveb. Linuxov´a koncepce jiˇz od poˇc´ atku vych´ az´ı s multiuˇzivatelsk´eho a multiprocesov´eho prostˇred´ı. Toto s sebou nese v´ yhody i nev´ yhody. Pro bˇeˇzn´eho uˇzivatele to m˚ uˇze b´ yt i vhodnˇe skryto, avˇsak ponech´ av´ a si sv´e flexibiln´ı a bezpeˇcnostn´ı aspekty. Z hlediska multimedi´aln´ıho pouˇzit´ı je jiˇz rovnocenn´ y s Microsoft Windows, u kter´ ych to bylo vˇzdy l´akadlem.
3.2
Programovac´ı jazyky
Jelikoˇz jsem zvolil jako prioritn´ı operaˇcn´ı syst´emu GNU/Linux, vypl´ yvaj´ı z toho i pouˇziteln´e programovac´ı jazyky. Pro GNU/Linux je pˇreloˇziteln´a a spustiteln´a velk´a ˇsk´ala jazyk˚ u, 1
V Linuxu se instalovateln´ y program naz´ yv´ a bal´ıˇcek. Existuj´ı n´ astroje pro snadnou instalaci, spr´ avu a odebr´ an´ı bal´ıˇcku.
7
vˇcetnˇe napˇr´ıklad jazyka Pascal, kter´ y je urˇcen hlavnˇe pro studijn´ı u ´ˇcely, nebo t´eˇz Assembler, jazyk symbolick´ ych instrukc´ı, ve kter´em by byla pr´ace na takto rozs´ahl´em projektu jen velice tˇeˇzko providiteln´ a. Dalˇs´ım krit´eriem byla i znaˇcn´a rozˇs´ıˇrenost jazyka, aby moduly mohli vytv´ aˇret i program´ atorsky schopn´ı uˇzivatel´e syst´emu. Jazyk, kter´ y k Linuxu neodmyslitelnˇe patˇr´ı, je jazyk C. Je to jazyk umoˇzn ˇuj´ıc´ı strukturovan´e programov´ an´ı, pˇr´ım´ y pˇr´ıstup do pamˇeti pomoc´ı ukazatel˚ u a tvoˇr´ı velmi kompaktn´ı aplikace. Je v nˇem naps´ ano napˇr´ıklad j´adro operaˇcn´ıho syst´emu Linux, pˇrekladaˇc gcc a dalˇs´ı. Pro n´as nen´ı od vˇeci, ˇze pˇrehr´ avaˇc MPlayer je tak´e naps´an v C. C++ je objektovˇe orientovan´ y jazyk vytvoˇren´ y jako rozˇs´ıˇren´ı jazyka C. Jazyk C je tud´ıˇz podmnoˇzinou jazyka C++ ovˇsem aˇz na nˇekolik pˇresnˇe definovan´ ych v´ yjimek. Oba jazyky je moˇzno pˇreloˇzit pˇrekladaˇcem pro C++. C++ vˇsak nen´ı ˇcistˇe objektovˇe orientovan´ y jazyk a podporuje nˇekolik programovac´ıch styl˚ u (paradigmat), procedur´aln´ı, objektovˇe orientovan´e a generick´e programov´ an´ı. Perl je reprezentant interpretovan´eho programovac´ıho jazyka. V zaˇc´atc´ıch rozvoje internetu se pouˇz´ıvat pro tvorbu CGI skript˚ u. CGI je protokol pro propojen´ı webov´eho serveru a extern´ı aplikace. Jazyk byl vytvoˇren jako n´ahrada jazyka AWK a interpretu sh. Motem toho jazyka je heslo: “d´ a se to udˇelat v´ıce zp˚ usoby”. Umoˇzn ˇuje ps´at sloˇzit´e programy s vhodnou strukturou, ale dovol´ı napsat i kr´atk´ y program, a to velice rychle. Program´ator bez vˇetˇs´ıch zkuˇsenost´ı vˇsak snadno vytvoˇr´ı nesrozumiteln´ y a ˇspatnˇe udrˇzovateln´ y k´od. Python je stejnˇe jako pˇredchoz´ı Perl jazyk interpretovan´ y. Oba patˇr´ı mezi takzvan´e skriptovac´ı jazyky. Python vˇsak m´a vˇetˇs´ı moˇznosti a byl navrˇzen tak, aby umoˇzn ˇoval tvorbu velk´ ych aplikac´ı obsahuj´ıc´ı grafick´e rozhran´ı, kter´e se m˚ uˇze tvoˇrit v r˚ uzn´ ych variant´ ach (wxPython, PyQt..). Python patˇr´ı mezi nejsn´aze osvojiteln´e programovac´ı jazyky a je tak´e d˚ ukazem, ˇze jazyk vhodn´ y pro v´ yuku je tak´e vhodn´ y k praktick´emu pouˇzit´ı. Stejnˇe jako Perl umoˇzn ˇuje ps´ at kr´ atk´e a rychl´e programy. Na druhou stranu obsahuje rysy pro psan´ı velk´ ych projekt˚ u, napˇr´ıklad podporu prostor˚ u jmen, zachyt´av´an´ı v´ yjimek a prostˇredky pro tvorbu test˚ u. Spoleˇcnost Sun Microsystems v roce 1995 pˇredstavila objektov´ y jazyk Java[17]. Patˇr´ı mezi nejpouˇz´ıvanˇejˇs´ı jazyky na svˇetˇe, a to d´ıky sv´e pˇrenositelnosti. M˚ uˇze b´ yt spuˇstˇena na mnoha platform´ ach jako jsou mobiln´ı telefony a zabudovan´a zaˇr´ızen´ı, desktopov´e poˇc´ıtaˇce s r˚ uzn´ ymi operaˇcn´ımi syst´emy i distribuovan´e syst´emy. Je to jazyk interpretovan´ y, avˇsak m´ısto skuteˇcn´eho strojov´eho k´ odu se vytv´aˇr´ı mezik´od (bytecode), kter´ y je pak interpretov´ an virtu´aln´ım strojem na libovoln´em zaˇr´ızen´ı. Je-li nˇejak´a ˇc´ast k´odu ˇcasto pouˇz´ıvan´a, interpret provede optimalizaci a bytecode pˇreloˇz´ı do strojov´eho k´odu. Java neumoˇzn ˇuje nˇekter´e program´ atorsk´e konstrukce, t´ımto pˇrisp´ıv´a k tvorbˇe spolehliv´eho softwaru. Zpr´avu pamˇeti zajiˇst’uje takzvan´ y Garbage collector, kter´ y vyhled´av´a nepouˇz´ıvan´e ˇc´asti pamˇeti a uvolˇ nuje je pro dalˇs´ı pouˇzit´ı. Nyn´ı je Java vyv´ıjena jako open source.[14] Z tˇechto jazyk˚ u jsem si zvolil Javu, kter´a pˇrin´aˇs´ı v´ yhody pˇrenositelnosti a je rozˇs´ıˇrena mezi program´ atory. Dalˇs´ı v´ yhodou je snadn´a tvorba uˇzivatelsk´eho rozhran´ı pomoc´ı tˇr´ıdy Swing, kter´ a se nach´ az´ı v javax.swing. Pr´ace Javy s multim´edii nen´ı ovˇsem pˇr´ıliˇs rozvinut´ a. Existuje bal´ık Java Media Framework (JMF), kter´ y je jedinou moˇznost´ı pˇrehr´av´an´ı a pr´ ace s videem. [19]
3.3
Hardware
Osobn´ı poˇc´ıtaˇce, se kter´ ymi se setk´av´ame v dneˇsn´ı dobˇe jsou jiˇz tak v´ ykonn´e, ˇze nem´a smysl uvaˇzovat na omezen´ımi pˇri pˇrehr´av´an´ı multim´edi´ı. Samotn´e operaˇcn´ı syst´emy spoleˇcnosti
8
Microsoft kontroluj´ı pˇri instalaci minim´aln´ı poˇzadavky syst´emu. Napˇr´ıklad modern´ı Windows Vista poˇzaduje minim´ alnˇe 512MB pamˇeti. Tato velikost je jiˇz dostaˇcuj´ıc´ı ke spouˇstˇen´ı t´emˇeˇr libovoln´ ych aplikac´ı vˇcetnˇe program˚ u psan´ ych v Javˇe. Pro pˇrehr´ av´ an´ı hudby jsou k dispozici r˚ uzn´e varianty zvukov´ ych zaˇr´ızen´ı. Jako standard 2 ych karet dosahuje 24bit˚ u. V´ ystup se dnes bere 16 bitov´ a ˇs´ıˇrka p´ asma , u kvalitnˇejˇs´ıch zvukov´ zvukov´ ych karet m˚ uˇze b´ yt bud’ analogov´ y vyveden´ y pomoc´ı konektor˚ u jack nebo digit´aln´ı SPDIF, kter´ y m˚ uˇze b´ yt pˇren´ aˇsen pomoc´ı vodiˇc˚ u nebo optick´ ych kabel˚ u. Z pohledu m´e pr´ ace je nejd˚ uleˇzitˇejˇs´ım krit´eriem poˇcet v´ ystupn´ıch kan´al˚ u. Tato dvojice ˇc´ısel ve form´ atu X.Y ud´ av´ a poˇcet mal´ ych reproduktor˚ u X rozm´ıstˇen´ ych po m´ıstnosti, tak zvan´ ych satelit˚ u. Nejˇcastˇeji v poˇctech 2,4,5 a 7. Druh´e ˇc´ıslo Y ud´av´a poˇcet basov´ ych reproduktor˚ u, takzvan´ ych subwoofer˚ u. Nejˇcastˇejˇs´ım proveden´ım je 5.1, kde jsou 4 satelity rozm´ıstˇeny ide´ alnˇe v roz´ıch m´ıstnosti, stˇredov´ y satelit nad obrazovkou. Na pozici subwooferu pˇr´ıliˇs nez´ aleˇz´ı. Pˇri pˇrehr´ av´ an´ı film˚ u je nutn´e zajistit odpov´ıdaj´ıc´ı zobrazen´ı obrazu. Na tom se pod´ılej´ı dvˇe komponenty, grafick´ a karta a monitor popˇr´ıpadˇe televizor. U souˇcasn´ ych grafick´ ych karet se jiˇz neˇreˇs´ı probl´em se zobrazov´an´ım urˇcit´eho rozliˇsen´ı a vysok´eho poˇctu barev, takzvan´e barevn´e hloubky. Dom´enou dneˇsn´ıch karet je zobrazov´an´ı trojrozmˇern´ ych sc´en a zobrazov´ an´ı libovoln´eho videa jim neˇcin´ı probl´em. P˚ uvodn´ı CRT3 monitory, kter´e byly pˇripojov´any pomoc´ı analogov´eho konektoru VGA (Video Graphics Array), se z relativnˇe mal´ ych 13” ˇcernob´ıl´ ych monitor˚ u se postupnˇe vyvinuly v barevn´e monitory dosahuj´ıc´ı velikosti aˇz 22” a plnˇe barevn´eho obrazu. Mezi CRT monitory se postupnˇe zaˇcaly prosazovat LCD4 displeje, kter´e nab´ızej´ı vˇetˇs´ı plochu aˇz 24” a v´ yraznˇe tenˇc´ı proveden´ı vˇsak s niˇzˇs´ım rozliˇsen´ım. Moˇznost pˇripojen´ı pomoc´ı VGA a z´aroveˇ n digit´ aln´ıho rozhran´ı DVI (Digital Visual Interface) je v´ yhodou. Rozhran´ı DVI existuje ve dvou varant´ ach DVI-D, kter´e obsahuje pouze digit´aln´ı sign´al a DVI-I, kter´ y obsahuje oba druhy sign´ alu, digit´aln´ı i analogov´ y. Z rozhran´ı DVI-I je moˇzn´e extrahovat pouze analogov´ y sign´ al a z´ıskat tak rozhran´ı VGA. Mezi novinky patˇr´ı rozhran´ı HDMI (High-Definition Multimedia Interface). Toto rozhran´ı je ˇcistˇe digit´aln´ı s moˇznost´ı pˇren´aˇset video v kvalitˇe high-definition a zvuku aˇz o osmi kan´alech. HDMI je moˇzno tak´e z´ıskat z rozhran´ı DVI-D nebo DVI-I ovˇsem bez moˇznosti pˇrenosu zvuku. Ten se mus´ı pˇren´aˇset zvl´aˇst’. K pˇripojen´ı klasick´eho televizoru se vyuˇz´ıv´a konektoru a normy S-Video, jehoˇz v´ ysputp vˇsak mus´ı b´ yt pˇr´ıtomn´ y na grafick´e kartˇe. Tato norma pˇren´aˇs´ı sign´al analogovˇe v rozliˇsen´ı klasick´eho televizoru. Nem´ a-li televizor konektor pro S-Video existuj´ı redukce mezi S-Video a cinch a tak´e S-Video a scart. LCD televizory jiˇz disponuj´ı vstupy pro pˇripojen´ı PC. Mezi standardn´ı rozhran´ı patˇr´ı HDMI, kter´e se vyuˇz´ıv´a i k pˇripojen´ı ostatn´ıch zaˇr´ızen´ı, d´ale b´ yv´ a k dispozici VGA ˇci DVI. K pˇrehr´ av´ an´ı bˇeˇzn´ ych multimedi´aln´ıch disk˚ u DVD a CD jsou poˇc´ıtaˇce vybaveny vhodn´ ymi mechanikami, kter´e umoˇzn ˇuj´ı nejen ˇcten´ı, ale tak´e z´apis. Zdrojem multim´edi´ı nemus´ı b´ yt jen CD nebo DVD ale tak´e soubory uloˇzen´e na lok´aln´ıch pevn´ ych disc´ıch, jejichˇz kapacity jiˇz pˇrekroˇcili 500GB. Dalˇs´ım zdrojem m˚ uˇze b´ yt internet. Internetov´a r´adia jsou jiˇz ˇ a televize m´a na internetu dostupn´e sv´e poˇrady. bˇeˇzn´a a napˇriklad Cesk´ Ovˇsem mezi nejstarˇs´ı m´edia patˇr´ı rozhlasov´e a televizn´ı vys´ıl´an´ı. Aby bylo moˇzn´e pˇrij´ımat tyto technologie, je nutn´e m´ıt televizn´ı kartu. Existuj´ı tˇri typy proveden´ı, analogov´a, digit´ aln´ı a hybridn´ı, kter´ a kombinuje pˇredchoz´ı dvˇe moˇznosti. Karta analogov´a slouˇz´ı 2
Poˇcet bit˚ u pˇreveden´ ych na audiosign´ al Cathode ray tube - katodov´ a trubice 4 Liquid crystal display - display z tekut´ ych krystal˚ u 3
9
k pˇr´ıjmu analogov´eho televizn´ıho a radiov´eho vys´ıl´an´ı, kter´e je dostupn´e na vˇetˇsinˇe naˇseho u ´zem´ı. Na zbytku, kde jiˇz probˇehla tak zvan´a digitalizace, se vyuˇzije karta digit´aln´ı. Ovˇsem n´akup karty analogov´e je silnˇe neperspektivn´ı z´aleˇzitost, vznikla tedy proto karta hybridn´ı umoˇzn ˇuj´ıc´ı pˇrij´ımat oba druhy vys´ıl´an´ı. K tˇemto kart´ am se ve velk´e vˇetˇsinˇe pˇr´ıpad˚ u dod´av´a d´alkov´e ovl´ad´an´ı. Bohuˇzel vˇetˇsina v´ yrobc˚ u je dod´ av´ a jen mal´ a a ne pˇr´ıliˇs ergonomicky ˇreˇsen´a. Pomineme-li n´ahradu dodan´eho d´alkov´eho ovladaˇce univerz´ aln´ım ovladaˇcem, kter´ y ve vyˇsˇs´ı cenov´e kategorii b´ yv´a znaˇcnˇe propracovan´ y vˇcetnˇe dotykov´eho displeje, kompletn´ı programovatelnosti a tvorby maker, nab´ız´ı se moˇznost koupˇe samostatn´eho ovl´ad´an´ı. D´alkov´e ovl´ ad´ an´ı je moˇzno realizovat s vyuˇzit´ım infraˇcerven´eho sign´alu, jako je to napˇr´ıklad u televizn´ıch pˇrij´ımaˇc˚ u nebo pomoc´ı r´adiov´eho sign´alu. V´ yhodou r´adiov´eho ˇreˇsen´ı nen´ı nutnost pˇr´ım´e viditelnosti mezi ovladaˇcem a pˇrij´ımaˇcem. Jinak je tomu u infraˇcerven´ ych ovladaˇc˚ u. Ty jsou ovˇsem ˇcastˇejˇs´ı neˇz r´adiov´e a vyr´ab´ı se napˇr´ıklad s pˇrij´ımaˇcem do 5,25” y obsahuje tak´e display pro zobrazen´ı informac´ı pr´avˇe pro multimedi´aln´ı cenpozice5 , kter´ tra. Spoleˇcnost vyr´ ab´ı se tak´e poˇc´ıtaˇcov´e skˇr´ınˇe obsahuj´ıc´ı infraˇcerven´ y pˇrij´ımaˇc a jsou vzhledovˇe podobn´e ostatn´ı elektronice.
5
Pozice na pˇren´ı stranˇe poˇc´ıtaˇcov´e skˇr´ınˇe, umist’uj´ı se tam napˇr´ıklad CD/DVD mechaniky
10
Kapitola 4
V´ ysledky ankety Pro zjiˇstˇen´ı vyuˇzitelnosti moˇzn´ ych funkc´ı multimedi´aln´ıho centra jsem provedl v´ yzkum formou ankety, kter´e se z´ uˇcastnilo 30 respondent˚ u, ve sloˇzen´ı 43% muˇzi a 57% ˇzeny. Vˇek respondet˚ u se pohyboval v rozmez´ı od 15 do 60 let. Nejv´ıce dotazovan´ ych bylo ve vˇeku od 15 do 35 let (80%). V 93% vlastn´ı osobn´ı poˇc´ıtaˇc nebo notebook a vˇsichni maj´ı pˇr´ıstup k internetu. Poˇc´ıtaˇc k pˇrehr´ av´ an´ı film˚ u pouˇz´ıv´a 50% respondent˚ u a z toho 20% dotazovan´ ych osob m´a propojen´ y poˇc´ıtaˇc s klasickou nebo LCD televiz´ı. 23% z celkov´eho poˇctu u ´ˇcastn´ık˚ u ankety pouˇz´ıv´ a k pˇrehr´ av´ an´ı film˚ u poˇc´ıtaˇc pouze vyj´ımeˇcnˇe. N´asleduj´ıc´ı tabulka shrnuje rozloˇzen´ı sestav reprodutor˚ u u dotazovan´ ych osob: Rozloˇ zen´ı reprodutor˚ u 2.0 2.1 5.1 6.1
Poˇ cet procent 74% 7% 15% 4%
Nen´ı trendem vyuˇz´ıvat poˇc´ıtaˇc jako televizn´ı pˇr´ıjmaˇc, vˇetˇsina lid´ı vyuˇz´ıv´a klasickou televizi a tomu odpov´ıdal i v´ ysledek. 75% dotazovan´ ych nevlastn´ı televizn´ı tuner. Majitel´e analogov´eho a digit´ aln´ıho tuneru jsou zastoupeni shodnˇe 11%. Hybridn´ı tuner vlastn´ı pouze 4% respodent˚ u. Z v´ ysledku ankety vypl´ yv´ a, ˇze aplikace se obejde bez moˇznosti nahr´av´an´ı vys´ılan´ ych poˇrad˚ u, protoˇze cel´ a polovina dot´ azan´ ych poˇrady nenahr´av´a a tˇech, kteˇr´ı nahr´avaj´ı je pouze 13%. Zbytek nahr´ av´ a pouze minim´alnˇe nebo vyj´ımeˇcnˇe. Nejv´ıce vyuˇz´ıvan´ ym form´ atem videa je DVD, n´asleduje televizn´ı vys´ıl´an´ı. Komprimovan´e form´ aty DivX a MPEG obsadili tˇret´ı a ˇctvrtou pozici v ˇzebˇr´ıˇcku obl´ıbenosti a t´ım pˇrekonali form´ at HD video, kter´ y se neoˇck´avanˇe um´ıstil aˇz na posledn´ım m´ıstˇe. Zˇrejm´ ym d˚ uvodem je jeho mal´ a rozˇs´ıˇrenost v prodeji a pro pln´e vyuˇz´ıt´ı je nutno vlastnit celkem n´akladnou plazmovou nebo LCD televizi podporuj´ıc´ı HD rozliˇsen´ı. 63% respondet˚ u poslouch´ a ˇziv´e r´adiov´e vys´ıl´an´ı a 40% dot´azan´ ych se vˇenuje tek´e poslechu digit´ aln´ıch skladeb ve from´atu audio CD a MP3. Mezi nejobl´ıbenˇejˇs´ı nosiˇce videa patˇr´ı disky DVD, n´ asleduj´ı pevn´e disky spoleˇcnˇe s CD. Pouze 17% respondent˚ u nepouˇz´ıv´ a v´ ypoˇcetn´ı techniku k prohl´ıˇzen´ı fotografi´ı, a proto se mutimedi´aln´ı aplikace neobejde bez prohl´ıˇzeˇce fotografi´ı.
11
ˇ ast II C´
Realizace syst´ emu
12
Kapitola 5
J´ adro syst´ emu uleˇzitˇejˇs´ı U aplikace, kter´ a m´ a b´ yt snadno rozˇsiˇriteln´a, upraviteln´a ˇci skinovateln´a1 , je nejd˚ ’ souˇc´ast´ı j´ adro. Tato ˇc´ ast programu zajiˇst uje nahr´av´an´ı modul˚ u, jejich spr´avu a spouˇstˇen´ı, mus´ı umoˇzn ˇovat pr´ aci s konfiguraˇcn´ım souborem a tak´e umoˇznit modul˚ um mezi s sebou komunikovat. V programovac´ım jazyku Java nebyl probl´em implementovat naˇc´ıt´an´ı modul˚ u, aˇz kdyˇz bude vyˇzadov´ ano jejich spuˇstˇen´ı. Pro spr´avu modul˚ u je vyhrazena tˇr´ıda ModuleManager, kter´a obsahuje metody pro nahr´ av´an´ı tˇr´ıd a tak´e metody pro vyhled´av´an´ı v jiˇz nahran´ ych modulech. Jako modul je oznaˇcena ˇc´ ast programu, kter´a zajiˇst’uje jednu ˇcinnost, napˇr´ıklad pˇrehr´avaˇc videa. Vˇsechny moduly maj´ı svou nadˇrazenou tˇr´ıdu, kter´a je um´ıstˇena v bal´ıku pluginClasses. Tyto tˇr´ıdy zajiˇst’uj´ı z´akladn´ı inicializaci nahr´avan´eho modulu, mimo jin´e i odstranˇen´ı povolen´e zpr´ avy Init z pˇrij´ıman´ ych zpr´av. Dalˇs´ı funkc´ı nadˇrazen´e tˇr´ıdy je definov´ an´ı povinn´ ych akc´ı, kter´e by mˇely m´ıt v modulu svou funkcionalitu. Pro n´azornost uv´ad´ım dalˇs´ı pˇr´ıklad: modul pro zobrazen´ı u ´vodn´ı obrazovky mus´ı reagovat vˇzdy na zpr´avy o pohybu, proto m´ a jeho nadˇrazen´a tˇr´ıda InitScreen nadefinov´any abstraktn´ı metody pro tyto zpr´ avy. Definoval jsem tyto nadˇrazen´e tˇr´ıdy: • Controller - tˇr´ıda ovl´ adac´ıch zaˇr´ızen´ı: kl´avesnice, myˇs • InitScreen - tˇr´ıda pro u ´vodn´ı obrazovky • Output - tˇr´ıda pro zobrazov´an´ı v´ ystupu • Player - tˇr´ıda pro moduly pˇrehr´avaˇc˚ u • Module - nadtˇr´ıda zde uveden´ ych tˇr´ıd, obsahuje metody pro pr´aci se zpr´avami
5.1
Zas´ıl´ an´ı zpr´ av
V modulov´em syst´emu je nutn´e m´ıt definov´anu komunikaci mezi jednotliv´ ymi ˇc´astmi syst´emu. Aby bylo rozhran´ı dostateˇcnˇe univerz´aln´ı, je vytvoˇrena tˇr´ıda Message, kter´a obsahuje n´azev zas´ılan´e zpr´ avy a dalˇs´ı doplˇ nuj´ıc´ı data. Ta jsou zat´ım omezena pouze na String a Component. V tuto chvily nebylo poˇreba v´ıce typ˚ u. Zpr´ava se d´a adresovat libovoln´emu 1
zmˇena vzhledu aplikace
13
modulu nebo jejich nadtˇr´ıdˇe. Pokud jako adres´at bude uvedena tˇr´ıda Module bude zpr´ ava doruˇcena vˇsem modul˚ um. Zpr´ ava se zas´ıl´ a metodou messageSender(Message message, Class class). Tato metoda vyuˇzije ModuleManager k z´ısk´an´ı vˇsech naˇcten´ ych modul˚ u, kter´e jsou odpov´ıdaj´ı tˇr´ıdˇe class. N´ aslednˇe je u kaˇzd´eho adresovan´eho modulu vol´ana metoda messageReciver. Ta z´ısk´ av´ a z actionMap podle textu zpr´avy pˇr´ısluˇsnou metodu, kterou spust´ı a jako jedin´ y parametr j´ı pˇred´ a zpr´ avu Message. Chce-li modul pˇrij´ımat zpr´ avy s urˇcit´ ym textem, mus´ı je m´ıt zaregistrovan´e, k tomu slouˇz´ı metoda addInActionList(String actionText,Method method) implementovan´ a v nejvyˇsˇs´ı nadtˇr´ıdˇe Module. Registrace zpr´avy spoˇc´ıv´a v uloˇzen´ı kl´ıˇce actionText do hash mapy actionMap a jako hodnota je uloˇzena pˇriˇrazen´a metoda method. Objekt actionMap je reprezentov´ an pomoc´ı HashMapy pro rychl´e vyhled´av´an´ı podle kl´ıˇc˚ u. Pro snadnˇejˇs´ı vyuˇz´ıv´ an´ı byla metoda addInActionList(String actionText,Method method) pˇret´ıˇzena metodou addInActionList(Message actionMessage,Method method). V´ yhodou je jednoduˇsˇs´ı z´ apis, kter´ y program´atora nenut´ı ze zpr´avy extrahovat jej´ı text, ale m˚ uˇze pˇredat celou zpr´ avu. V metodˇe je ze zpr´avy z´ısk´an jej´ı text a pak je vol´ana metoda addInActionList pouˇz´ıvaj´ıc´ı pouze text zpr´avy a jemu pˇriˇrazenou metodu. Objekt do tˇr´ıdy Message byl pˇrid´an dodateˇcnˇe z nutnosti nepˇred´avat zpr´avou pouze pˇr´ıkazy, ale i objekty, kter´e se maj´ı vyuˇz´ıt. Napˇr´ıklad pˇri zobrazov´an´ı prvk˚ u jsou vol´any zpr´avy pro moduly nadtˇr´ıdy Output a jako Component maj´ı objekt pro vloˇzen´ı na zobrazovac´ı plochu. Ve tˇr´ıdˇe zpr´ avy jsou pouze dva datov´e objekty, ale tˇr´ıda m˚ uˇze b´ yt rozˇs´ıˇrena. Konkr´etn´ı objekty na m´ısto objektu Object byly zvoleny jako bezpeˇcnostn´ı opatˇren´ı, aby nedoˇslo omylem ke ˇspatn´emu pˇretypov´an´ı.
5.2
Konfigurace
Aplikace tohoto rozsahu jiˇz potˇrebuj´ı moˇznosti konfigurace. Vhodn´e a z´aroveˇ n ˇciteln´e uloˇzen´ı konfigurace je ve form´ atu XML (Extensible Markup Language) coˇz v pˇrekladu znamen´ a rozˇsiˇriteln´ y znaˇckovac´ı jazyk. Jazyk XML byl vyvinut pro snadn´e vytv´aˇren´ı znaˇckovac´ıch jazyk˚ u. Jeho urˇcen´ı je pro pˇrenos dat mezi aplikacemi nebo pro ukl´ad´an´ı strukturovan´ ych dat bez d˚ urazu na vzhled.[13] V´ yhodou XML je snadn´ a ˇcitelnost ˇclovˇekem i poˇc´ıtaˇcem. Pro pr´ aci s konfiguraˇcn´ım souborem byla vytvoˇrena tˇr´ıda Config, jej´ıˇz n´avrh jsem znaˇcnˇe podcenil. Pˇri n´ avrhu byla diskutov´ana pouze forma, kter´a vyuˇzila n´avrhov´eho vzoru 2 singleton . Ovˇsem prvn´ı slabina, kter´a se projevila aˇz pˇri implementaci byl jedin´ y konfiguraˇcn´ı soubor config.xml. Ten se sice pˇri inicializaci tˇr´ıdy pro konfiguraci naˇcetl, ale zabr´anil pˇridruˇzen´ı konfigurace k jednotliv´ ym modul˚ um. Dalˇs´ım pˇretrv´avaj´ıc´ım probl´emem 3 je ˇspatnˇe navrˇzen´e API . Spr´ avnˇeji ˇreˇceno API nebylo navrˇzeno v˚ ubec. Tato tˇr´ıda pouze naˇcte jeden konfiguraˇcn´ı soubor a na z´ akladˇe nˇekolika metod pˇred´av´a data z XML. Metody ovˇsem nejsou parametrizovan´e a t´ım p´ adem jsou jedno´ uˇceln´e. Pro pr´aci s XML soubory jsem vyuˇzil knihovnu dom4j[9]. 2
C´ılem vzoru je zajiˇstˇen´ı existence pouze jedn´e instance dan´e tˇr´ıdy a poskytnut´ı glob´ aln´ıho pˇr´ıstupu k n´ı.[18] 3 API je zkratka anglick´ ych slov application programming interface, coˇz znamen´ a rozhran´ı pro programov´ an´ı aplikac´ı. Tento term´ın pouˇz´ıv´ a softwarov´e inˇzen´ yrstv´ı v programov´ an´ı. Jde o sb´ırku procedur, funkc´ı ˇci tˇr´ıd nˇejak´e knihovny (ale tˇreba i jin´eho programu nebo j´ adra operaˇcn´ıho syst´emu), kter´e m˚ uˇze vyuˇz´ıvat program´ ator, kter´ y knihovnu vyuˇz´ıv´ a.[13]
14
Vhodnˇejˇs´ım n´ avrhem konfigurovatelnosti syst´emu je vytvoˇren´ı v´ıce XML soubor˚ u pro kaˇzd´ y modul a pro j´ adro syst´emu. Tak´e metody ve tˇr´ıdˇe Config by mˇeli b´ yt parametrizovateln´e, aby dok´ azaly poˇzadovan´ a data pˇred´avat pˇr´ısluˇsn´ ym modul˚ u. Jak jiˇz bylo zm´ınˇeno konfiguraˇcn´ı data jsou ukl´ad´ana ve form´atu XML v souboru config.xml. Pouˇzil jsem univerz´ aln´ı k´odov´an´ı UTF-8, coˇz je uvedeno v hlaviˇcce souboru. Spr´avn´ y XML soubor m´ a obsahovat jeden hlavn´ı element, ve kter´em jsou obsaˇzeny dalˇs´ı informace. Hlav´ım elementem konfigurace je element, kter´ y je otevˇren´ y znaˇckou
a uzavˇren´ y . V konfiguraci je uveden v´ yˇcet nahr´avan´ ych modul˚ u/plugin˚ u pro v´ ystup na obrazovku
, u ´vodn´ı obrazovku a tak´e ovl´adac´ı prvky . Konfiguraˇcn´ı element, kter´ y informuje syst´em o dostupn´ ych pˇrehr´avaˇc´ıch a tak´e ho vyuˇz´ıv´ a u ´vodn´ı obrazovka, je element . Vˇsechny tyto elementy obsahuj´ı elementy s n´ azvem plugin, kter´e maj´ı povinn´ y parametr name. Element plugin pro pouˇzit´ı v elementu je jeˇstˇe rozˇs´ıˇren o druh pˇrehr´avan´eho m´edia class a parametr zdroje dat medium. D´ale v souboru n´ asleduje konfigurace pro modul/plugin InitScereen, coˇz je modul u ´vodn´ı obrazovky. Obsahuje pouze seznam obr´azk˚ u pro zobrazen´ı tlaˇc´ıtek. Tento seznam je vloˇzen v elementu se stejn´ ym n´azvem jako je n´azev modulu. Obsahuje elementy picture s parametry usage, nonFocus a focus. Parametr usage je textov´ y popis pouˇzit´ı obr´azk˚ u. Je-li uveden pouze form´at m´edia, napˇr´ıklad video bude zobrazen pro celou skupinu. N´asleduje-li pomlˇcka a typ zdrojov´eho m´edia, napˇr´ıklad video-file, jsou obr´azky vyuˇzity pro konkr´etn´ı tlaˇc´ıtko spouˇstˇej´ıc´ı dan´ y modul. V tomto modulu je jedin´a v´ yjimka, a to u usage=‘‘exit‘‘, kde tento element zahrnuje obr´ azky pro tlaˇc´ıtko ukonˇcen´ı programu. Parametry nonFocus a focus jsou cesty k obr´azk˚ um pro nevybran´ y(nonFocus) a vybran´ y prvek (focus). N´ azorn´ a uk´azka na pˇr´ıkladu. 15
16
Kapitola 6
Moduly 6.1
V´ ystupn´ı modul
V´ ystupn´ı modul Output slouˇz´ı jako spr´avce zobrazov´an´ı obrazu. Mnou vytvoˇren´a implementace SimpleOutput zajiˇst’uje zobrazen´ı okna a jeho maximalizaci do celobrazov´eho reˇzimu. Umoˇzn ˇuje tak´e skr´ yvat kurzor myˇsi a zajiˇst’uje pˇripojen´ı modul˚ u nadtˇr´ıdy Controller. Zobrazovan´ y r´ amec, jehoˇz layout je nastaven´ y na GridLayout(), reprezentuje promˇenn´ a frame. S ostatn´ımi moduly je prov´ az´ an pomoc´ı dvou zpr´av, addElement a clearOutput. Prvn´ı zpr´ava vloˇz´ı do zobrazovan´eho r´ amce komponentu, kterou zpr´ava obsahuje a je moˇzn´e ji z´ıskat pomoc´ı metody getComponent(). Metoda clearOutput reaguj´ıc´ı na stejnojmennou zpr´avu vymaˇze vˇsechny komponenty, kter´e byly pˇred´any spoleˇcnˇe se zpr´avou addElement. Tato moˇznost se vyuˇz´ıv´ a pˇri pˇrechodu mezi moduly nebo kompletn´ı zmˇenˇe vzhledu. Jako napˇr´ıklad lze uv´est pˇrechod z u ´vodn´ı obrazovky na v´ ybˇer adres´aˇre pro zobrazov´an´ı fotografi´ı. Jak´ y modul bude pouˇzit pro zobrazov´an´ı, z´ısk´a syst´em z konfiguraˇcn´ıho souboru pomoc´ı metody getOutputPlugin() ve tˇr´ıdˇe Config. Z´apis vyjadˇruj´ıc´ı n´azev modulu v konfiguraˇcn´ım souboru vypad´ a takto: Vytvoˇril jsem grafick´e rozhran´ı jako samostatnou aplikaci. Je vˇsak moˇzn´e naprogramovat v´ ystupn´ı modul jako applet, komponentu bˇeˇz´ıc´ı v kontextu jin´eho programu, typicky webov´eho prohl´ıˇzeˇce. Applet se spouˇst´ı na stranˇe klienta. Ovˇsem jeho pouˇzit´ı je sp´ıˇse pro vysokorychlostn´ı nebo lok´ aln´ı s´ıtˇe
6.2
´ Uvodn´ ı obrazovka
Tento modul podtˇr´ıdy InitScreen je nahr´an syst´emem bezprostˇrednˇe po spuˇstˇen´ı syst´emu a umoˇzn ˇuje uˇzivateli navigaci v syst´emu. Jeho n´azev a um´ıstˇen´ı je uloˇzeno v konfiguraˇcn´ım souboru ve form´ atu: 17
Pro tvorbu grafick´eho vzhledu bylo nutn´e vytvoˇrit dvˇe nov´e tˇr´ıdy PictureButton a PicturePanel. Jedn´ a se o rozˇs´ıˇren´ı prvk˚ u Button a Panel. ´ Upravy ve tˇr´ıdˇe Panel nebyly nijak v´ yrazn´e. Doplnil jsem priv´atn´ı promˇennou typu BufferedImage a k n´ı metodu getImage(), kter´a vrac´ı obr´azek, a druhou metodu setImage (BufferedImage img), kter´ a ukl´ad´a obraz do promˇenn´e, ale tak´e nastavuje preferovanou velikost komponenty na rozmˇery obr´azku. Posledn´ı zmˇenou ve tˇr´ıdˇe bylo pˇrekryt´ı metody paintComponent(Graphics g). Pˇridal jsem vykreslov´an´ı obr´azku na pozad´ı komponenty. Avˇsak zmˇenila-li se velikost oproti p˚ uvodn´ımu obr´azku, byla provedena standardnˇe nepˇriliˇs usledek byl patrn´ y v podobˇe ˇctvereˇck˚ u. Bylo proto nutn´e pouˇz´ıt kvalitn´ı interpolace1 a jej´ı d˚ kvalitnˇejˇs´ı, v m´em pˇr´ıpadˇe bikubickou interpolaci, kterou obsahuje tˇr´ıda Graphics2D. Velmi dobrou vlastnost´ı je moˇznost pˇred´an´ı null m´ısto objektu obr´azku BufferedImage. Panel se chov´a zcela bˇeˇznˇe jak je oˇcek´ av´ ano, ovˇsem jeho pozad´ı se nezobraz´ı a jev´ı se jako pr˚ uhledn´e a toho se d´ a velice dobˇre vyuˇz´ıt. Zdrojov´ y k´ od metody paintComponent(Graphics g): public void paintComponent(Graphics g) { super.paintComponent(g); Graphics2D g2d = (Graphics2D)g; g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION , RenderingHints.VALUE_INTERPOLATION_BICUBIC); if (image != null) g2d.drawImage(image,0,0,this.getWidth(),this.getHeight(),null); } Tˇr´ıda PictureButton je jeˇstˇe ponˇekud sloˇzitˇejˇs´ı. Pouˇz´ıv´a se zde stejn´ y princip vykreslov´an´ı jako u tˇr´ıdy PicturePanel. Je zde ovˇsem probl´em v tom, ˇze tlaˇc´ıtko m´a v´ıce vzhled˚ u a mus´ı tedy obsahovat v´ıce obr´ azk˚ u, pro zamˇeˇren´e a nezamˇeˇren´e tlaˇc´ıtko. Zmˇenu vzhledu obstar´avaj´ı metody setFocused() a setNonFocused(), kter´e promˇenn´e reprezentuj´ıc´ı vykreslovan´ y obr´ azek, pˇriˇrazuj´ı ten vybran´ y. Tak´e bylo nutno definovat reakce na myˇs, aby pˇri stisku tlaˇc´ıtka doˇslo ke zmˇenˇe jeho vzhledu. Dalˇs´ı tˇr´ıdou vytvoˇrenou pro modul u ´vodn´ı obrazovky je Focuser. Tato tˇr´ıda nahrazuje klasick´e zamˇeˇrov´ an´ı prov´ adˇen´e pomoc´ı kl´avesy tabul´atoru. Podstatn´ ym rozd´ılem je moˇznost vyuˇz´ıvat k ovl´ ad´ an´ı zpr´ avy, kter´e modul z´ısk´av´a od rozhran´ı ovl´ad´an´ı kl´avesnice. Druhou v´ yhodou je pˇreskakov´ an´ı moment´alnˇe neviditeln´ ych tlaˇc´ıtek a t´ım pˇrirozen´ y pohyb jsou-li nˇekter´ a talˇc´ıtka skryta.
6.3
Videopˇ rehr´ avaˇ c
Funkce, bez kter´e by multimedi´ aln´ı centrum nebylo multimedi´aln´ım centrem, je pˇrehr´av´ an´ı videa. To je zprostˇredkov´ ano pomoc´ı modulu videopˇrehr´avaˇce. Ten je implementac´ı tˇr´ıdy pro pˇrehr´ av´ an´ı Player. Pro pˇrehr´ av´ an´ı se v Javˇe pouˇz´ıv´a knihovna JMF, kter´a je souˇc´ast´ı standardn´ı instalace, ˇ sen´ı nab´ız´ı rozˇs´ıˇren´ı pro JMF jm´enem avˇsak neumoˇzn ˇuje pˇrehr´ avat komprimovan´a m´edia. Reˇ FOBS, kter´e vyuˇz´ıv´ a knihovnu FFmpeg pro dek´odov´an´ı videa. Pˇri inicializaci tˇr´ıdy Player se zaˇsle zpr´ava clearOutput modul˚ um Output, kter´a m´ a za n´asledek vymaz´ an´ı vˇsech prvk˚ u z hlavn´ı komponenty. N´asleduje naˇcten´ı video souboru a tvorby pˇrehr´ avaˇce pomoc´ı Manager.createRealizedPlayer(DataSource source). 1
proloˇzen´ı bodu kˇrivkou a n´ asledn´e pˇreveden´ı na body ovˇsem v poˇzadovan´e velikosti
18
Po odesl´ an´ı zpr´ avy obsahuj´ıc´ı panel s ˇcern´ ym pozad´ım se vytvoˇr´ı vizu´aln´ı komponenta metodou getVisualComponent(), kter´a je vloˇzena do ˇcern´eho panelu. Pro zajiˇstˇen´ı spr´ avn´e zmˇeny velikosti stran u kompnent jsem implementoval metodu resizeKeepScale(Component component, Component panel), kter´a podle velikosti panelu zmˇen´ı velikost komponenty tak, aby nepˇresahovala omezuj´ıc´ı panel a z´aroveˇ n zachov´avala pomˇer stran. Tato metoda je u um´ıstˇena v modulu Module a je dostupn´a pro vˇsechny moduly. protected void resizeKeepScale(Component component, Component panel){ Dimension originalSize = component.getPreferredSize(); double scaleWidth= (double)panel.getSize().width/(double)originalSize.width; double scaleHeight= (double)panel.getSize().height/(double)originalSize.height; double scale = 1; if (scaleHeight> 0 && scaleWidth>0){ if ( ((scaleWidth*originalSize.height) <= panel.getSize().height)){ scale = scaleWidth; }else{ scale = scaleHeight; } }else{ if (scaleHeight > 0) scale = scaleHeight; if (scaleWidth > 0) scale = scaleWidth; } int width = (int)(originalSize.width * scale); int height = (int)(originalSize.height * scale); component.setPreferredSize(new Dimension(width, height)); component.setSize(new Dimension(width, height)); }
6.4
Prohl´ıˇ zeˇ c fotografi´ı
Pro prohl´ıˇzen´ı fotografi´ı nebo obr´azk˚ u jsem udˇelal dalˇs´ı implementaci tˇr´ıdy Player. Funkcionalita se skl´ ad´ a ze dvou krok˚ u, v´ ybˇer adres´aˇre obsahuj´ıc´ı fotografie a jejich n´asledn´e prohl´ıˇzen´ı. Jako prohl´ıˇzen´e form´ aty jsem zvolil JPEG a PNG. Java um´ı v´ıce form´at˚ u, ale mysl´ım, ˇze pro prohl´ıˇzen´ı fotografi´ı toto omezen´ı vyhovuje. Stejnˇe jako u pˇrehr´avaˇce videa se fotografie zobrazuj´ı na ˇcern´em pozad´ı a jsou zmenˇsov´any nebo zvˇetˇsov´any, aby maxim´alnˇe vyuˇzily plochu obrazovky. Vybran´ y adres´ aˇr nemus´ı pˇr´ımo obsahovat fotografie, modul proch´az´ı vˇsechny podadres´aˇre a vytv´ aˇr´ı seznam vˇsech fotografi´ı, kter´e jsou v nich obsaˇzeny. Zde se uplatnil algoritmus proch´ azen´ı do hloubky. Nejdˇr´ıve seˇrad´ı seznam soubor˚ u dan´e u ´rovnˇe a n´aslednˇe vstoup´ı 19
do prvn´ıho adres´ aˇre. Tento postup se opakuje, dokud m´a adres´aˇr podadres´aˇre, n´asleduje proch´azen´ı dalˇs´ıho adres´ aˇre. Takov´ y postup je pˇr´ıkladem rekurzivn´ıho2 algoritmu. Ten by byl ovˇsem v´ıce pamˇet’ovˇe n´ aroˇcn´ y, a proto jsem jsem vyuˇzil lepˇs´ı a rychlejˇs´ı implementaci pomoc´ı z´ asobn´ıku.
6.5
Hudebn´ı pˇ rehr´ avaˇ c
Mezi z´ akladn´ı souˇc´ asti multimedi´aln´ıch center neodmyslitelnˇe patˇr´ı tak´e audio pˇrehr´avaˇc, ’ at uˇz v proveden´ı jako pˇrij´ımaˇc internetov´eho r´adia, pˇrehr´avaˇc MP3 nebo klasick´ ych CD. Pˇrehr´av´ an´ı zvl´ adne bezprobl´em˚ u realizovat Java Media Framework rozˇs´ıˇren´a o FOBS, a to vˇcetnˇe internetov´ ych r´ adi´ı. Rozhran´ı by mˇelo obsahovat spr´avce kolekc´ı a seznam˚ u skladeb. ’ Aby nebylo pˇrehr´ av´ an´ı pˇr´ıliˇs f´ adn´ı, bylo by vhodn´e ho doplnit bud vhodnou animac´ı nebo analyz´ atorem. Tuto ˇc´ ast jsem nemˇel jiˇz ˇcas implementovat a z˚ ustala pouze ve stavu n´avrhu.
2
rekurzivn´ı funkce je funkce, kter´ a vol´ a sama sebe a obsahuje podm´ınku pro ukonˇcen´ı vol´ an´ı
20
Kapitola 7
Ovl´ ad´ an´ı Aplikace multimedi´ aln´ıch center vyˇzaduj´ı moˇznost ovl´ad´an´ı i pomoc´ı jin´ ych neˇz standardn´ıch zaˇr´ızen´ı. Jako standardn´ı zaˇr´ızen´ı se povaˇzuje kl´avesnice a myˇs, ovˇsem pro ovl´ad´ an´ı multimedi´ aln´ıch center je vhodn´e vyuˇz´ıt napˇr´ıklad infraˇcerven´e d´alkov´e ovl´ad´an´ı, ovl´ad´ an´ı po s´ıti nebo napˇr´ıklad Bluetooth. Pro zachyt´ av´ an´ı pˇr´ıkaz˚ u pomoc´ı zpr´av jsem definoval i zpr´avy pro ovl´ad´an´ı a k nim tˇr´ıdy, kter´e na z´ akladˇe uˇzivatelsk´ ych vstup˚ u budou tyto zpr´avy pˇred´avat. T´ım se doc´ılila nez´avislost modul˚ u na zbytku syst´emu, jednotliv´e moduly reaguj´ı na sign´aly od tˇr´ıd sn´ımaj´ıc´ıch vstupn´ı zaˇr´ızen´ı. Z´ aroveˇ n je tak´e zaruˇcena univerz´alnost a konfigurovatelnost. Tˇr´ıda pro kl´avesov´e ovl´ ad´ an´ı m´ a konfiguraci pˇr´ımo implementovanou ve sv´em k´odu. V´ yhodnˇejˇs´ı je vˇsak oddˇelen´ı pˇr´ıkaz˚ u a k nim pˇr´ısluˇsej´ıc´ıch kl´aves do konfiguraˇcn´ıho souboru. Zde opˇet nar´aˇz´ıme na ˇspatn´ y n´ avrh rozhran´ı konfigurace.
7.1
Kl´ avesnice
Ovl´ad´an´ı myˇsi bˇeˇzn´ ym klik´ an´ım je jiˇz v syst´emu implementov´ano vyuˇzit´ım ovl´adac´ıch prvk˚ u ze tˇr´ıdy PictureButton, kter´ a je potomkem tˇr´ıdy Button. Rozˇs´ıˇren´ım nadtˇr´ıdy Controller by bylo moˇzn´e implementovat ovl´ad´an´ı napˇr´ıklad pomoc´ı gest myˇsi. Implementace ovl´ ad´ an´ı pomoc´ı kl´avesnice je ponˇekud obt´ıˇznˇejˇs´ı. Je tˇreba zajistit, aby byla focusable(oznaˇciteln´ a) pouze jedna komponenta, kter´a zachyt´av´a ud´alosti kl´avesnice. Vyhodnocov´ an´ı je implementov´ ano v modulu SimpleKeyboardController, kter´ y je implementac´ı KeyListener. Moduly nadtˇr´ıdy Controller pˇrij´ımaj´ı zpr´avu AddUnderControll, kter´a vyvol´ a metodu addUnderControll s parametrem zpr´avy obsahuj´ıc´ı komponentu, na kter´e se m´ a naslouchat napˇr´ıklad stisk˚ um kl´aves. Jakmile je zaregistrov´ an KeyListener, zaˇcnou vˇsechny stisky kl´aves vyvol´avat metodu keyPressed. V t´eto tˇr´ıdˇe se pak prov´ad´ı identifikace kl´avesy pomoc´ı metody getKeyChar nebo getKeyCode a n´ aslednˇe se provede rozesl´an´ı zpr´av pro vˇsechny moduly nebo nadtˇr´ıdy, kter´e na toto tlaˇc´ıtko maj´ı reagovat.
21
Kapitola 8
Testov´ an´ı C´ılem testov´ an´ı je objevit co moˇzn´a nejvyˇsˇs´ı poˇcet softwarov´ ych chyb, nikoliv zajistit bezchybnost syst´emu. Softwarov´ ym testov´an´ım nen´ı moˇzno zajistit naprostou bezchybnost syst´emu, jednoduˇse z toho d˚ uvodu, ˇze nelze re´alnˇe nasimulovat nekoneˇcn´e mnoˇzstv´ı vstupn´ıch hodnot a n´ aslednˇe zkontrolovat nekoneˇcn´e mnoˇzstv´ı v´ ystupn´ıch hodnot, otestovat vˇsechny moˇzn´e standardn´ı a nestandardn´ı situace a moˇznosti. Metody softwarov´eho testov´ an´ı dˇel´ıme obecnˇe do dvou kategori´ı a to black box testov´ an´ı a white box testov´ an´ı. Tyto dvˇe kategorie zahrnuj´ı obecn´ y inˇzen´ yrsk´ y pˇr´ıstup k testov´an´ı. Black box testov´ an´ı (Testov´ an´ı metodou ˇcern´e skˇr´ıˇ nky) je ˇcinnost, kdy testuj´ıc´ı nem´ a znalosti o tom, jak se testovan´ y syst´em chov´a uvnitˇr. Tester pouze pˇred´av´a vstupy, postupuje dle pˇripraven´ ych sc´en´aˇr˚ u a na konci porovn´a v´ ysledek, zda se shoduje s oˇcek´ av´ an´ım. White box testov´ an´ı (Testov´ an´ı metodou b´ıl´e skˇr´ıˇ nky) naz´av´ame vˇzdy, kdy tester mus´ı nahl´ıdnout dovnitˇr programu. Napˇr´ıklad pˇri v´ ybˇeru vhodn´ ych vstupn´ıch dat.[15] Pˇri implementaci tˇr´ıdy Module bylo nutn´e zajistit jej´ı bezprobl´emovou funkcionalitu z hlediska pˇrid´ av´ an´ı a odeb´ır´ an´ı zpr´av. Vyhotovil jsem jednotkov´e testy pro testov´ an´ı s vyuˇzit´ım testovac´ıho n´ astroje TestNG [10], u nˇehoˇz jsem vyuˇzil moˇznost integrace ve v´ yvojov´em prostˇred´ı Eclipse. Testy jsou ps´any metodou Black box. Testov´ any byly ˇctyˇri podstatn´e metody, addInActionList, removeFromActionList, isEnableAction a getActionList. Prvn´ı metoda sloˇz´ı k registrov´an´ı zpr´avy, druh´a k jej´ımu odebr´an´ı ze seznamu a tˇret´ı otestuje, je-li zpr´ava zaregistrov´ana u dan´eho modulu a d´a se tedy zaslat. Protoˇze je tˇr´ıda Module abstraktn´ı, musel se vytvoˇrit jej´ı potomek, kter´ y se n´aslednˇe testoval. Pro testov´ an´ı metody getActionList byla vytvoˇrena metoda getActionListTest, kter´a kontroluje poˇcet zaregistrovan´ ych zpr´av pˇred testem. Dalˇs´ı metoda pro testov´ an´ı isEnableActionTest otestuje jak n´azev napov´ıd´a metodu isEnableAction a to tak, ˇze otestuje tˇri spr´ avn´e varianty a jednu chybnou. Posledn´ı test removeFromActionListTest testuje odeb´ır´ an´ı zpr´ av. Postupnˇe se odeb´ıraj´ı zpr´avy z p˚ uvodn´ı trojice a testuje se jejich nepˇr´ıtomnost i pˇr´ıtomnost mezi zb´ yvaj´ıc´ımi zpr´avami.
22
Kapitola 9
Z´ avˇ er Pˇri pr´aci na t´eto aplikaci jsem se v´ıce sezn´amil s programovac´ım jazykem Java a nauˇcil se pouˇz´ıvat knihovnu pro multim´edia JMF. Rozˇs´ıˇril jsem si tak´e znalosti o grafick´em rozhran´ı a jeho tvorbˇe pomoc´ı knihovny Swing. Mezi neoceniteln´e zkuˇsenosti patˇr´ı praktick´e vyuˇzit´ı jednotkov´eho testov´ an´ı. Testy mi pomohly odhalit nˇekolik chyb, kter´ ych jsem se v pr˚ ubˇehu v´ yvoje dopustil. Tak´e schopnost pl´anov´an´ı je i u projetku takov´eto, nepˇr´ıliˇs znaˇcn´e, velikosti kl´ıˇcov´a. Urˇcit, do kdy mus´ı b´ yt hotov´e jednotliv´e ˇc´asti a n´asledn´e dodrˇzen´ı je velmi n´aroˇcn´e. uvodn´ı disProjekt jsem vyv´ıjel na linuxov´e distribuci Arch Linux [4] vych´azej´ıc´ı z p˚ yvoj v jazyce Java m´am naistalov´any bal´ıˇcky Java Developer tribuce Slackware [5]. Pro v´ Kit verze 6-2 a Java Runtime Environment verze 6u5-1. Pro ˇr´ızen´ı pˇrekladu jsem pouˇz´aval Apache Ant [8]. Jako v´ yvojov´e prostˇred´ı mi slouˇzilo Eclipse SDK [12], s pluginy pro Subversion [11] a TestNG [10]. Subversion nebo-li SVN jsem vyuˇz´ıval pro z´alohov´an´ı a tak´e tvorbu verz´ı, ke kter´ ym je moˇzno se pˇri chyb´ach vracet.
9.1
V´ ysledky
M´ ym u ´kolem bylo navrhnout a vytvoˇrit mutilmedi´aln´ı aplikaci pouˇzitelnou pod syst´emem GNU/Linux. Syst´em je rozˇclenˇen do modul˚ u, kter´e jsou na sobˇe nez´avisl´e a umoˇzn ˇuj´ı snadn´e rozˇs´ıˇren´ı a u ´pravy funkc´ı. Syst´em je intuitivnˇe ovladateln´ y a m´a pˇripraveno rozhran´ı pro vyuˇzit´ı v´ıce ovl´ adac´ıch zaˇr´ızen´ı, nejen pouze pomoc´ı kl´avesnice a myˇsi. Z pˇrehr´ avaˇc˚ u jsou zpracov´ any moduly pro prohl´ıˇzen´ı fotografi´ı a pˇrehr´av´an´ı videa, kter´ y nen´ı zcela optim´ aln´ı. V knihovnˇe JMF nebo jej´ım rozˇs´ıˇren´ı FOBS se nach´az´ı zˇrejmˇe chyba nebo jsem je ˇspatnˇe pouˇzil. Video se pˇrehr´av´a v podstatnˇe niˇzˇs´ım rozliˇsen´ı a tak´e se m´ırnˇe zasek´av´ a. Nen´ı-li ovˇsem umoˇznˇeno pˇrehr´avat souˇcasnˇe s videem zvuk, obsazen´ım zvukov´eho v´ ystupu jin´ ym programem, video se pˇrehr´av´a plynule.
9.2
Dalˇ s´ı v´ yvoj
Aby byl syst´em kompletn´ı podle specifikace uveden´e v u ´vodu (1), bude nutn´e doplnit modul pro pˇrehr´ av´ an´ı hudebn´ıch m´edi´ı vˇcetnˇe vhodn´eho rozhran´ı. D´ale je tˇreba vyˇreˇsit probl´em s pˇrehr´ av´ an´ım videa a rozˇs´ıˇrit o moˇznost pˇrehr´av´an´ı DVD titul˚ u. Nyn´ı je syst´em bez moˇznosti m´ıt v konfiguraci uloˇzen´e um´ıstˇen´ı CD/DVD mechaniky, a proto neumoˇzn ˇuje snadn´e pˇrehr´av´an´ı m´edi´ı uloˇzen´ ych na disc´ıch. Toto by bylo tak´e velmi vhodn´e doplnit. Nutit uˇzivatele, aby vˇzdy mechaniku softwarovˇe pˇripojil, pak ji nalezl mezi adres´aˇri, je silnˇe neergonomick´e. 23
Dalˇs´ı ned´ılnou souˇc´ ast´ı pro pˇrehr´av´an´ı film˚ u je zobrazov´an´ı titulk˚ u. Tato funkce se d´ a 1 snadno implementovat vytvoˇren´ım nov´e nadtˇr´ıdy, do kter´e spad´a tak´e OSD . D˚ uleˇzitou souˇc´ ast´ı multimedi´ aln´ıho centra je pˇrehr´av´an´ı DVD a pr´ace s televizn´ı kartou. Pˇrehr´av´ an´ı film˚ u je jiˇz implementov´ano, avˇsak potˇrebuje rozˇs´ıˇrit o pr´aci s DVD. U televizn´ı karty vˇsak nast´ avaj´ı komplikace s jej´ım ovl´ad´an´ım. Pro jazyk C existuje nˇekolik variant pro zmˇenu kan´ al˚ u a celkovou pr´ aci s kartou, pro Javu zat´ım nic takov´eho neexistuje a zˇrejmˇe bude nutn´e vyuˇz´ıt pr´ avˇe tyto ovl´ adac´ı knihovny. R´ad bych tento program d´ ale vyv´ıjel a vyuˇz´ıval ho v naˇs´ı dom´acnosti. Pro tetno u ´ˇcel m´am jiˇz pˇripojenou televizi a reproduktorovu soustavu ke stoln´ımu PC. Uvaˇzuji nad koup´ı d´alkov´eho ov´ ad´ an´ı a televizn´ı karty.
1
On-Screen Display pˇredstavuje text nebo grafiku pˇrekr´ yvaj´ıc´ı z ˇc´ asti obraz. Nejzn´ amˇejˇs´ı OSD je napˇr´ıklad ˇc´ıslo zobrazovan´e na televizn´ı obrazovce pˇri pˇrep´ın´ an´ı kan´ al˚ u.
24
Literatura [1] Domovsk´ a str´ anka Elisa. URL hhttp://elisa.fluendo.comi [2] Domovsk´ a str´ anka GeeXboX. URL hhttp://www.geexbox.org/en/index.htmli [3] Domovsk´ a str´ anka LinuxMCE. URL hhttp://www.linuxmce.orgi [4] Domovsk´ a str´ anka linuxov´e distribuce Arch Linux. URL hhttp://www.archlinux.org/i [5] Domovsk´ a str´ anka linuxov´e distribuce Slackware. URL hhttp://www.slackware.com/i [6] Domovsk´ a str´ anka Media Center. URL hhttp://www.microsoft.com/cze/windows/xp/mediacenter/default.mspxi [7] Domovsk´ a str´ anka MythTV. URL hhttp://www.mythtv.orgi [8] Domovsk´ a str´ anka projektu Apache Ant. URL hhttp://ant.apache.org/i [9] Domovsk´ a str´ anka projektu dom4j. URL hhttp://dom4j.org/i [10] Domovsk´ a str´ anka projektu TestNG. URL hhttp://testng.org/doc/i [11] Domovsk´ a str´ anka verzovac´ıho n´astroje Subverison. URL hhttp://subversion.tigris.org/i [12] Domovsk´ a str´ anka v´ yvojov´eho prostˇred´ı Eclipse. URL hhttp://www.eclipse.org/i [13] Encyklopedie WikipediA - Extensible Markup Language. URL hhttp://cs.wikipedia.org/wiki/XMLi [14] Encyklopedie WikipediA - Java. URL hhttp://cs.wikipedia.org/wiki/Javai [15] Encyklopedie WikipediA - Testov´an´ı software. URL hhttp://cs.wikipedia.org/wiki/Testovani softwarei 25
[16] Encyklopedie WikipediA - Windows Media Center. URL hhttp://en.wikipedia.org/wiki/Windows Media Centeri [17] JavaT M 2 Platform, Standard Edition, v 1.4.2, API Specification. URL hhttp://java.sun.com/j2se/1.4.2/docs/api/index.htmli [18] Objektov´ a anal´ yza, n´ avrh a programov´an´ı. URL hhttp://objekty.vse.cz/Objekty/Vzory-Singletoni [19] Pˇrehr´ av´ an´ı a stˇrih videoz´ aznam˚ u v jazyce JAVA. URL hhttp://www.kiv.zcu.cz/∼lobaz/mhs/semestralky/2006/video Java/i
26
Dodatek A
Pˇ r´ılohy Pˇ r´ıloha 1: Datov´ y nosiˇc CD se zdrojov´ ymi k´ody, programovou dokumentac´ı, konfiguraˇcn´ım souborem a elektronickou kopi´ı t´eto technick´e zpr´avy.
27