Кіріспе

Файл түрінің идентификаторы. Төрт КК ("төрт таңбалы код") – дерек форматтарын бірегей анықтауға қолданылатын төрт байттық тізбек (көбінесе ASCII). Ол классикалық Mac OS жүйесінде қолданылған OSType немесе ResType метадеректер жүйесінде пайда болды және Amiga / Electronic Arts Interchange File Format пен оның туындылары үшін қабылданды. Кейін бұл идея QuickTime және DirectShow жүйелерінде қысылған деректер түрлерін анықтау үшін қайта қолданылды.

Тарих

1984 жылы Macintosh OS-тің ең алғашқы нұсқасы System 1 жарық көрді. Ол файл түрлерін, жасаушы (қосымша) туралы ақпаратты және қосымша ресурстарды сақтау үшін бір деңгейлі Macintosh файлдық жүйесін, сондай-ақ метадеректер өрістерін және бұрамаларды пайдаланды. Бұл ақпаратты деректерді өзгертусіз өзгертуге мүмкіндік болды, осылайша оларды әртүрлі интерпретациялауға болады. Жүйе бойындағы барлық деректер үшін типтік таңбалар ретінде бірдей кодтар қолданылды. 1985 жылы Electronic Arts компаниясы Amiga үшін әзірленген Interchange File Format (IFF) метаформатын (файл пішімдерінің отбасы) ұсынды. Бұл файлдар кез келген деректерді қамтитын "бөліктер" тізбегінен тұрады, әр бөлік төрт байттық ID арқылы белгіленеді. IFF сипаттамасында FourCC идеясының бастауы Apple компаниясында екені нақты көрсетілген. Бұл IFF бірнеше әзірлеушілер, оның ішінде Apple (AIFF файлдары үшін) және Microsoft (RIFF файлдары үшін – олар AVI және WAV файл пішімдерінің негізі болды) тарапынан қабылданды. Apple осы кодтардың көп бөлігін OSTypes деп атады. Microsoft және Windows әзірлеушілері өздерінің төрт байттық идентификаторларын FourCCs немесе Four Character Codes деп атайды. Microsoft компаниясы DirectX-те, әсіресе DirectShow және DirectX Graphics-те қолданылатын дерек форматтарын анықтау үшін FourCC кодтарын қабылдады.

Apple жүйелерінде

Mac OS X Panther-ден бастап OSType қолтаңбалары Бірыңғай типті идентификаторды анықтауға көмектесетін бірнеше көздердің бірі болып табылады және енді негізгі дерек типінің қолтаңбасы ретінде қолданылмайды. Mac OS X (macOS) файл түрлерін атау үшін файл атауының кеңейтімдерін пайдалануды қалайды. Бұл өзгеріс осы кезде ескі пайдаланушылар арасында қатты пікірталас тудырды, олар Apple файл атауындағы деректерді шатастыратын, бұрынғы қарапайым әдіске қайта оралды деп ойлады. Файл жүйесімен байланысты типтік кодтарды пайдаланушылар өзгерту үшін оңай қол жеткізе алмайды, бірақ оларды белгілі бір бағдарламалық қамтамасыз ету арқылы қарауға және өзгертуге болады, әсіресе /Developer/Tools-қа әзірлеуші құралдарының бір бөлігі ретінде орнатылған macOS командалық жолының GetFileInfo және SetFile құралдары, немесе ескі Mac-тер үшін қол жетімді ResEdit қосымшасы арқылы.

Техникалық мәліметтер

Байт тізбегі әдетте ASCII басып шығаратын символдармен шектеледі, ал бос символдар қысқа тізбектерді толтыру үшін резервтелінеді. Файл кеңейтулерінен өзгеше, әріптердің регистрі сақталады. FourCC кейде он алтылық жүйеде кодталады (мысалы, "0x31637661" – 'avc1' үшін) және кейде адам оқи алатын форматта кодталады (мысалы, "mp4a"). Дегенмен, кейбір FourCC символдар басып шығаруға жарамсыз болып келеді және арнайы форматтаусыз оқылмайды; мысалы, 10 биттік Y'CbCr 4:2:2 бейнесінде FourCC ('Y', '3', 10, 10) болуы мүмкін, ffmpeg оны rawvideo (Y3[10][10] / 0x0A0A3359), yuv422p10le түрінде көрсетеді. Төрт байттық идентификаторлар пайдалы, себебі олар есте қалғандық қасиеттері бар төрт адам оқи алатын символдан тұруы мүмкін, сонымен қатар 32 биттік жүйелерде бүтін сандар үшін әдетте бөлінетін төрт байттық жад кеңістігіне сыяды (бірақ эндиандық мәселелер оларды оқуды қиындатуы мүмкін). Осылайша, кодтарды бағдарламалық кодта бүтін сандар ретінде тиімді пайдалануға болады, сондай-ақ тексерілген кезде екілік деректер ағынында меңзеулер беруге мүмкіндік береді.

Компиляторды қолдау

FourCC негізгі ASCII таңбалар тізбегіне қатысты үлкен ендімен жазылады, осылайша ол тізбектей оқылғанда дұрыс байт ретімен көрінеді. Көптеген C компиляторлары, GCC-де соның ішінде, көп таңбалы мәнді ең кіші маңызды байтқа қарай оңға жылдыруды анықтайды, сондықтан ASCII-де 0x31323334 болады. Бұл Mac OS бағдарламашылары OSType үшін қолданатын FourCC кодтарын жазудың қалыпты тәсілі. (Классикалық Mac OS тек үлкен ендімен жұмыс істеді.) Кішкентай ендімен жұмыс істейтін машиналарда дұрыс нәтиже алу үшін байтты ауыстыру қажет. Мысалы, жоғарыдағы avc1 мысалын қарастырайық: әдеби мән санды бүтін санға түрлендіргенімен, кішкентай ендімен жұмыс істейтін машина байт ретін кері ауыстырып, мәнді сақтайды. Дұрыс байт тізбегін алу үшін, алдын ала ауыстырылған мән қолданылады.