Formát souboru pro výměnu zdrojů - Resource Interchange File Format

RIFF
První vydání Srpen 1991 ; Před 29 lety  ( 1991-08 )
Typ formátu Kontejner
Rozšířeno z Interchange File Format
Rozšířeno na AVI , ANI , PAL, RDIB, RMIDI, RMMP, WAV

Resource Interchange File Format ( RIFF ) je obecný soubor nádoba formát pro ukládání dat v označených kousky . Primárně se používá k ukládání multimédií, jako je zvuk a video, lze jej však také použít k ukládání libovolných dat.

Implementace Microsoftu je většinou známá prostřednictvím formátů kontejnerů jako AVI , ANI a WAV , které jako základ používají RIFF.

Dějiny

RIFF byl představen v roce 1991 společnostmi Microsoft a IBM a byl představen společností Microsoft jako výchozí formát pro multimediální soubory systému Windows 3.1 . Je založen na Electronic Arts " Interchange File Format , který byl zaveden v roce 1985 na Commodore Amiga , jediným rozdílem, že víceletá byte čísla jsou v little-endian formátu, domácí v 80x86 řady procesorů používaných v IBM PC, spíše než BIG -endiánský formát nativní pro procesory řady 68k používané v počítačích Amiga a Apple Macintosh , kde byly soubory IFF hojně využívány. Byl také představen formát RIFX využívající formát big-endian.

V roce 2010 Google představil formát obrázku WebP , který používá RIFF jako kontejner.

Vysvětlení

Soubory RIFF se skládají výhradně z „ bloků “. Celkový formát je identický s IFF , s výjimkou endianity, jak již bylo uvedeno, a odlišného významu názvů bloků.

Všechny bloky mají následující formát:

  • 4 bajty: identifikátor ASCII pro tento blok (příklady jsou „fmt“ a „data“; všimněte si mezery v „fmt“).
  • 4 bajty: nepodepsané 32bitové celé číslo typu endian s délkou tohoto bloku (kromě tohoto samotného pole a identifikátoru bloku).
  • pole proměnné velikosti: samotná data bloku o velikosti uvedené v předchozím poli.
  • bajt pad, pokud délka bloku není stejná.

Dva identifikátory bloků, „RIFF“ a „LIST“, představují blok, který může obsahovat dílčí bloky. Data bloku RIFF a LIST (zobrazená za identifikátorem a délkou) mají následující formát:

  • 4 bajty: identifikátor ASCII pro tento konkrétní blok RIFF nebo LIST (pro RIFF v typickém případě tyto 4 bajty popisují obsah celého souboru, například „AVI“ nebo „WAVE“).
  • zbytek dat: dílčí bloky.

Samotný soubor se skládá z jednoho bloku RIFF, který pak může obsahovat další dílčí bloky: první čtyři bajty správně formátovaného souboru RIFF tedy vyhláskují „R“, „I“, „F“, „F“.

Další informace o formátu RIFF najdete v článku Interchange File Format .

RF64 je vícekanálový formát souboru založený na specifikaci RIFF vyvinutý Evropskou vysílací unií . Je kompatibilní s BWF a umožňuje velikost souborů přesahovat 4 gigabajty . Činí tak tím, že poskytuje diskový blok „ds64“ s 64bitovou (8bajtovou) velikostí.

Použití bloku INFO

Volitelný blok INFO umožňuje standardizovaným způsobem „označit“ soubory RIFF informacemi spadajícími do řady předdefinovaných kategorií, jako jsou autorská práva („ICOP“), komentáře („ICMT“), umělec („IART“). Tyto podrobnosti lze číst ze souboru RIFF, i když zbytek formátu souboru není rozpoznán. Standard také umožňuje použití polí definovaných uživatelem. Programátoři, kteří mají v úmyslu používat nestandardní pole, by měli mít na paměti, že stejné nestandardní ID dílčího bloku mohou různé aplikace používat různými (a potenciálně nekompatibilními) způsoby.

Problémy s kompatibilitou

Počáteční potíže se soubory MIDI

V souladu se svými zásadami používání souboru .RIFF pro všechny „multimediální“ soubory systému Windows 3.1 představila společnost Microsoft novou variantu stávajícího formátu souborů MIDI používaného k ukládání informací o písních určených k přehrávání na elektronických hudebních nástrojích. „Nový“ formát souboru MIDI společnosti Microsoft sestával ze standardního souboru MIDI uzavřeného v „obalu“ RIFF a měl příponu souboru .RMI . Vzhledem k tomu, že existující formát souboru MIDI již podporoval vložené informace o „označování“, nebyly pro uživatele zřejmé výhody nového formátu.

Sdružení výrobců MIDI od té doby přijalo formát MIDI souborů založený na RIFF a použil jej jako základ „rozšířeného středního souboru “, který zahrnuje také data nástroje ve formátu „ DLS “, vložený do stejného souboru .RMI.

Problémy s umístěním INFO bloku

Pro účely katalogizace je optimální pozice pro blok INFO blízko začátku souboru. Jelikož je INFO blok volitelný, je z podrobných specifikací jednotlivých formátů souborů často vynechán, což vede k určitému zmatku ohledně správné polohy tohoto bloku v souboru.

Když pracujete s velkými mediálními soubory, může expanze nebo kontrakce bloku INFO během editace tagu vést k tomu, že následující část „data“ souboru bude muset být přečtena a přepsána zpět na disk, aby se přizpůsobila nové velikosti záhlaví. Jelikož mediální soubory mohou mít velikost gigabajtů, jedná se o proces potenciálně náročný na disk. Jedním řešením je „vyřazení“ předního bloku INFO pomocí fiktivních dat (pomocí „fiktivního bloku“ nebo „bloku bloku“) při vytváření souboru. Pozdější úpravy pak mohou „fiktivní“ pole rozšířit nebo zkrátit, aby byla zachována konstantní celková velikost záhlaví souboru: inteligentně napsaný software pak může přepsat pouze záhlaví souboru, když se změní označení dat, aniž by bylo nutné měnit nebo přesouvat hlavní část souboru soubor.

Některé programy se pokusily problém vyřešit umístěním bloku INFO na konec mediálního souboru za hlavní část souboru. To má za následek dvě různé konvence pro umístění diskových bloků s rizikem, že některé kombinace softwaru mohou způsobit, že budou INFO data souboru ignorována nebo trvale přepsána během editace. Sofistikovanější programy budou brát v úvahu možnost „neočekávaného“ umístění bloků v souborech a odpovídajícím způsobem reagovat. Například když program pro úpravu zvuku Audacity narazí na soubor .WAV s koncovými INFO daty, správně identifikuje a načte data, ale po uložení přemístí INFO blok zpět do záhlaví souboru.

Ačkoli CorelDRAW 10 nominálně používá strukturu souborů RIFF, počáteční vydání programu umístilo INFO blok na konec, takže by se ve správci souborů systému Windows ve výchozím nastavení nezobrazil žádný vložený náhledový bitmapový soubor. Tento problém řeší obslužný program „patch“ dodávaný s programem.

Informační štítky RIFF

Informační štítky RIFF se nacházejí ve zvukových souborech WAV a video AVI. Značky, které jsou součástí specifikace Exif 2.2 (ID značky začínající písmenem „I“), mají ve verzi HTML této dokumentace podtržený název značky. Další značky se nacházejí v souborech AVI generovaných softwarem pro úpravy videa Sony Vegas .

ID značky Název štítku Zapisovatelný Hodnoty / poznámky
DTIM DateTimeOriginal N Hodnoty formátu ICC profilu „dtim“
PÁSKA TapeName N

Převod času DTIM na normální čas

Pole se skládá ze dvou hodnot (v [0] a v [1]) oddělených mezerou (0x20). Ukázkový kód:

// time in seconds - "concatenate" date & time elements with a decimal point delimiter
TimeInSeconds = (v[0] * (2^32) + v[1]) * 10^(-7);

// shift basis from Jan 1, 1601 to Unix epoch Jan 1, 1970 (369 years & leap days)
UnixTimeStamp = TimeInSeconds - 134774 * 24 * 3600;

Některé běžné typy souborů RIFF

  • WAV (Windows audio)
  • AVI (Windows audiovizuální)
  • RMI (Windows „RIFF MIDIfile“)
  • CDR (soubor vektorové grafiky CorelDRAW)
  • ANI (animované kurzory Windows)
  • PAL (paleta)
  • DLS (zvuky ke stažení)
  • WebP (formát obrázku vyvinutý společností Google)
  • XMA ( zvukový formát konzoly Microsoft Xbox 360 založený na WMA Pro )

Viz také

Reference

externí odkazy