atom1477 napisał: 1: W pliku 11172-3.pdf brakuje Annex-ów. Wie ktoś skąd je wziąść?
Z tąd:
http://www.iso.org/iso/en/CatalogueDetailPage.CatalogueDetail?CSNUMBER=22412
Niestety z dewizy i to nie mało :/
Ale z tego co się orientuję, to same tabelki, trzeba by to porównać np. ze żródłami z Fraunhofer IIS. Tabelki są wczytywane z plików w
common.c
atom1477 napisał: 2: Zgodnie z opisem w tym pdfie każda ramak zawiera informacje o warstwie, częstotliwości próbkowania, sposobie kodowania Stereo itd. itp. Czy to oznacza że tak w środku mp3-ki można sobie raptem zmienić mono na stereo albo zmienić Layer II na Layer III?
Teoretycznie można, ale się tego nie robi.
atom1477 napisał: 3: Czy każda ramka ma długość równą n*8? (Czyli czy skłąda się z całych bajtów)
Tak
Cytat: frame - Layer I and Layer II: Part of the bitstream that is decodable by itself. In Layer I it contains
information for 384 samples and in Layer II for 1152 samples. It starts
with a syncword, and ends just before the next syncword. It consists of
an integer number of slots (four bytes in Layer I, one byte in Layer II).
- Layer III: Part of the bitstream that is decodable with the use of previously
acquired side and main information. In Layer III it contains
information for 1152 samples. Although the distance between the start
of consecutive syncwords is an integer number of slots (one byte in
Layer III), the audio information belonging to one frame is generally
not contained between two successive syncwords.
A to ostatnie zdanie, to chodzi o to, że dane audio należące do danej ramki najczęściej nie są w całości umieszczone tylko w tej ramce, ale i w poprzedniej.
atom1477 napisał: 4: Jak mam rozumieć że początek ramki (syncword) to "111111111111"? Pierwszy bajt FF a drugi Fx? To jest zapisane od MSB do LSB?
Tak, a ten 'x' to kolejne bity nagłówka (ID, Layer i protection_bit), średnio to wygodne, ale w końcu to kompresja, więc wszystko trzeba maksymalnie upakować.
Z tymi tablicami jedno i dwuwymiarowymi to jest taki myk, że one są i tak wszystkie jednowymiarowe. Przestrzeń adresowa większości procesorów jest liniowa i jednowymiarowa (jeżeli chodzi o pamięć danych), więc tak też przechowywane są wszystkie dane. Czyli tak na prawdę tablica składająca się z dwoch wierszy po 4 kolumny przechowywana jest jako 8 następujących po sobie komórek, najpierw pierwszy wiersz, a potem drugi.
tablica[rozmiar_x][rozmiar_y]
jest równoważne:
tablica[rozmiar_x * rozmiar_y]
Odwołanie się do elementu tablicy dwuwymiarowej:
jest równoważne:
tablica[x * rozmiar_y + y]
lub:
tablica[y * rozmiar_x + x]
W zależności od tego w jaki sposób przechowywane są w pamięci tablice wielowymiarowe.