CSO,又称CISO(源自英文Compressed ISO的缩写),是一种计算机文件格式,由经过压缩后的ISO映像产生。其是首个为了压缩ISO映像而开发出来的方案,常被用于压缩PS2以及PSP平台上的ISO文件,以降低存储空间上的压力。此外,为了优化该格式的资料压缩比以及解压速度等问题,该格式经历过了数次修改与迭代,产生了诸如CSO v2、DAX、JSO、ZSO等格式。
CSO格式第一版本(CSO v1)使用DEFLATE算法压缩数据,同时也提供了9个压缩级别,其中第9级为最高级别。第二版本在此基础上添加了LZ4算法的使用,但用户可为了保证向后兼容性仅使用DEFLATE算法进行压缩。压缩级别越高的代价是压缩时间的加长,但压缩级别不影响解压解压速度。其工作原理为将一个ISO文件分成无数个大小一般为2 KiB的块,并一一地对这些块进行压缩。通过这种工作原理,CSO格式能有效地将ISO文件压缩成一个较小的文件。
文件格式
CSO文件格式由一个 24 字节的文件头、一份索引表和多个数据块组成。大于一字节的字段应使用小端法读取。
文件头
索引表
索引表中含有多个条目,每个条目的长度为4字节,记录着每个数据块在文件中的位置。最后一个条目必须指向文件末(EOF),因此会多出一个条目。索引表中的条目数量可以通过以下算法计算出来:N_{entries} = ceil(uncompressed\ size / block\ size) + 1。
条目所记录的内容如下:
ZSO格式与CSO格式第一版本基本一致,差别在于ZSO格式使用了LZ4算法,而非DEFLATE算法进行压缩。
CSO格式第二版本中,该字段所表述的压缩方式如下:
第二版本中,若该数据块的大小大过或等于文件头提供的数据块大小,则将其认定为未压缩方块。
|}
数据块
每个数据块都包含未压缩或压缩的数据。每个块的实际大小可以通过使用下一个块的位置中减去该块的位置来计算。如果索引对齐大于零,则该数据块的块大小可能大于其保存的数据,因此需要进行填充。
参考资料
外部链接
- [http://filext.com/detaillist.php?extdetail=.cso&Search=Search File Extension Details for .CSO]
- [http://www.file-extensions.org/cso-file-extension .CSO description]
- [https://sourceforge.net/projects/ciso/files/ ciso, the original compressor] (GPLv2)
- [https://github.com/unknownbrackets/maxcso maxcso, an extended compressor]
- [http://www.isocompressor.com ISO Compressor for CSO]
- [https://sites.google.com/site/theleecherman/cisomulticompressor Ciso Multi Compressor]
- [https://web.archive.org/web/20161223115412/http://cisoplus.pspgen.com/ CisoPlus]
评论 (0)