Extras din proiect
Codarea Audio
Înca din anii ’80, la scurt timp de la aparitia primului PC, s-a constatat faptul ca spatiul disponibil pe orice mediu ce poate stoca date (hard disk, discheta, streamer, unitate optica) devine insuficient într-un timp relativ scurt. Obtinerea unui dispozitiv de stocare de capacitate mai mare nu reprezinta mereu o solutie pentru ca implica niste costuri mari sau o manevrare greoaie (mai ales în cazul dischetelor), fara a mai vorbi de faptul ca nu toate mediile sunt sigure - dischetele, spre exemplu, având sanse majore sa se defecteze dupa un timp oarecare. Asa s-a nascut ideea de comprimare (compresie) a datelor, informatiile putând fi arhivate, ocupând un spatiu mai mic decât cel initial. Nu vom face o istorie a programelor care au înlesnit aceasta operatie, vom mentiona doar faptul ca PKZIP si ARJ au dominat perioada de sfârsit a anilor ’80 si cea de început a anilor ’90, urmând ca apoi, dupa 1995, sa apara doua noi soft-uri dedicate acestui scop, cu performante superioare celor doua amintite anterior: RAR si ACE.
Odata cu aparitia Internet-ului, a aparut o noua utilitate a compresiei: viteza liniei telefonice (sau a oricarei alte modalitati uzuale de transmitere din anii ‘90) era foarte mica, incompatibila cu volumul de date dorit a se descarca din reteaua mondiala. În prezent, un program ce ocupa 20 MB va necesita o durata de transfer de circa o ora pe o conexiune obisnuita dial-up, timpul fiind înjumatatit în cazul în care el este comprimat. Se economisesc astfel bani si timp. Chiar si modemurile realizeaza intern compresie, dar ea este departe de prefórmatele lui WinRAR sau WinACE, spre exemplu.
Desigur, în cazul comprimarii software este necesara decomprimarea ulterioara, operatie care necesita timp. Exista în schimb posibilitatea comprimarii transparente, datele fiind supuse acestei operatii fara ca utilizatorul sa stie acest lucru. Cu alte cuvinte, datele sunt comprimate si decomprimate automat - evident, cu o scadere mai mult sau mai putin observabila a vitezei de lucru, dar avantajul este clar: utilizatorul nu mai trebuie sa-si bata capul cu compresia, pur si simplu ruleaza programul de compresie si acesta face totul pentru el. Acest mod de comprimare a datelor se numeste comprimare în timp real.
Pornind de la aceasta idee, comprimarea în timp real poate fi totala sau partiala. Cel mai bun exemplu de comprimare totala în timp real o reprezinta compresia unei partitii, utilizându-se un software precum DoubleSpace, DriveSpace, Stacker etc. Dezavantajele sunt majore si constau în posibilitatea redusa de control si riscul mare de pierdere a datelor. Probabil ca autorii acestor soft-uri nu au considerat necesara dezvoltarea lor la un nivel de calitate ridicat, astfel ca ele au disparut de câtiva ani buni.
Compresia partiala în timp real poate fi exemplificata prin sistemul de comprimare furnizat de Windows 2000/XP, sistemul de operare oferind posibilitatea micsorarii spatiului pe care datele îl ocupa, prin intermediul sistemului de fisiere NTFS, aceasta cu pretul scaderii (de obicei nesemnificative) a vitezei de lucru. Comprimarea poate fi realizata la nivel de fisier, deci daca aveti pe hard disk date folosite rar, puteti opta pentru aceasta solutie.
Tot comprimare partiala putem numi cazul în care un fisier este comprimat initial, el urmând sa fie decomprimat automat la apelare. Programul decodor, care decomprima automat informatiile, lucreaza perfect transparent, utilizatorul neluând la cunostinta faptul ca datele sale nu sunt în forma pura ci codificate printr-un algoritm de compresie. Astfel de exemple sunt formatele imagine (JPG, GIF, PNG), video (AVI, MPG, MOV) si de sunet (MP3, MPC, OGG etc). În acest proiect ne vom ocupa de acestea din urma.
Cum se realizeaza compresia datelor
Sa presupunem ca avem un fisier ce contine sirul de caractere „AAABBBBBCCCDDDDEFF”. O metoda de comprimare a sa o reprezinta alaturarea numarului de repetitii cu litera în cauza, rezultând „3A5B3C4D1E2F”. Am economisit 6 bytes, adica 50% din spatiul ocupat. Desigur, exemplul este banal, comprimarea decurgând pe baza unor algoritmi mult mai complecsi si mai eficienti Huffman, Lempel-Ziv, etc.
Sa luam alt exemplu: sirul „AAABBBBCCCDDDEEEFFFGGG”. Observam ca fiecare litera este repetata de trei ori, cu exceptia lui „B” si „E”, care au factorul de repetitie 4 si respectiv 2. În cazul în care factorul ar fi tot 3 am obtine, dupa un algoritm banal „3(ABCDEFG)” în loc de „3A4B3C3D2E3F3G”, economisind mai mult spatiu. Problema se pune daca ne putem lipsi de informatia legata de exceptia de la „regula celor 3”, obtinând o compresie cu pierdere, fisierul decomprimat ulterior nefiind identic cu cel original. În cazul programelor, acest lucru este imposibil, un singur bit modificat ducând în general la imposibilitatea programului de a rula sau eventual la un comportament anormal; cum ar fi daca unele din literele care compun cuvintele din meniul unei aplicatii sa fie schimbate sau în cadrul unui program dedicat matematicienilor numarul pi sa aiba o valoare „usor” schimbata, de exemplu 3.10 sau 3.25? În cazul fisierelor ce contin date de tipul filmelor, imaginilor sau sunetului, lipsa unor informatii poate fi trecuta cu vederea (sau cu auzul, dupa caz). Exemple clasice sunt formatele de compresie video si audio cu pierdere de calitate - lossy, precum JPG, MPG, MP3. Prin opozitie, comprimarea fara pierdere poarta numele de lossless.
Preview document
Conținut arhivă zip
- Codarea Audio.doc