RIFF

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)
  • Анімований курсор (.ANI)
  • Набір інших 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.]
Перегляд цього шаблону
  Словники та енциклопедії
BabelNet
Нормативний контроль
Freebase: /m/011z8c
  • п
  • о
  • р
Стиснення відео
ISO/IEC
ITU-T
SMPTE[en]
  • VC-1[en]
  • VC-2[en]
  • VC-3[en]
  • VC-5[en]
AOMedia[en]
IETF
SAC
  • AVS[en]
Інші
  • Apple Video[en]
  • Bink[en]
  • Cinepak[en]
  • Daala
  • DVI
  • FFV1[en]
  • HuffYUV
  • Indeo[en]
  • Lagarith[en]
  • Microsoft Video 1[en]
  • MSU Lossless[en]
  • OMS Video[en]
  • Pixlet[en]
  • ProRes 422[en]
  • ProRes 4444[en]
  • QuickTime
    • Animation[en]
    • Graphics[en]
  • RealVideo
  • RTVideo[en]
  • SheerVideo[en]
  • Smacker[en]
  • Sorenson Video, Spark[en]
  • Theora
  • Thor[en]
  • VP3[en]
  • VP6[en]
  • VP7[en]
  • VP9
  • WMV
  • XEB[en]
  • YULS[en]
Стиснення аудіо
ISO/IEC
ITU-T
IETF
  • Opus
  • iLBC[en]
  • Speex[en]
  • Vorbis
3GPP
  • AMR
  • AMR-WB[en]
  • AMR-WB+[en]
  • EVRC[en]
  • EVRC-B[en]
  • EVS[en]
  • GSM-HR
  • GSM-FR
  • GSM-EFR
ETSI
SAC
  • AVS[en]
  • DRA[en]
Інші
Стиснення зображень
IEC, ISO,
ITU-T, W3C, IETF
Інші
Контейнери
ISO/IEC
  • MPEG-ES[en]
    • MPEG-PES
  • MPEG-PS[en]
  • MPEG-TS
  • ISO base media file format[en]
  • MPEG-4 Part 14 (MP4)
  • Motion JPEG 2000[en]
  • MPEG-21 Part 9[en]
  • MPEG media transport[en]
ITU-T
IETF
SMPTE[en]
3GPP
Інші
Співробітництво
  • NETVC[en]
  • MPEG-LA[en]