Wideo Smacker - Smacker video
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ż
- Kolor indeksowany
- Kwantyzacja kolorów
- Bink Video , format RAD dla wideo przy wyższych głębiach kolorów
- Apple Video , kodek oparty na podobnej konstrukcji
- Microsoft Video 1 , kodek oparty na podobnej konstrukcji
- QuickTime Graphics , kodek oparty na podobnej konstrukcji
- S3 Texture Compression , format kompresji tekstur oparty na podobnym projekcie