====== Prehravanie zvukov ====== Klucove slova: hlasic, player, playerdriver, prehravanie, zvuk ===== Popis ovladaca pre prehravanie zvukov ===== Formát mp3: 32kbit, 22050Hz, mono ===== Generovanie zvukovej stopy z binarneho suboru ===== Generovanie binarneho suboru sa vykonava na zaklade vstupu z back-office aplikacie s nazvom 'sound.bin'. \\ Algoritmus generovania ma stanovenu priporitu, podla coho sa ma zastavkovy zvuk generovat, tzv. //priority generovania zvukoveho suboru.// Ako prve algoritmus nacita kolekciu zastavkovych zvukov z binarneho suboru (dalej uz len //kolekcia//). **Priority generovania zvukoveho suboru:** - Z //kolekcie// ziskam len tie zaznamy, ktore platia pre aktualnu linku a cislo spoja. Ak taketo zaznamy existuju, prejdem na GENERUJ_MP3. - Z //kolekcie// ziskam len tie zaznamy, ktore platia pre aktualnu linku a smer. Ak taketo zaznamy existuju, prejdem na GENERUJ_MP3. - Z //kolekcie// ziskam len tie zaznamy, ktore platia pre aktualnu linku (spolocne zaznamy pre vsetky spoje na linke). Ak taketo zaznamy existuju, prejdem na GENERUJ_MP3. - Z //kolekcie// ziskam len tie zaznamy, ktore platia pre aktualnu zastavku. Vykona sa krok GENERUJ_MP3. **Spolocny krok pre vsetky priority:** \\ GENERUJ_MP3 - Z vysledneho intervalu zastavkovych zvukov podla kriterii sa pokusi algoritmus vygenerovat zvuk pre pozadovane ID zastavky. Ak zvuky pre zastavkove ID neexistuju, pokracuje sa na nizsiu prioritu. Struktura kolekcie zastavkovych zvukov je popisana v strukture suboru v casti "Zvuky priradene zastavkam a linkam,zotriedene postupne podla linky, smeru, spoja, zastavky". Funkcionalita generovania zvukovych zaznamov je implementovana v aplikacii palubneho pocitaca na platforme emtes_xscale_26 v triede 'ehlasicparser .cpp .h' ==== Struktura binarneho suboru ==== Subor bude ulozeny od adresy 0000, sklada sa zo 7 casti: - Hlavicka - Konfiguracny subor - Offsety - Udalosti - Zvuky priradene zastavkam a linkam - Data - Program pre strojcek === 1. Hlavicka === ^ velkost ^ nazov polozky ^ popis ^ | 4 byte | test | cislo 0x5a5a5a5a | | 4 byte | velkostSuboru | celkova velkost (1)+(2)+(3)+(4)+(5)+(6) | | 4 byte | adrCfgSTA | absolutna adresa zaciatku (2) | | 2 byte | velkostCfgSTA | | | 4 byte | pocetZvukov | | | 4 byte | adrOffset | absolutna adresa zaciatku (3) | | 4 byte | UdaOffset | absolutna adresa zaciatku (4) | | 4 byte | zvuOffset | absolutna adresa zaciatku (5) | | 4 byte | adrData | absolutna adresa zaciatku (6) | | 4 byte | adrProgram | absolutna adresa zaciatku (7) | | 4 byte | Rezerva | | === 2. Konfiguracny subor === Ide o subor od vyrobcu cipu, ktory sa pouziva v starom hlasici. Na Inteli nie je potrebny, ale kvoli kompatibilite so starym strojcekom sa tam pridava. Vznikne skonvertovanim textoveho suboru STA013.cfg do binarneho tvaru. Subor obsahuje dva stlpce jednobajtovych cisel v dekadickom tvare: \\ 58 1 \\ 42 4 -> v binarke budu nasedovat: 58,1,42,4,40,0 .... \\ 40 0 ... \\ === 3. Offsety === ^ velkost ^ nazov polozky ^ popis ^ | 4 byte | adrZvuk |adresa zvuku (adrData + adrZvuk = Offset zaciatku zvuku) | | 4 byte | velkostZvuk |velkost zvuku | === 4. Dopravne udalosti === Zotriedene su podla udalosti a zvuky nasleduju v poradi v akom sa maju prehrat. ^ velkost ^ nazov polozky ^ popis ^ | 1 byte | TypUdalosti | | | 1 byte | TypZvuku | 0- konstanta alebo 1- premenna | | 1 byte | Kanal | | | 1 byte | Rezerva | | | 4 byte | Cislo Zvuku | poradie v kolekcii offsetov(cast 3) \\ Cislo zvuku z binarky pre hlasic - Typ zvuku je 0 \\ Linkovy alebo zastavkovy zvuk: \\ - 101 - Linkova premenna \\ - 102 - zastavkova premenna konkretne cislo zvuku sa vyhlada v casti 5 suboru v hlasici | **Popis - Typ udalosti** \\ ^ Typ udalosti ID ^ Nazov ^ | 1 | Príchod na zastávku | | 2 | Odchod zo zastávky | | 3 | Rezim Datum/cas | | 4 | Linka/Spoj | | 5 | Info pre nevidomeho | | 6 | Nastup nevidomeho | | 7 | Prva zastavka | | 8 | Konecna zastavka | | 9 | Zastavka na znamenie | | 10 | Kontrola revizorom | | 11 | Havaria | | 12 | Zmena pásma-príchod | | 13 | Zmena pásma-odchod | | 14 | Hranicna zastavka | | 15 | Pasmo | | 16 | Podla vyberu | | 17 | Kazda 2.zast. | | 18 | Kazda 3.zast. | | 19 | Kazda 4.zast. | | 20 | Kazda 5.zast. | | 21 | Kazda 6.zast. | | 22 | Kazda 7.zast. | | 23 | Kazda 8.zast. | | 24 | Kazda 9.zast. | | 25 | Kazda 10.zast. | | 26 | statie na zast. | | 27 | Nasl.zast po prich. | | 28 | nevid.iden.tabule | | 29 | nevid.riadok.tabule | **Popis - Typ zvuku** \\ ^ Typ zvuku ^ Popis ^ | 0 | Konstanta | | 1 | Premenna | **Popis - Kanal** \\ ^ Kanal ID ^ Popis ^ | 1 | Externy (z vozidla) | | 2 | Interny (vo vozidle) | | 3 | Vodic (pre vodica) | | 21 | Interny, externy (z vozidla aj vo vozidle) | | 31 | Vodic, externy (pre vodica aj z vozidla) | | 32 | Vodic, interny (pre vodica aj vo vozidle) | | 123 | Externy, interny, pre vodica (z vozidla, vo vozidle aj pre vodica) | === 5. Zvuky priradene zastavkam a linkam,zotriedene postupne podla linky,smeru,spoja,zastavky === ^ velkost ^ nazov polozky ^ popis ^ | 4 byte | CisloLinky | | | 1 byte | SmerLinky | 0-smer OBA, 1-smer TAM, 2-smer SPAT | | 1 byte | Rezerva | | | 4 byte | CisloSpoja | | | 4 byte | CisloZastavky | Global ID zastavky | | 2 byte | CisloZvuku | poradie v kolekcii offsetov(cast 3) | === 6. Data === Zvuky vo formate MP3 spojene do jedneho binarneho suboru Usek pozadovanej MP3: \\ zaciatok = AdrData(z hlavicky) + AdrZvuk(cast 3) \\ koniec = zaciatok + velkostZvuk ===== Zname nedostatky prehravania zvukov ===== ==== Chyba generovania binarneho subore pre rozne smery ==== Transoffice < 10.1 sa v generatore binarneho suboruy vyskytovala chyba ze pre smer 'oba' a 'spat' sa do linkoveho zaznamu nastavila hodnota 0. Aplikacia tym padom nedokazala zistit linkove zvuky pre smer 'spat'. Od Transoffice >= 10.1 v generatore sa spravne generuju hodnoty smeru nasledovne: - hodnota 0 - smer 'oba' - hodnota 1 - smer 'tam' - hodnota 2 - smer 'spat'