aspose.info
RU

CSO — сжатый образ диска ISO

Обновлено

.CSO вариант №

Файл с расширением .cso представляет собой сжатый файл образа ISO. CSO является альтернативой методу сжатия DAX; также известный как CISO; был первым методом сжатия файлов ISO и обычно является предпочтительным методом для архивирования материалов PlayStation Portable. Этот формат использует сжатие Deflate, которое может включать до девяти уровней сжатия. Для создания образов используется такое программное обеспечение, как Prometheus и YACC.

Формат файла CSO

Формат файла CSO был первым методом сжатия для ISO для экономии места в памяти. Время от времени вносились улучшения для лучшего сжатия. CSO использует сжатие Deflate с девятью уровнями пресетов, обычно каждый уровень может обрабатывать блоки размером 2 КиБ по отдельности. В то время как самые высокие уровни сжатия могут замедлять и увеличивать время загрузки программного обеспечения, которое сильно зависит от потоковой передачи диска, также более низкие уровни могут выполнять существенное сжатие.

Структура файла CSO

Формат файла CSO содержит 24-байтовый заголовок, блоки данных и индексную таблицу. Для полей размером более байта предполагается обратный порядок байтов. Порядок байтов архитектуры PlayStation Portable указан ниже.

Заголовок

Смещение (байты)ИмяРазмер (байты)Цель
0x0Магия4Всегда CISO или 0x4F534943 при чтении как 32-битного целого числа. Это поле используется для идентификации файла CSO. Обратите внимание, что это поле может быть другим для других производных CSO, например, ZSO использовал магический код ZISO.
0x4Размер заголовка4Для исходного формата файла CSO “v1” это поле игнорируется, поэтому его точность не требуется. Однако формат «v2» и ZSO требует, чтобы это поле всегда было равно 0x18 (24 байта).
0x8Несжатый размер8Размер исходного несжатого ISO в байтах.
0x10Размер блока4Размер каждого блока данных в байтах до сжатия. Обычно 2048 байт, что соответствует размеру каждого сектора ISO 9660.
0x14Версия1Используемая версия формата файла. Для формата “v1” значение может быть либо 0, либо 1. Для формата “v2” это должно быть 2. Кроме того, формат ZSO требует, чтобы это было 1.
0x15Выравнивание индекса1Выравнивание каждой записи индекса, указанное в битах.
0x16Зарезервировано2Это поле не используется. В формате “v1” это поле игнорируется и может содержать произвольные значения. В формате “v2” это поле должно быть равно нулю.

Индексная таблица

Таблица индексов содержит несколько 4-байтовых записей, указывающих положение каждого блока данных, и дополнительную, последнюю запись, указывающую на конец файла. Содержание каждой записи следующее:

БитДлинаМаскаИмяЦель
0310x7FFFFFFFFПозицияЭто поле при смещении влево в соответствии с выравниванием индекса, указанным в заголовке, дает позицию, с которой начинается блок данных.
3110x80000000Тип сжатияФормат ZSO имеет аналогичную семантику, только 0 представляет LZ4 вместо Deflate. В формате “v2”. Блок неявно считается несжатым, если размер блока равен или превышает размер блока, указанный в заголовке файла.

Блоки данных

Блоки данных состоят из несжатых или сжатых данных. Размер блока вычисляется путем получения его положения и последующего вычитания его из положения следующего блока. Если выравнивание индекса больше нуля, вполне вероятно, что размер блока больше, чем данные, которые он содержит.

использованная литература

  • N/A

См. также