Resource Interchange File Format
Resource Interchange File Format (RIFF) – format plików przeznaczony do przechowywania danych multimedialnych.
Format RIFF został wprowadzony przez firmy Microsoft i IBM w 1991 roku jako domyślny format plików multimedialnych dla Windows 3.1. Format ten bazuje na formacie IFF, opracowanym przez Electronic Arts we współpracy z Commodore dla komputerów Amiga 1000 w 1985 roku. Jedyna różnica to zmiana kolejności bajtów w sekwencjach bajtów zawierających dane liczbowe, co było związane ze zmianą architektury procesora z M68xxx na 80x86.
Format RIFF jest używany do przechowywania dźwięku (RIFF WAVE), obrazów (RDI), video (RIFF AVI), muzyki MIDI (RMI) i innych.
Budowa formatu
[edytuj | edytuj kod]Format RIFF opiera się na oznakowanych blokach danych o podanej długości (ang. chunks). Każdy blok składa się z nagłówka i pola danych. Nagłówek zawiera identyfikator bloku i długość pola danych. Identyfikator (zwany też FourCC) to cztery bajty – litery w kodzie ASCII. Następuje po nim 32-bitowa liczba bez znaku zapisana w formacie little endian określająca długość pola danych w bajtach.
Plik w formacie RIFF składa się z bloku nadrzędnego o identyfikatorze "RIFF", wewnątrz którego znajduje się 4-bajtowy identyfikator podformatu (np. "WAVE"), a następnie bloki podrzędne, których identyfikatory, ilość, kolejność występowania i zawartość pól danych zależą od podformatu. W prawidłowo zbudowanym pliku RIFF długość bloku głównego jest równa długości całego pliku pomniejszonego o 8. Konstrukcja formatu ogranicza maksymalną długość pliku do 4 GB.
Konstrukcja formatu RIFF jest bardzo podobna do IFF, różnica polega na sposobie zapisu długości bloków (IFF używa zapisu big endian).
Przykład pliku
[edytuj | edytuj kod]Rysunek przedstawia strukturę przykładowego pliku RIFF WAVE o całkowitej długości 43 647 208 bajtów. Kolorem zielonym oznaczono blok główny, kolorami niebieskim i brązowym bloki podrzędne. Przyciemniono nagłówki bloków (identyfikator i długość pola danych). Lewa kolumna zawiera numer bajtu od którego zaczynają się dane w kolumnie środkowej.