Кіріспе

Цифрлік бейне файл форматы

Smacker video – Epic Games Tools компаниясы әзірлеген, негізінен бейне ойындардағы толық қозғалысты бейне үшін қолданылатын бейне файл форматы (SMK файл кеңейтімімен). Smacker адаптивті 8 биттік RGB палитрасын қолданады. RAD компаниясының жоғары түс тереңдігіндегі бейне форматы – Bink Video. Smacker форматы контейнер форматын, бейне қысу форматын және дыбыс қысу форматын анықтайды. 1994 жылы жарық көргеннен бері Smacker 2300-ден астам ойында қолданылған. Формат кері инженерия арқылы libavcodec-те іске асырылды. Коммерциялық емес SourceForge жобасы libsmacker 2013 жылы ашық кодты декодерді шығарды.

Файл пішімі (контейнер)

Smacker өзінің контейнер форматын анықтайды. Smacker файлында Smacker бейне трегі және жетіге дейін аудио тректер болуы мүмкін. Әрбір аудио трек бір арналы (моно) немесе екі арналы (стерео) болуы мүмкін, біт тереңдігі 8 бит немесе 16 бит болатын. Аудио қысылмайтын PCM, Smacker Audio форматында қысылған, немесе Smacker-дің жаңа нұсқаларында Bink Audio форматында қысылған болуы мүмкін.

Видео

Smacker видеосы 256 түсті қолдайды, бірақ мөлдірлік қолдауы жоқ. Палитраға негізделген формат болғандықтан, әр кадрда 256 түстен аспауға шектелген, бірақ Smacker видеоларында "палитра ауысуы" арқасында жалпы түстер саны көбірек болуы мүмкін, онда палитра әр кадрда жаңартылады. Бұл әдетте бастапқы видеода 256 түстен көп болса, жақсы көрінетін SMK файлдарына әкеледі. Сығу деңгейі мазмұнға байланысты. Қозғалмайтын немесе аздап қозғалатын кадрлардан тұратын видеоны кодтау, бірінші кадрдан кейін дерлік тегін. Кездейсоқ түстері бар кадрлар бастапқы өлшемнен екі еседен астам болуы мүмкін. Smacker видеосында кадр растрлік сканерлеу ретімен 4×4 блоктарға бөлінеді. Әр блок алты кодтау режимінің бірінде кодталуы мүмкін: өткізіп жіберу, толтыру, моно және үш толық режим. Әр режим бірнеше блок үшін орындалу ұзындығын кодтау схемасында көрсетілуі мүмкін. Өткізіп жіберу режимінде ағымдағы блок шартты түрде алдыңғы кадрдан көшіріледі. Толтыру режимінде ағымдағы блок бір түспен толтырылады. Моно режимінде палитра 256 түстен екі түске дейін қысқартылады. Екі түс те биттік ағынға жазылады және пикселдің қай түсті алу керектігін көрсету үшін пикселге бір бит қолданылады. Моно режимін векторлық кванттау ретінде қарастыруға болады, онда қызыл, жасыл және көк компоненттері бар үш өлшемді вектор екі жазбасы бар бейімделген код кітабы арқылы квантталады. Үш толық режим бар, біреуі Smacker форматының 2-ші нұсқасында көрсетілген, ал қалған екеуі 4-ші нұсқада қосылған. Түпнұсқа толық режимде әр пикселге бір түспен 16 түс жіберіледі, бұл сығылмаған PCM-ге тең. 4-ші нұсқада қосылған екі толық режимде тиісінше 4 және 8 түс блокта қолданылады. 4 түсті режимде 4×4 блок 4 2×2 блокқа бөлінеді, олардың әрқайсысы бір түспен толтырылады. 8 түсті режимде 4×4 блок 8 1×2 блокқа бөлінеді, олардың әрқайсысы бір түспен толтырылады. Бұдан әрі сығу энтропиялық кодтау арқылы жүзеге асырылады, жоғарыда сипатталған процестен туындаған әртүрлі биттік ағын элементтерінің Хаффман кодтауын қолдану арқылы. Төрт бөлек Хаффман кестесі бар, әрқайсысында 16 биттік жазбалар бар: біреуі режимді таңдау, орындалу ұзындығы және толтыру түсі үшін толтыру түсі режимінде, біреуі моно режиміндегі түс индекстері үшін, біреуі моно режиміндегі биттік карта үшін және біреуі толық режимдегі барлық деректер үшін. Әр кесте бейімделетін және файлдың басында бір рет жіберіледі. Бастағыш Хаффман кестелері өздері сығылған: код ағашының жапырақтарындағы 16 биттік мәндер жоғары және төмен байтқа бөлінеді. Әр байт басқа да Хаффман кестесі арқылы сығылады, ол да бастағышта бар.

Аудио

Smacker аудиосы – Smacker контейнерінде қолданылатын аудио форматтарының бірі. Қысу үшін Дифференциалдық импульстік кодты модуляциялау (DPCM) пайдаланылады. Екі тікелей үлгінің арасындағы айырмашылық Хэффман кодтау арқылы қысылады. Хэффман кестелері әрбір аудио кадр үшін бір рет өзгереді.