RIFF (англ. Resource Interchange File Format) — один з форматів файлів-контейнерів для збереження потокових даних.
Найчастіше використовується для збереження потокових мультимедіа-даних (відео, аудіо, можливо текст).
Найвідоміші формати, які використовують RIFF як контейнер: AVI (відео), WAV (аудіо), RMI (MIDI-треки).
Формат RIFF використовує little-endian порядок байтів (молодший байт іде першим). Для машин з форматом даних big-endian існує формат RIFX, але через дуже слабку популярність машин з таким форматом даних, RIFX не прижився, і в сучасності RIFF використовується також і на машинах з big-endian порядком байтів.
RIFF формати файлів
RIFF формати забезпечують можливість зберігати велике різноманіття даних, таких як зображення, аудіо записи, відео, і інформацію необхідну для налаштування периферичних пристроїв. Тип даних, які записані у RIFF файлі визначається розширенням файлу. Приклади видів даних, які можуть бути записані у RIFF файлі:
- аудіо/відео дані (.AVI)
- аудіо дані (.WAV)
- дані растрових зображень (.RDI)
- MIDI інформація (.RMI)
- Палітра кольорів (.PAL)
- Мультимедійний фільм (.RMN)
- Анімований курсор (.)
- Набір інших RIFF файлів (.BND)
На сьогодні, AVI формат єдиний з усіх типів RIFF файлів, який повністю реалізований з виконанням актуальної специфікації RIFF. Хоча WAV файли також мають повну реалізацію, розробники зазвичай використовують більш просту і давню специфікацію при записі файлів.
Структура RIFF файлу
RIFF це бінарний формат файлу, який містить декілька пов'язаних структур даних. Такі структури даних, з яких складається RIFF файл, називаються секціями. Секції не мають фіксованої позиції у файлі, тому ніякі фіксовані зміщення не можна використати для того, щоб визначити позицію полів. Секція, яка містить в собі такі дані як структуру даних, масив бінарних даних, чи іншу секцію, називається підсекцією. Кожна секція у RIFF файлі має відповідну базову структуру:
typedef struct _Chunk { DWORD ChunkId; /* Ідентифікатор секції */ DWORD ChunkSize; /* Розмір даних секції у байтах */ BYTE ChunkData[ChunkSize]; /* Дані секції */ } CHUNK;
- ChunkId складається з 4-ох ASCII символів, які є ідентифікатором даних, що містяться у секції. Наприклад, ідентифікатор RIFF використовується для позначення секції яка містить RIFF дані. Якщо ідентифікатор менше чотирьох символів він доповнюється символами пробілу справа (ASCII 32). RIFF файли записуються у little-endian порядку байт. Файли, які записуються за схемою big-endian мають ідентифікатор RIFX.
- ChunkSize — розмір даних записаних у полі ChunkData, не включаючи вирівнювання яке можуть мати дані. Розмір полей ChunkId і ChunkSize не включається в сумарний розмір даних.
- ChunkData містить дані з вирівнюванням по словам при записі RIFF файлу. Якщо дані мають не парний розмір в кінець даних дописують додатковий байт NULL.
Підсекції також мають таку саму структуру як і секції. Допустимі секції, які можуть містити підсекції це секція RIFF і секція яка містить список LIST. Інші секції можуть містити лише дані.
Посилання
- Microsoft RIFF Format Reference [ 20 червня 2014 у Wayback Machine.]
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
RIFF angl Resource Interchange File Format odin z formativ fajliv kontejneriv dlya zberezhennya potokovih danih Najchastishe vikoristovuyetsya dlya zberezhennya potokovih multimedia danih video audio mozhlivo tekst Najvidomishi formati yaki vikoristovuyut RIFF yak kontejner AVI video WAV audio RMI MIDI treki Format RIFF vikoristovuye little endian poryadok bajtiv molodshij bajt ide pershim Dlya mashin z formatom danih big endian isnuye format RIFX ale cherez duzhe slabku populyarnist mashin z takim formatom danih RIFX ne prizhivsya i v suchasnosti RIFF vikoristovuyetsya takozh i na mashinah z big endian poryadkom bajtiv RIFF formati fajlivRIFF formati zabezpechuyut mozhlivist zberigati velike riznomanittya danih takih yak zobrazhennya audio zapisi video i informaciyu neobhidnu dlya nalashtuvannya periferichnih pristroyiv Tip danih yaki zapisani u RIFF fajli viznachayetsya rozshirennyam fajlu Prikladi vidiv danih yaki mozhut buti zapisani u RIFF fajli audio video dani AVI audio dani WAV dani rastrovih zobrazhen RDI MIDI informaciya RMI Palitra koloriv PAL Multimedijnij film RMN Animovanij kursor Nabir inshih RIFF fajliv BND Na sogodni AVI format yedinij z usih tipiv RIFF fajliv yakij povnistyu realizovanij z vikonannyam aktualnoyi specifikaciyi RIFF Hocha WAV fajli takozh mayut povnu realizaciyu rozrobniki zazvichaj vikoristovuyut bilsh prostu i davnyu specifikaciyu pri zapisi fajliv Struktura RIFF fajluRIFF ce binarnij format fajlu yakij mistit dekilka pov yazanih struktur danih Taki strukturi danih z yakih skladayetsya RIFF fajl nazivayutsya sekciyami Sekciyi ne mayut fiksovanoyi poziciyi u fajli tomu niyaki fiksovani zmishennya ne mozhna vikoristati dlya togo shob viznachiti poziciyu poliv Sekciya yaka mistit v sobi taki dani yak strukturu danih masiv binarnih danih chi inshu sekciyu nazivayetsya pidsekciyeyu Kozhna sekciya u RIFF fajli maye vidpovidnu bazovu strukturu typedef struct Chunk DWORD ChunkId Identifikator sekciyi DWORD ChunkSize Rozmir danih sekciyi u bajtah BYTE ChunkData ChunkSize Dani sekciyi CHUNK ChunkId skladayetsya z 4 oh ASCII simvoliv yaki ye identifikatorom danih sho mistyatsya u sekciyi Napriklad identifikator RIFF vikoristovuyetsya dlya poznachennya sekciyi yaka mistit RIFF dani Yaksho identifikator menshe chotiroh simvoliv vin dopovnyuyetsya simvolami probilu sprava ASCII 32 RIFF fajli zapisuyutsya u little endian poryadku bajt Fajli yaki zapisuyutsya za shemoyu big endian mayut identifikator RIFX ChunkSize rozmir danih zapisanih u poli ChunkData ne vklyuchayuchi virivnyuvannya yake mozhut mati dani Rozmir polej ChunkId i ChunkSize ne vklyuchayetsya v sumarnij rozmir danih ChunkData mistit dani z virivnyuvannyam po slovam pri zapisi RIFF fajlu Yaksho dani mayut ne parnij rozmir v kinec danih dopisuyut dodatkovij bajt NULL Pidsekciyi takozh mayut taku samu strukturu yak i sekciyi Dopustimi sekciyi yaki mozhut mistiti pidsekciyi ce sekciya RIFF i sekciya yaka mistit spisok LIST Inshi sekciyi mozhut mistiti lishe dani PosilannyaMicrosoft RIFF Format Reference 20 chervnya 2014 u Wayback Machine