RIFF

**RIFF** (), կոնտեյների ֆայլերի ֆորմատներից մեկն է նախատեսված հոսքային մուլտիմեդիա-տվյալների (վիդեո, աուդիո, հնարավոր է տեքստ) պահպանման համար։ RIFF-ը, որպես կոնտեյներ օգտագործող, ամենից հայտնի ֆորմատներն են AVI (վիդեո), WAV (աուդիո), RMI (MIDI-շավիղներ)։

RIFF ֆորմատը օգտագործում է *little-endian* (փոքր բայթը գնում է առաջինը) բայթերի հերթականություն։ Այն մեքենաների համար, որոնք ունեն *big-endian* տվյալներով ֆորմատ, առաջարկվում է **RIFX** ֆորմատը, սակայն այսպիսի ֆորմատի տվյալներով համակարգիչների կենցաղային ոլորտում էականորեն պասիվ հեղինակության պատճառով, RIFX-ը չգոյատևեց։ Ներկայումս *RIFF* ֆորմատը վերարտադրվում է նաև big-endian հերթականությամբ բայթերով մեքենաների համար։

Սկզբում RIFF-ը ուներ սկզբունքային սահմանափակում 4 ԳԲ տվյալների չափսերի վրա (ավելի ճշգրիտ, ֆայլի մաքսիմալ չափն էր 2^{32}+7 բայթը)։ Համաձայն ֆայլեր ստեղծող կամ վերարտադրող հանրաճանաչ ծրագրերի շարքի առանձնահատկությունների (հիմնականում Microsoft Windows-ում մեդիապաշարի պատճառով)՝ սահմանափակումը խստացավ մինչև 2 ԳԲ (DWORD RIFF-ի փարսերներում signed int32-ով փոխարինման պատճառով)։ 4 ԳԲ-ից ավել ֆայլերի պահպանման համար AVI ֆորմատը ընդլայնվում է մինչև AVI-DV, որը անցնում է RIFF կոնտեյների շրջանակից։ RIFF հիմքի վրա առաջադրված է RF64 ընդլայնումը, որը թույլ է տալիս 64-բիթանոց թվերով աշխատել European Broadcasting Union-ի կողմից մշակված chunk-երի չափսերի համար։

RIFF ֆորմատը համարվում է little-endian համակարգիչների համար IFF ֆորմատի ադապտացիան (հիմնականում, 80x86-ի վրա PC-ի համար)։ Այն մշակվել է 1991 թվականին Microsoft և IBM ընկերությունների կողմից։ (IFF-ն ստեղծվել է Electronic Arts-ի կողմից 1985 թվականին)։

## Chunk
RIFF ֆորմատի հիմնական կոնցեպցիան համարվում է **chunk**-ը, chunk-ի բովանդակությունը ցույց տվող, վերնագրով և ստորագրությամբ տվյալների բաժինը։

chunk-ի ֆորմատ՝

Եթե chunk-ը կրում է բայթերի կենտ քանակ, ապա դրանից հետո ավելացվում է մեկ բայթ։ Այդ եղանակով chunk-երը միշտ հարթեցված են 2 բայթի սահմանին։

## FOURCC
**FOURCC**-ը () չորս սիմվոլների հաջորդականություն է, որը օգտագործվում է ցանկացած տվյալի նույնականացման համար։ RIFF-ի համար դա ckID (chunk-երի ինդենտիֆիկատորներ) և ֆորմաների տիպեր։ FOURCC վիդեոհոսքը հիմնականում օգտագործվում է կոդեկի նույնականացման համար(օրինակ՝ «XVID», «DIV3», «MP43»)։ FOURCC-ը զբաղեցնում է 4 բայթ։ Դա 32-բիթանոց թվի չափսն է, այնպես որ FOURCC-ը գրում է թվի տեսքով (թվի ներկայացում ASCII little-endian-ում)։

Օրինակ՝

Chunk-երի երկու տիպեր՝ **RIFF**-ը և **LIST**-ը կարող են իրենց մեջ տեղադրված chunk-եր կրել։ Ողջ ֆայլը իրենից ներկայացնում է մեկ ամբողջական RIFF-chunk (դա ֆայլի չափսի սահմանափակման պատճառներից մեկն է)։

RIFF ֆորմատի chunk-երի համար *ckID*-ը միշտ գրվում է մեծատառերով ASCII:*Ներքին* ֆորմատի chunk-երում(RIFF օգտագործող), այնպիսիք ինչպիսին են AVI-ը կամ WAV-ը, ckID-ը գրվում է փոքրատառերով։ Եթե ckID-ը պարունակում է չորս սիմվոլի չհասնող երկու կամ երեք տառ, բայթերը փոխարինվում են բացատներով(AVI → 'AVI ')։
## Գրվածքի կառուցվածք
Для удобства записи հատկորոշումների մեջ օգտագործվում է chunk ֆորմատի գրության համար հետևյալ ձևաչափը՝

ckID( ck)

Օրինակ, AVI ֆայլի գրության համար RIFF('AVI ' LIST('hdrl' avi_header) LIST ('movi' movi) [idx1]) է։ (Քառակուսի փակագծերը ցույց են տալիս մասնիկի անհրաժեշտութունը)։

## Ստանդարտ chunk-եր
### RIFF
Chunk և ckID = 'RIFF' ունենում է հետևյալ ckData կառուցվածքը՝

Ամենից տարածված տիպեր՝
* 'AVI ' — AVI պարունակում է վիդեո և աուդիո տվյալներ։
* 'WAVE' — WAV պարունակում է ձայնային տվյալներ
* 'RMID' — RMI պարունակում է երաժշտություն MIDI ֆորմատով

Այլ տիպեր՝
* 'RDIB' —  պատկերների պահպանման ֆորմատ
* 'RMMP' — 
* 'PAL ' — 

### LIST
Chunk 'LIST'-ը RIFF-ին համանման ֆորմատ ունի։ Առաջին 4 բայթը պարունակում է ListType (ներդրված chunk-ի տեսակ), հետո մինչև chunk-ի վերջը հաջորդում են ներդրված chunk-եր։ AVI ֆորմատի շրջանակներում՝ LIST-ի մեջ, պահպանվում են ֆայլի վերնագրով և հոսքերի վերնագրերով chunk-եր։ Նաև chunk LIST-ը կիրառվում է բովանդակության մասին տվյալների պահպանման համար։

### JUNK և PAD
Վերափաթաթման և մուտք գործելու արագության ապահովման համար կրիչի վրա սեկտորի չափով բլոկների տվյալները հավասարեցնելու համար կա երկու chunk՝ ** 'JUNK' ** և ** 'PAD' **, որոնք «ոչինչ չեն նշանակում» և թողարկվում են վերարտադրման ծրագրերով։ Սկզբում ենթադրվում էր, որ ֆայլը ստեղծելուց այդ chunk-երը ուղղակի կլցվեն զրոներով, սակայն որոշ տեսանյութերի խմբագրման ծրագրեր պահում են այնտեղ իրենց ստորագրությունը (օրինակ՝ Virtual Dub-ը այդպես է անում)։

chunk-երի գրություն խտացված նշագրության մեջ՝

JUNK (filler)
PAD&nbsp; (filler)

### INFO
**INFO** հատուկ ListType է նախատեսված ֆայլի պարունակության մասին տվյալների պահպանման համար։ INFO-ն չի ազդում ծրագրերի ֆայլերի հետ աշխատանքի վրա։ Այդ տեղեկությունը (մեծ մասամբ) ցուցադրվում է օգտվողին։ INFO-ի նշանակությունը նման է mp3-թեգերի նշանակությանը։

INFO-ի համար chunk-երի ցուցակ՝

* IARL ()- փաստաթղթի արխիվային պահպանման վայր։ (*գրեթե չի օգտագործվում*)
* **IART** () արտադրության հեղինակների ցուցակ։ (*ստանդարտ թեգ, արտացոլված է գրեթե բոլոր ձայնարկիչների վրա*)
* ICMS ()- մարդկանց ցուցակ, ովքեր տրամադրել են ֆայլի պարունակությունը։ (*չի օգտագործվում*)
* **ICMT** ()- մեկնաբանություններ։ (*արտացոլված է գրեթե բոլոր ձայնարկիչների վրա*)
* **ICOP** ()- տեղեկություն հեղինակային իրավունքների մասին։
* **ICRD** ()- օրիգինալ արտադրության ամսաթիվ։ YYYY-MM-DD ֆորմատ։ (*հազվադեպ է օգտագործվում*)
* ICRP () արտադրանքը կտրելու մասին ինֆորմացիա։ (*չի օգտագործվում*)
* IDIM ()- օրիգինալի ֆիզիկական չափերը։ (*չի օգտագործվում*)
* IDPI ()- օրիգինալի DPI: (*չի օգտագործվում*)
* IENG ()- ֆայլը ստեղծողների ազգանուններ։ (*չի օգտագործվում*)
* **IGNR** ()-ժանր։ (*մասնակի պահպանվում է*)
* IKEY ()-բանալի բառերի ցուցակ։ (*չի օգտագործվում*)
* ILGT ()- օրիգինալի լուսավորության աստիճան (կախված է թվայնացման սարքավորումից)։ (*չի օգտագործվում*)
* IMED () օրիգինալի կրիչի տիպ։ (*չի օգտագործվում*)
* **INAM** ()- արտադրության անուն։ Կան տարբեր կարծիքներ այն մասին, թե արդյոք պետք է օգտագործել INAM կամ ISBJ արտադրության վերնագիրը պահելու համար։ (*ստանդարտ թեգ, պահպանվում է և հաճախ օգտագործվում*)
* IPLT () - թվայնացման գույների քանակ։ (*չի օգտագործվում*)
* IPRD ()- արտադրության վերնագիր, ինչի համար նախատեսվել էր այն։ (*չի օգտագործվում*)
* **ISBJ** ()- նկարագրում է ֆայլի բովանդակությունը։ Պարբերաբար INAM-ին հավասար օգտագործվում է վերնագիրը պահպանելու համար։ (*օգտագործվում է*)
* **ISFT** ()- ֆայլի ստեղծման համար օգտագործվող ծրագրային ապահովում։ Սովորաբար մեքենայաբար լցվում է խմբագրող ծրագրերով, բայց թեգերի ցուցակում չի երևում։ (*օգտագործվում է*)
* ISHP ()- արտադրությունը վերարտադրելու համար անհրաժեշտ կտրուկության աստիճան։ (*չի օգտագործվում*)
* ISRC ()- արտադրությունը ներկայացնող կազմակերպության անվանում։ (*չի օգտագործվում*)
* ISRF ()- օրիգինալ արտադրության ձև (թուղթ/սլայդ )։ (*չի օգտագործվում*)
* ITCH ()- թվայնացումը իրականացնող մասնագետ։ (*չի օգտագործվում*)

## Ծանոթագրություններ