Wideo Smacker - Smacker video

Smacker
Bink Smacker Video logo.png
Rozszerzenie nazwy pliku
.smk
Rodzaj mediów internetowych video / vnd.radgamettools.smacker
Wpisz kod Smk2
Opracowany przez Narzędzia do gier RAD
Rodzaj formatu Kodek wideo
Pojemnik na Smacker

Smacker video to format pliku wideo (z rozszerzeniem .SMK ) opracowany przez RAD Game Tools i używany głównie do pełnoekranowego wideo w grach wideo . Smacker używa adaptacyjnej 8-bitowej palety RGB . Format RAD dla wideo przy wyższych głębiach kolorów to Bink Video . Format Smacker określa format kontenera, format kompresji wideo i format kompresji audio. Od premiery w 1994 roku Smacker był używany w ponad 2300 grach. Blizzard użył tego formatu kinowego filmów widziałem w jego gry Warcraft II , StarCraft i Diablo I .

Format został poddany inżynierii wstecznej i zaimplementowany w libavcodec . Niekomercyjnym SourceForge projekt libsmacker wydany otwartą dekoder source w 2013 roku.

Szczegóły techniczne

Format pliku (kontener)

Smacker definiuje własny format kontenera . Plik Smacker może zawierać ścieżkę wideo Smacker i maksymalnie siedem ścieżek audio. Każda ścieżka dźwiękowa może mieć jeden kanał (mono) lub dwa kanały (stereo) z głębią bitową 8-bitową lub 16-bitową. Dźwięk może być nieskompresowany PCM , skompresowany w formacie Smacker Audio lub, w nowszych wersjach Smacker, skompresowany w formacie Bink Audio .

Wideo

Wideo Smacker obsługuje 256 kolorów i zawiera obsługę przezroczystości. Chociaż jest formatem opartym na palecie , który jest z natury ograniczony do nie więcej niż 256 kolorów w każdej klatce, filmy Smacker mogą nadal zawierać więcej kolorów w sumie ze względu na „rotację palety”, dzięki czemu paleta jest aktualizowana na podstawie klatki . Zwykle skutkuje to plikami SMK, które wyglądają lepiej, jeśli wideo źródłowe ma więcej niż 256 kolorów. Współczynnik kompresji Smackera może osiągnąć 1:12, ale ze stratą jakości ( pikselacja ).

W wideo Smacker, klatka jest dzielona na bloki 4 × 4 w kolejności skanowania rastrowego. Każdy blok może być zakodowany w jednym z sześciu trybów kodowania: skip, fill, mono i trzy pełne tryby. Każdy tryb może być sygnalizowany dla wielu bloków w schemacie kodowania długości serii . W trybie pomijania bieżący blok jest kopiowany z poprzedniej klatki w trybie warunkowego uzupełniania . W trybie wypełnienia bieżący blok jest wypełniony jednym kolorem. W trybie mono paleta jest lokalnie zmniejszana z 256 kolorów do dwóch kolorów. Oba kolory są zapisywane w strumieniu bitów, a jeden bit na piksel jest używany do wskazania, który z dwóch kolorów powinien być pikselem. Tryb mono można interpretować jako kwantyzację wektorową , w której trójwymiarowy wektor ze składowymi czerwonymi, zielonymi i niebieskimi jest kwantyzowany przy użyciu adaptacyjnej książki kodowej z dwoma wpisami. Istnieją trzy pełne tryby, jeden został określony w wersji 2 formatu Smacker, a dwa pozostałe zostały dodane w wersji 4. W oryginalnym trybie pełnym transmitowanych jest 16 kolorów, po jednym na każdy piksel, co odpowiada surowemu nieskompresowanemu PCM. Dwa pełne tryby dodane w wersji 4 używają odpowiednio 4 i 8 kolorów w bloku. W trybie 4-kolorowym blok 4 × 4 jest podzielony na cztery bloki 2 × 2, z których każdy jest wypełniony jednolitym kolorem. W trybie 8-kolorowym blok 4 × 4 jest podzielony na osiem bloków 1 × 2, z których każdy jest wypełniony jednolitym kolorem.

Dalszą kompresję uzyskuje się przez kodowanie entropijne przy użyciu kodowania Huffmana różnych elementów strumienia bitów, które wynikają z powyższego procesu. Istnieją cztery oddzielne tabele Huffmana, każda z 16-bitowymi wpisami: jedna dla decyzji o trybie, długości przebiegu i koloru wypełnienia w trybie koloru wypełnienia, jedna dla indeksów kolorów w trybie mono, jedna dla mapy bitowej w trybie mono i jedna dla wszystkich danych w trybie pełnym. Każda tabela jest adaptacyjna i przesyłana raz na plik w nagłówku. Tabele Huffmana w nagłówku są same kompresowane: 16-bitowe wartości w liściach drzewa kodu są dzielone na starszy bajt i młodszy bajt. Każdy bajt jest kompresowany przy użyciu tabeli Huffmana, która jest również zawarta w nagłówku.

Audio

Dźwięk Smacker to jeden z formatów audio, których można używać w kontenerze Smacker. Do kompresji używana jest modulacja różnicowo-kodowa (DPCM). Różnica między dwoma kolejnymi próbkami jest kompresowana przy użyciu kodowania Huffmana . Tabele Huffmana są dostosowywane raz na ramkę audio.

Zobacz też

Bibliografia

Zewnętrzne linki