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, Інтернет