aspose.info
PL

CSO - skompresowany obraz dysku ISO

Zaktualizowano

Czym jest plik CSO?

Plik z rozszerzeniem .cso to skompresowany plik obrazu ISO. CSO jest alternatywą dla metody kompresji DAX; znany również jako CISO; była pierwszą metodą kompresji plików ISO i zwykle jest preferowaną metodą archiwizacji materiałów z PlayStation Portable. Ten format wykorzystuje kompresję Deflate, która może zawierać do dziewięciu warstw kompresji. Do tworzenia obrazów używane jest oprogramowanie takie jak Prometheus i YACC.

Format pliku CSO

Format pliku CSO był pierwszą metodą kompresji dla ISO w celu zaoszczędzenia większej ilości pamięci. Od czasu do czasu wprowadzano ulepszenia w celu uzyskania lepszej kompresji. CSO używa kompresji Deflate z dziewięcioma poziomami ustawień wstępnych, zwykle każdy poziom może obsłużyć indywidualnie 2 bloki KiB. Podczas gdy najwyższe poziomy kompresji mogą spowolnić i wydłużyć czas ładowania oprogramowania, które w dużej mierze zależy od strumieniowego przesyłania danych z płyt, również niższe poziomy mogą zapewnić znaczną kompresję.

Struktura plików CSO

Format pliku CSO zawiera 24-bajtowy nagłówek, bloki danych i tabelę indeksów. Little-endian jest przyjmowany dla pól większych niż bajt. Poniżej podano endianowość architektury PlayStation Portable.

Nagłówek

Przesunięcie (bajty)ImięRozmiar (bajty)Cel
0x0Magia4Zawsze CISO lub 0x4F534943 odczytywane jako 32-bitowa liczba całkowita. To pole służy do identyfikacji pliku CSO. Zauważ, że to pole może być inne dla innych pochodnych CSO, np. ZSO używało magicznego kodu ZISO.
0x4Rozmiar nagłówka4W przypadku oryginalnego formatu pliku CSO „v1” to pole jest ignorowane i dlatego nie musi być dokładne. Jednak format „v2” i ZSO wymagają, aby to pole zawsze miało wartość 0x18 (24 bajty).
0x8Rozmiar nieskompresowany8Rozmiar oryginalnego nieskompresowanego ISO w bajtach.
0x10Rozmiar bloku4Rozmiar każdego bloku danych w bajtach przed kompresją. Zwykle 2048 bajtów, tyle samo co rozmiar każdego sektora ISO 9660.
0x14Wersja1Wersja używanego formatu pliku. W przypadku formatu „v1” wartość może wynosić 0 lub 1. W przypadku formatu „v2” musi to być 2. Dodatkowo format ZSO wymaga wartości 1.
0x15Wyrównanie indeksu1Wyrównanie każdego wpisu indeksu, określone w bitach.
0x16Zarezerwowane2To pole jest nieużywane. W formacie „v1” to pole jest ignorowane i może zawierać dowolne wartości. W formacie „v2” to pole musi mieć wartość zero.

Tabela indeksu

Tablica indeksów zawiera kilka 4-bajtowych wpisów, które wskazują pozycję każdego bloku danych oraz dodatkowy, ostatni wpis, który wskazuje na koniec pliku. Treść każdego wpisu jest następująca:

KawałekDługośćMaskaImięCel
0310x7FFFFFFFFPozycjaTo pole, przesunięte w lewo o wyrównanie indeksu podane w nagłówku, podaje pozycję, w której zaczyna się blok danych.
3110x80000000Rodzaj kompresjiFormat ZSO ma podobną semantykę, tyle że 0 reprezentuje LZ4 zamiast Deflate. W formacie „v2”. Blok jest niejawnie uważany za nieskompresowany, jeśli rozmiar bloku jest równy lub większy niż rozmiar bloku określony w nagłówku pliku.

Bloki danych

Bloki danych składają się z nieskompresowanych lub skompresowanych danych. Rozmiar bloku oblicza się, pobierając jego pozycję, a następnie odejmując ją od pozycji następnego bloku. Jeśli wyrównanie indeksu jest większe od zera, prawdopodobnie rozmiar bloku jest większy niż przechowywane w nim dane.

Bibliografia

  • N/A

Zobacz też