UNIVERZITET U NOVOM SADU FAKULTET TEHNIČKIH NAUKA Odsek za elektrotehniku i računarstvo Institut za računarstvo i automatiku Katedra za računarsku teh

Слични документи
SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA Seminarski rad u okviru predmeta Računalna forenzika BETTER PORTABLE GRAPHICS FORMAT Matej

P11.3 Analiza zivotnog veka, Graf smetnji

KATALOG ZNANJA IZ INFORMATIKE

Laboratorija za termičku obradu Inženjerstvo površina Kratko uputstvo za obradu i analizu profila u programskom paketu SPIP Programski paket SPIP preu

Razvoj programa, Code::Blocks, struktura programa, printf, scanf, konverzioni karakteri predavač: Nadežda Jakšić

Microsoft PowerPoint - 06 Uvod u racunarske mreze.ppt

ЈСФФ2019 (Јапанско српски фестивал филма) Апликациони формулар САДРЖАЈ: Апликациони формулар О фестивалу Правила и процедура

AKVIZICIJA PODATAKA SA UREĐAJEM NI USB-6008 NI USB-6008 je jednostavni višenamjenski uređaj koji se koristi za akviziciju podataka (preko USBa), kao i

Algoritmi i arhitekture DSP I

Uvod u računarstvo 2+2

Microsoft PowerPoint - OOPpredavanja05 [Compatibility Mode]

Lekcija 6 Prikaz podataka na graficima. Upis u fajl. 1. Cilj vežbe Cilj vežbe je da studente upozna sa: načinima prikaza podataka na različitim grafič

Microsoft PowerPoint - Datoteke [Compatibility Mode]

Verzija 1 A R C M A N S E C U R I T Y D E V I CE ilogger-11 opis uređaja i tehnička specifikacija ARCMAN Vikentija Rakića Zemun Tel: 011/3731

Apache Maven Bojan Tomić

Техничко решење: Софтвер за симулацију стохастичког ортогоналног мерила сигнала, његовог интеграла и диференцијала Руководилац пројекта: Владимир Вуји

Задатак 4: Центрифугална пумпа познате карактеристике при n = 2900 min -1 ради на инсталацији приказаној на слици и потискује воду из резервоара А у р

ELEKTROTEHNIČKI FAKULTET, UNIVERZITET U BEOGRADU KATEDRA ZA ELEKTRONIKU UVOD U ELEKTRONIKU - 13E041UE LABORATORIJSKA VEŽBA Primena mikrokontrolera

Classroom Expectations

Microsoft PowerPoint - Programski_Jezik_C_Organizacija_Izvornog_Programa_I_Greske [Compatibility Mode]

УНИВЕРЗИТЕТ У НИШУ-МАШИНСКИ ФАКУЛТЕТ У НИШУ

Test ispravio: (1) (2) Ukupan broj bodova: 21. veljače od 13:00 do 14:00 Županijsko natjecanje / Osnove informatike Osnovne škole Ime i prezime

Повезивање са интернетом

Programiranje 2 0. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 0. predavanje p. 1/4

Физика и информатика

Microsoft PowerPoint - DAC.ppt [Compatibility Mode]

Programiranje 1 Milena Vujošević - Janičić 2008/2009

COMARC/A Format

Microsoft Word - 11 Pokazivaci

УНИВЕРЗИТЕТ У НИШУ ПРИРОДНО-МАТЕМАТИЧКИ ФАКУЛТЕТ Департман за рачунарске науке Писмени део испита из предмета Увод у рачунарство 1. [7 пое

Univerzitet u Novom Sadu Tehnički fakultet Mihajlo Pupin Zrenjanin Seminarski rad Predmet: Konkuretno programiranje doc. dr Dejan Lacmanovic Zorica Br

Дистрибуирани софтверски системи Технички факултет "Михајло Пупин" Зрењанин, Универзитет у Новом Саду Практикум за лабораторијске вежбе #07 [нерецензи

PowerPoint Presentation

Microsoft PowerPoint - 13-Funkcije_2.ppt [Compatibility Mode]

Microsoft PowerPoint - vezbe 4. Merenja u telekomunikacionim mrežama

PHP kod

Računarski praktikum I - Vježbe 03 - Implementacija strukture string

Multimedijalni IP server sa podrškom heterogenim mrežama Multimedia IP server with the support for heterogeneous networks Saša Matijašević, Zoran Veli

УНИВЕРЗИТЕТ У НИШУ-МАШИНСКИ ФАКУЛТЕТ У НИШУ ОБАВЕЗУЈУЋЕ УПУТСТВО о форми дипломских радова на Машинском факултету Универзитета у Нишу и начину архивир

UVOD - OD JAVE DO C# ELEMENTARNE RAZLIKE Veliki broj Java/C# razlika su uglavnom preimenovane ključne reči i razlike u konvencijama imenovanja. Neke o

Memorandum - Predsjednik

Uvod u računarstvo 2+2

1, 2, 3, кодирај! Активности циклуса 4 Пројект «Аркадне игре» - Час 6: Програмирање падања новчића (наставак) Доминантна дисциплина Математикa Резиме

Lekcija 4 Akvizicija i generisanje signala pomoću DAQmx VIs: analogni ulaz, digitalni ulaz/izlaz, analogni izlaz 1. Cilj vežbe II deo Cilj vežbe je da

Zadatak T=5: Jedinica WBSD propušta vred Potiče iz polja Rwb.LMD Signal Rwb.WRLMD izaziva propuštanje ove vrednosti 2. Vrednost 0000

Programski jezik C

Crna Gora AGENCIJA ZA ELEKTRONSKE MEDIJE Broj: Podgorica, godine UPUTSTVO ZA SNIMANJE EMITOVANIH MATERIJALA ELEKTRONSKIH MEDIJA Pod

Kombinatorno testiranje

АНКЕТА О ИЗБОРУ СТУДИЈСКИХ ГРУПА И МОДУЛА СТУДИЈСКИ ПРОГРАМИ МАСТЕР АКАДЕМСКИХ СТУДИЈА (МАС): А) РАЧУНАРСТВО И АУТОМАТИКА (РиА) и Б) СОФТВЕРСКО ИНЖЕЊЕ

[youtube]t2mptqulvr8[/youtube] [quote]pre svega potrebno je na kompjuteru imati instaliran winrar, koji cemo koristiti za deljenje arhiva i stavljanje

Microsoft Word - eg_plan_mart2007.doc

Tutoring System for Distance Learning of Java Programming Language

Microsoft PowerPoint - C-4-1

Microsoft PowerPoint - 13 PIK (Mentor Graphic ASIC).ppt

PowerPoint Presentation

Funkcije predavač: Nadežda Jakšić

P1.2 Projektovanje asemblera

PRIRODNO MATEMATIČKI FAKULTET U NIŠU DEPARTMAN ZA RAČUNARSKE NAUKE Utorak, godine PRIJEMNI ISPIT IZ INFORMATIKE 1. Koja od navedenih ekste

VEŽBA 5: KLASE I OBJEKTI U C# Cilj ove vežbe je upoznavanje sa osnovama rada sa klasama i objektima u programskom jeziku C#. Pored toga, bide demonstr

MIP-heuristike (Matheuristike) Hibridi izmedu metaheurističkih i egzaktnih metoda Tatjana Davidović Matematički institut SANU

UNIVERZITET U NOVOM SADU TEHNIČKI FAKULTET MIHAJLO PUPIN ZRENJANIN TEHNOLOGIJE DISTRIBUIRANIH INFORMACIONIH SISTEMA - Skripta za teorijski deo (RADNA

SEMINAR

Microsoft PowerPoint - 1. Zend_1 - Instalacija frameworka

Microsoft PowerPoint - podatkovni promet za objavu.pptx

OVO JE ZVANIČAN RCUB TEMPLATE: Normal

Funkcije predavač: Nadežda Jakšić

PowerPoint Presentation

Техничко решење: Метода мерења реактивне снаге у сложенопериодичном режиму Руководилац пројекта: Владимир Вујичић Одговорно лице: Владимир Вујичић Аут

Prikaz slike na monitoru i pisaču

Računarski praktikum I - Vježbe 11 - Funktori

Орт колоквијум

Programiranje u C-u ili C++-u Pseudo-slučajni brojevi; Dinamička alokacija memorije 1 ZADACI SA ČASA Zadatak 1 Napraviti funkciju koja generišlučajan

1. OPĆE INFORMACIJE 1.1. Naziv kolegija Programiranje 1.6. Semestar Nositelj kolegija dr.sc. Bruno Trstenjak, v. pred Bodovna vrijednost

Programski jezici i strukture podataka 2018/2019. Programski jezici i strukture podataka Računarske vežbe vežba 10 Zimski semestar 2018/2019. Studijsk

Logicko projektovanje racunarskih sistema I

Programiranje 1

УНИВЕРЗИТЕТ У НОВОМ САДУ ОБРАЗАЦ - 2 НАЗИВ ФАКУЛТЕТА ОБРАЗАЦ ЗА ПИСАЊЕ ИЗВЕШТАЈА О ПРИЈАВЉЕНИМ КАНДИДАТИМА НА КОНКУРС ЗА ИЗБОР У ЗВАЊЕ САРАДНИКА УНИВЕ

Microsoft Word - Akreditacija 2013

АГЕНЦИЈА ЗА БАНКАРСТВО РЕПУБЛИКЕ СРПСКЕ УПУТСТВО ЗА ЕЛЕКТРОНСКО ДОСТАВЉАЊЕ ПОДАТАКА ИЗ ОБЛАСТИ РЕСТРУКТУРИРАЊА БАНАКА Бања Лука, јули године

Microsoft Word - Akreditacija 2013

ImgBurn - instalacija i narezivanje ISO datoteke Mali alat pomocu koga jednostavno sa par klikova misa mozemo narezivati raznorazne medie... ImgBurn p

Microsoft Word - Akreditacija 2013

Microsoft Word - Akreditacija 2013

УПУТСТВО ЗА КОРИСНИКА Приступ локацији часописа Српски архив за целокупно лекарство добија се преко internet adrese: Након

УПУТСТВО ЗА ПИСАЊЕ ИЗВЕШТАЈА О ПРИЈАВЉЕНИМ КАНДИДАТИМА НА

МОДЕЛ КОНТРОЛНЕ ВЕЖБЕ Информатика и рачунарство за шести разред разред Наставна тема: Редни број часа: 8. РАЧУНАРСТВО Циљ часа: Теститарање постигнућа

Konstrukcija i analiza algoritama vežbe 10 Nina Radojičić 15. decembar Algoritamske strategije - podeli pa vladaj (divide and conquer) Ova stra

Tutoring System for Distance Learning of Java Programming Language

Uvod u računarstvo 2+2

Računarski praktikum I - Vježbe 07 - Podstrukture, const, reference

WordPress & CSP Polisa Sigurnosti Sadržaja za WordPress Milan Petrović WordCamp Niš

Domaći zadatak - GUI (rok za sve grupe je ) Napraviti repozitorijum na GitHub-u koji se zove MenjacnicaGUI i postaviti Eclipse projekat menj

PowerPoint Presentation

online CENOVNIK moving minds

Računarski praktikum I - Vježbe 09 - this, static

My_P_Red_Bin_Zbir_Free

KorisnickoA5TercF1

Tutoring System for Distance Learning of Java Programming Language

Primenjeno programiranje - vezbe GUI i baze podataka

kriteriji ocjenjivanja - informatika 8

Транскрипт:

UNIVERZITET U NOVOM SADU FAKULTET TEHNIČKIH NAUKA Odsek za elektrotehniku i računarstvo Institut za računarstvo i automatiku Katedra za računarsku tehniku i računarske komunikacije Jedno rešenje HE AAC za MIPS CPU Bachelor rad iz oblasti - DSP I - Mentor: Stanislav Očovaj Student: Pešut Đorđe E11062 Novi Sad, jun 2008.

SADRŽAJ: 1. Skradenice... 3 2. ZADATAK... 4 3. Teorijski uvod... 4 4. Opis MP4 formata datoteke... 5 4.1 HDLR... 5 4.2 STSD... 6 4.3 STSZ... 7 4.4 MDAT... 7 5. Opis LOAS/LATM formata... 8 6. Opis ADTS formata... 9 7. Opis rešenja... 10 8. Testiranje... 12 9. Zaključak... 13 10. LITERATURA... 14 2

1. Skraćenice 3G2 3GP 3GPP AAC AAC LC ADTS CRC HDLR HE-AAC IEC ISO LATM LOAS MDAT MP4 MPEG-4 PS SBR STSD STSZ 3GPP file format (file extension) 3GPP file format (file extension) Third Generation Partnership Project Advanced Audio Coding Low Complexity AAC Audio Data Transport Stream Cyclic Cedundancy Check Handler Reference Box High Efficiency AAC The International Electrotechnical Commission The International Organization For Standardization Low Overhead MPEG-4 Audio Transport Multiplex Low Overhead Audio Stream Media Data Box MPEG-4 file format (file extension) Moving Picture Expert Group Parametric Stereo Spectral Band Replication Sample Description Box Sample Size Boxes 3

2. ZADATAK Realizovati aplikaciju u programskom jeziku C, koja vrši ekstrakciju AAC audio toka iz datoteke u MP4 formatu, i njegovu konverziju u LOAS/LATM, odnosno ADTS format. Ulaz u aplikaciju je datoteka u MP4 formatu, a izlaz iz aplikacije je datoteka u LOAS/LATM, odnosno ADTS formatu. Realizovana aplikacija treba da zadovolji sledede kriterijume: Da bude napisana u C jeziku (bez C++ ekstenzija) Da bude platformski nezavisna (to jest da radi i na little-endian i big-endian platformama) Da bude optimizovana u pogledu brzine izvršavanja (dekodiranje AAC toka podataka ne dolazi u obzir!) Napomene: Pri konverziji u LOAS/LATM format koristiti AudioSyncStream() strukturu usesamestreammux treba da ima vrednost 0 allstreamssametimeframing treba da ima vrednost 1 numsubframes treba da ima vrednost 0 numprogram treba da ima vrednost 0 numlayer treba da ima vrednost 0 no_raw_data_blocks_in_frame treba da bude 0 ne treba koristiti CRC proveru zaglavlja audiomuxversion treba da bude 0 3. Teorijski uvod MPEG-4 je standard za čuvanje i isporučivanje multimedijalnog sadržaja. Predstavljen je pred kraj 1998. godine. Prvobitno je napravljen kao naslednik MPEG-1 i MPEG-2 standarda. Cilj je bio da se napravi standard za niske bitske brzine, pošto su prethodne verzije ved pokrivale visoke bitske brzine, ali je u fazi specfikacije MPEG-4 prerastao u standard koji je imao visok stepen kompresije i podržavao i niske i visoke bitske brzine. [3] Audio kodovanje u MPEG-4 standardu je urađeno po uzoru na AAC, sistem kodovanja iz MPEG-2 standarda, ali nije kompatibilan sa njim. MPEG-4 je uveo neke novine kako bi poboljšao efikasnost, posebno kod niskih bitskih protoka. AAC je sistem kodovanja sa gubicima. Postoji nekoliko tipova AAC-a, ali su dva najčešda: LC-AAC i HE-AAC. AAC u kombinaciji sa SBR-om i PS-om čini aacplus. SBR omogudava da audio kodek iporučuje isti kvalitet sa upola manjom bitskom brzinom. PS značajno uvedava efikasnost kodeka za stereo signale sa niskim bitskim brzinama. [3] Jedna od največih snaga MPEG-4 standarda u odnosu na druge je to što je otvoren standard, pa tako svi mogu da imaju uvid u specifikaciju i da prave aplikacije koje de ga podržavati. [3] 4

4. Opis MP4 formata datoteke MP4 je 12. deo MPEG-4 standarda. Puštanje fajlova preko mreže je podjednako dobro kao i puštanje na lokalnoj mašini. [2] MP4 je sastavljen od nekoliko atoma, od kojih neki sadrže i po nekoliko drugih. Na početku svakog atoma je njegova dužina, izražena u bajtima, i njegov tip. Prilikom parsiranja se prvo vidi kog je tipa atom, pa onda ako sadrži neke informacije koje su bitne za dalji rad se parsira, a ako ne sadrži onda se samo preskoči broj bajtova koje pokazuje polje za dužinu tog atoma. Za konverziju MP4 datoteke u LOAS/LATM I ADTS su potrebni slededi atomi i informacije koje su smeštene u njima: - HDLR - STSD - STSZ - MDAT 4.1 HDLR U ovom atomu se nalazi informacija o tipu handler-a sa kojim treba rukovati sadržajem. Tip atoma je 0x68646c72. 4 bajta koja prethode tipu označavaju dužinu HDLR atoma, a 4 bajta koja dolaze posle tipa, u ovom slučaju, su verzija i neki flag-ovi koji su ovde postavljeni na nule. Posle svega ovoga slede polja koja su navedena na slici 4.1.1 aligned(8) class HandlerBox extends FullBox( hdlr, version = 0, 0) { unsigned int(32) pre_defined = 0; unsigned int(32) handler_type; const unsigned int(32)[3] reserved = 0; string name; Slika 4.1.1 specifikacija HDLR atoma [2] Jedina informacija koja se vadi je handler_type. Vrednosti koje može sadržati to polje su: - vide Video track - soun Audio track - hint Hint track Za ovaj rad je potreban samo soun handler. 5

4.2 STSD U ovom atomu se nalazi informacija o broju kanala i frekvenciji odabiranja. Tip atoma je 0x73747364. 4 bajta koja prethode tipu označavaju dužinu STSD atoma, a 4 bajta koja dolaze posle tipa, u ovom slučaju, su verzija i neki flag-ovi koji su ovde postavljeni na nule. Posle svega ovoga slede polja koja su navedena na slici 4.2.1 aligned(8) abstract class SampleEntry (unsigned int(32) format) extends Box(format){ const unsigned int(8)[6] reserved = 0; unsigned int(16) data_reference_index; aligned(8) class SampleDescriptionBox (unsigned int(32) handler_type) extends FullBox('stsd', 0, 0){ int i ; unsigned int(32) entry_count; for (i = 1 ; i <= entry_count ; i++){ switch (handler_type){ case soun : // for audio tracks AudioSampleEntry(); break; case vide : // for video tracks VisualSampleEntry(); break; case hint : // Hint track HintSampleEntry(); break; class AudioSampleEntry(codingname) extends SampleEntry (codingname){ const unsigned int(32)[2] reserved = 0; template unsigned int(16) channelcount = 2; template unsigned int(16) samplesize = 16; unsigned int(16) pre_defined = 0; const unsigned int(16) reserved = 0 ; template unsigned int(32) samplerate = {timescale of media<<16; Slika 4.2.1 specifikacija STSD atoma [2] Ovde se pročita samo vrednost frekvencije. U ovom atomu se nalazi još jedan atom nazvan ESDS. U njemu se nalaze informacije o broju kanala i o prisutnosti SBR parametra. ESDS atom sadrži nekoliko sekcija, ali najvažnija je peta. Ona počinje bajtom 0x05. Posle njega mogu dodi opcioni bajtovi koji mogu imati jednu od sledede 3 vrednosti: 0x80, 0x81, 0xfe. Iza njih je 1 bajt koji označava dužinu deskriptora, a 6

posle toga dolaze najvažnija 2 bajta. Poslednji bit prvog je SBR bit, 0 označava da ga nema, a 1 da j e prisutan. Ako je SBR prisutan to znači da se prethodno očitana frekvencija deli na pola. Četvrti i tredi bit drugog bajta označavaju broj kanala. 4.3 STSZ U ovom atomu se nalazi informacija o broju i veličini odbiraka. Veličina odbiraka je izražena u bajtima. Tip atoma je 0x7374737a. 4 bajta koja prethode tipu označavaju dužinu STSZ atoma, a 4 bajta koja dolaze posle tipa, u ovom slučaju, su verzija i neki flag-ovi koji su ovde postavljeni na nule. Posle svega ovoga slede polja koja su navedena na slici 4.3.1 aligned(8) class SampleSizeBox extends FullBox( stsz, version = 0, 0) { unsigned int(32) sample_size; unsigned int(32) sample_count; if (sample_size==0) { for (i=1; i <= sample_count; i++) { unsigned int(32) entry_size; Slika 4.3.1 specifikacija STSZ atoma [2] 4.4 MDAT U ovom atomu se nalaze podaci enkodovanog AAC-a. Svi su spojeni u jednu celinu, ali se na osnovu podataka o veličini odbiraka mogu podeliti u frejmove. Tip atoma je 0x6d646174. 4 bajta koja prethode tipu označavaju dužinu MDAT atoma. Ako se dužina svih odbiraka i dužina MDAT atoma ne slažu, onda je potrebno zanemariti prvih 8 bajtova koji su najčešde nule. To se radi jer različiti enkoderi prave različite fajlove. Nero ubaci te nule, dok ih itunes ne ubacuje. MDAT je poslednji i najvedi atom u MP4 datoteci, i zauzima skoro celu datoteku. aligned(8) class MediaDataBox extends Box( mdat ) { bit(8) data[]; Slika 4.4.1 specifikacija MDAT atoma [2] 7

5. Opis LOAS/LATM formata LOAS podržava 3 strukture ali se ovde koristi samo AudioSyncStream() struktura. Ona sadrži sinhronizacionu reč, multipleksirani element i dužinu frejma. Maksimalna udaljenost dve sinhronizacione reči je 8192 bajta. [1] AudioSyncStream(){ while (nextbits() == 0x2B7 ) { /* syncword */ audiomuxlengthbyteslast; AudioMuxElement( 1 ); ByteAlign(); 11 bslbf 13 uimsbf Slika 5.1 specifikacija AudioSyncStream strukture [1] audiomuxlengthbyteslast dužina multipleksiranog elementa sa poravnanjem na nivou bajta. [1] Jedinica koja se nalazi u pozivu AudioMuxElement-a označava da se StreamMuxConfig nalazi unutar tekudeg frejma. [1] Neke od napomena, koje važe za ovaj zadatak, uprošdavaju rad i mnogobrojne FOR petlje, iz dalje specifikacije, svode na samo jedan prolaz. Kada se upišu svi biti koji su potrebni za zaglavlje frejma dobija se broj bita koji nije deljiv sa 8, pa se onda bajtovi payload-a moraju deliti. LOAS/LATM se koristi kao standard u streaming-u. 8

6. Opis ADTS formata adts_sequence(){ while (nextbits()==syncword) { adts_frame() adts_frame(){ byte_alignment() adts_fixed_header() adts_variable_header() adts_error_check() for( i=0; i<no_raw_data_blocks_in_frame+1; i++) { raw_data_block() Slika 6.1 specifikacija ADTS formata [1] Specifikacija ostalih delova je prikazana u [1]. ADTS sadrži 2 tipa zaglavlja, jedno koje se ne menja između frejmova, i jedno koje menja svoje parametre između frejmova. [1] U ADTS-u broj bita zaglavlja je deljiv sa 8, pa se onda payload može samo prekopirati, bajtovi ostaju kakvi su i u MP4 datoteci, odnosno njenom MDAT atomu. Ovde je kao i u LOAS-u olakšan rad sa napomenama iz teksta zadatka. ADTS se kao i LOAS koristi kao standard u streaming-u. 9

7. Opis rešenja U zadatku se prvo parsira MP4 datoteka i iz nje se izvuku sve potrebne informacije kako bi se mogle napraviti LOAS i ADTS datoteke. Slika 7.1 Gloabalni pogled na sistem 10

Na slici 7.1 se vidi da se iz MP4 datoteke prasiraju samo 4 atoma. Kada se isparsira atom MDAT to je kraj programa, jer je MDAT poslednji atom u MP4 datoteci. Ako se naiđe na neki od atoma koji nije od ova 4 koja su potrebna za parsiranje, program preskače taj atom u MP4 datoteci. Slika 7.2 Parsiranje MDAT atoma (levo) i parsiranje STSD atoma (desno) 11

Na slici 7.2 desno, se vidi algoritam za parsiranje STSD atoma. Očitaju se frekvencija i broj kanala i SBR parametar. Ako je SBR parametar aktivan (1), to predstavlja da se prenosi duplo niža frekvencija pa se očitana mora podeliti na pola. Na slici 7.2 levo, se vdi algoritam parsiranja MDAT atoma. Tu se prvo proveri da li je koder koji je pravio MP4 datoteku dodao nepotrebne nule na početak atoma, pa ako jeste one se onda preskaču. Posle toga se ulazi u petlju koja se vrti onoliko puta koliko ima odbiraka. U svakom prolazu se pročitaju bajtovi odbirka i prave se LOAS i ADTS frejmovi. Funkcije parsiranja druga dva atoma se svode samo na očitavanje bajtova, pa se algoritmi nisu uvrstili u dokumentaciju. Iz atoma HDLR se očitava tip handler-a, iz atoma STSD se dobijaju vrednost frekvencije sa uračunatim SBR parametrom i broj kanala. STSZ atom sadrži vrednosti veličine odbiraka, a u MDAT atomu su enkodovani podaci koji se izvlače po odbircima. Pravljenje LOAS frejma se sastoji od upisa odgovarajudih bita u zaglavlje i kopiranje enkodovanih bajtova. ADTS se pravi na isti način samo što se pravi drugačije zaglavlje. Pošto se u zaglavlja pišu biti, a ne bajtovi onda je napravljena posebna funkcija, writebits, koja upisuje zadatu vrednost na određeni broj bita. Zaglavlje LOAS frejma je takve veličine da nije deljivo sa 8, pa se bajtovi u payload-u moraju deliti u odnosu 3 na prema 5. Ti biti se nisu upisivali sa funkcijom writebits zbog optimizacije koda. Kod ADTS-a nema toga, tamo je sve poravnato. 8. Testiranje Testiranje je izvršeno uz pomod batch fajla, i test je obuhvatio 61 datoteku sa muzikom. Za sve fajlove test je prošao uspešno. Fajlovi nad kojima se vršilo testiranje, generisani su pomodu Nero i itunes AAC kodera. Test se sastoji iz slededih faza: Pravljenje referentnog dekodovanog fajla pomodu Coding Technologies AAC dekodera za MP4 fajlove Pokretanja programa koji konvertuje MP4 u LOAS i ADTS Pravljenje dekodovanog fajla od LOAS-a pomodu Coding Technologies AAC dekodera za LOAS fajlove Pravljenje dekodovanog fajla od ADTS-a pomodu Coding Technologies AAC dekodera za ADTS fajlove Poređenje dekodovanih fajlova, dekodovani MP4 i dekodovani LOAS, pa dekodovani MP4 i dekodovani ADTS Testom su obuhvadeni MP4, M4A, 3GP i 3G2 fajlovi. 12

9. Zaključak Prilikom pregledanja MP4 fajlova u heksadecimalnoj predstavi, primetio sam da različiti koderi prave različite fajlove. Nero dodaje neke nule na početak MDAT atoma, dok itunes to ne radi. Nule se otkrivaju poređenjem veličina MDAT atoma i sume veličina svih odbiraka. Te dve vrednosti bi trebalo da su iste. Ako nisu, onda na početku MDAT atoma postoje nule koje treba zanemariti. 13

10. LITERATURA [1] ISO IEC 14496-3 Sub 1 [2] ISO-IEC-14496-12_2005_MP4 [3] MPEG4WhitePaper [4] ISO_IEC_14496-3 MPEG4 Audio [5] ISO IEC 14496-3 Sub 4 14