RIFF

RIFF ( English  Resource Interchange File Format ) er et af filformaterne - beholdere til lagring af streaming multimediedata ( video , lyd , eventuelt tekst). De mest berømte containerformater, der bruger RIFF som basis, er: AVI (video), WAV (lyd), RMI ( MIDI - spor).

RIFF-formatet bruger little-endian byte-rækkefølge (lav byte kommer først). For maskiner med big-endian dataformat blev RIFX -formatet foreslået , men på grund af den betydeligt lavere popularitet af computere med dette dataformat i den indenlandske sektor slog RIFX ikke rod, og i øjeblikket afspilles RIFF -formatet også på maskiner med big-endian byte-rækkefølge.

Oprindeligt havde RIFF en grundlæggende datastørrelsesgrænse på 4 GB (mere præcist den maksimale filstørrelse på bytes). På grund af særegenhederne ved en række populære programmer til oprettelse og afspilning af filer (hovedsagelig på grund af mediestakken i Microsoft Windows ), er grænsen øget til 2 GB (på grund af udskiftningen af ​​DWORD i RIFF-parsere med signeret int32). For at understøtte filer større end 4 GB er AVI-formatet blevet udvidet til AVI-DV , hvilket er uden for RIFF-beholderens omfang. På basis af RIFF blev RF64- udvidelsen foreslået , som gør det muligt at arbejde med 64-bit-numre til chunk-størrelser, udviklet af European Broadcasting Union .

RIFF-formatet er en tilpasning af IFF -formatet til små-endian-computere (hovedsageligt til x86 - pc'er ). Det blev udviklet i 1991 af Microsoft og IBM . (IFF blev skabt af Electronic Arts i 1985 ).

chunk

Hovedkonceptet for RIFF-formatet er chunk - en datablok bestående af tre felter:

chunk format:

felttype feltnavn feltindhold
FOURCC ckID klump navn
DWORD ckStørrelse chunk datastørrelse
BYTE[] ckData chunk data selv

Hvis chunken indeholder et ulige antal bytes, tilføjes en byte 00h til slutningen af ​​datafeltet. Størrelsen af ​​en chunk er således altid lig med et lige antal bytes.

FOURCC

FOURCC (fra den engelske  Four Character Code ) er en fire-tegns identifikationskode til video-codecs, komprimeringsformater, farver eller (pixel) billedstørrelser, der bruges i mediefiler. Med hensyn til RIFF er disse ckID'er (chunk identifiers) og formulartyper. For en videostream er dette codec - id'et (f.eks. "XVID", "DIV3", "MP43"). FOURCC optager 4 bytes; dette er størrelsen af ​​et 32-bit tal, så FOURCC skrives nogle gange som et tal ( ASCII lille-endian-repræsentationen af ​​tallet).

For eksempel:

FOURCC tal (hexadecimal) tal (decimal)
'RIFF' 0x46464952 1179011410
'AVI' 0x20495641 541677121
'DIVX' 0x58564944 1482049860
'idx1' 0x31786469 829973609

De to typer chunks RIFF og LIST kan indeholde indlejrede chunks. Hele filen er en enkelt RIFF-chunk (dette er en af ​​grundene til filstørrelsesgrænsen).

ckID'er for bidder af selve RIFF-formatet skrives altid med store ASCII-bogstaver. I bidder af interne formater (ved hjælp af RIFF), såsom AVI eller WAV, skrives ckID med små bogstaver. Hvis ckID indeholder to eller tre bogstaver, erstattes bytes, der mangler op til 4 tegn, med mellemrum (AVI → 'AVI ').

Optagelsesformular

For at gøre det nemmere at skrive i specifikationerne bruges følgende form for chunk-formatet:

ckID(<formType> ck)

For eksempel er indgangen for en AVI-fil: RIFF('AVI ' LIST('hdrl' avi_header) LIST ('movi' movi) [idx1]). (Kanterede parenteser angiver, at et element er valgfrit.)

Standard bidder

RIFF

"RIFF" DWORD:STØRRELSE DWORD:FOURCC BYTE[]:DATA

Chunk med ckID = 'RIFF' har følgende ckData-struktur:

felttype feltnavn feltkommentar
FOURCC Formulartype Type indhold
BYTE[] ck indhold

De mest almindelige FOURCC-typer er:

Andre typer:

LISTE

Chunk 'LIST' har et format, der ligner RIFF, de første 4 bytes indeholder ListType (den indlejrede chunk-type), derefter følger indlejrede chunks indtil slutningen af ​​chunken. Inden for AVI-formatet indeholder LIST bidder med filoverskrifter og stream-overskrifter. Den samme chunk LIST bruges til at gemme information om indholdet.

JUNK og PAD

For at tilpasse datablokke til størrelsen af ​​sektoren på mediet for at sikre hastigheden af ​​tilbagespoling og adgang, er der to bidder: 'JUNK' og 'PAD' , som "intet betyder" og springes over af afspilningsprogrammer. Oprindeligt skulle disse bidder være fyldt med nuller, når filen blev oprettet, men nogle videoredigeringsprogrammer gemmer deres signatur der . (For eksempel, sådan gør Virtual Dub det ).

At skrive bidder i stenografi:

JUNK (filler) PAD (filler)

INFO

INFO  er en speciel ListType til lagring af information om indholdet af en fil. INFO påvirker ikke hvordan programmer fungerer med filen, denne information vises (for det meste) til brugeren. Formålet med INFO svarer til mp3-tags. Liste over bidder til INFO:

Links