using System;
namespace SabreTools.Data.Models.CHD
{
///
public enum AVHuffCodec
{
DECOMPRESS_CONFIG = 1,
}
///
public enum CodecType : uint
{
CHD_CODEC_NONE = 0,
#region General Codecs
/// "zlib"
ZLIB = 0x7a6c6962,
/// "zstd"
ZSTD = 0x7a737464,
/// "lzma"
LZMA = 0x6c7a6d61,
/// "huff"
HUFFMAN = 0x68756666,
/// "flac"
FLAC = 0x666c6163,
#endregion
#region General Codecs with CD Frontend
/// "cdzl"
CD_ZLIB = 0x63647a6c,
/// "cdzs"
CD_ZSTD = 0x63647a73,
/// "cdlz"
CD_LZMA = 0x63646c7a,
/// "cdfl"
CD_FLAC = 0x6364666c,
#endregion
#region A/V Codecs
/// "avhu"
AVHUFF = 0x61766875,
#endregion
#region Pseudo-Codecs Returned by hunk_info
///
/// Copy of another hunk
///
CHD_CODEC_SELF = 1,
///
/// Copy of a parent's hunk
///
CHD_CODEC_PARENT = 2,
///
/// Legacy "mini" 8-byte repeat
///
CHD_CODEC_MINI = 3,
#endregion
}
///
public enum CompressionType : uint
{
#region V1
CHDCOMPRESSION_NONE = 0,
CHDCOMPRESSION_ZLIB = 1,
#endregion
#region V3
CHDCOMPRESSION_ZLIB_PLUS = 2,
#endregion
#region V4
CHDCOMPRESSION_AV = 3,
#endregion
}
///
public enum Error : uint
{
NO_INTERFACE = 1,
NOT_OPEN,
ALREADY_OPEN,
INVALID_FILE,
INVALID_DATA,
REQUIRES_PARENT,
FILE_NOT_WRITEABLE,
CODEC_ERROR,
INVALID_PARENT,
HUNK_OUT_OF_RANGE,
DECOMPRESSION_ERROR,
COMPRESSION_ERROR,
CANT_VERIFY,
METADATA_NOT_FOUND,
INVALID_METADATA_SIZE,
UNSUPPORTED_VERSION,
VERIFY_INCOMPLETE,
INVALID_METADATA,
INVALID_STATE,
OPERATION_PENDING,
UNSUPPORTED_FORMAT,
UNKNOWN_COMPRESSION,
WALKING_PARENT,
COMPRESSING
}
///
[Flags]
public enum Flags : uint
{
///
/// Set if this drive has a parent
///
DriveHasParent = 0x00000001,
///
/// Set if this drive allows writes
///
DriveAllowsWrites = 0x00000002,
}
///
[Flags]
public enum MetadataFlags : byte
{
///
/// Indicates data is checksummed
///
CHD_MDFLAGS_CHECKSUM = 0x01,
}
///
public enum MetadataTag : uint
{
CHDMETATAG_WILDCARD = 0,
#region Hard Disk
///
/// Standard hard disk metadata
///
/// "GDDD"
HARD_DISK_METADATA_TAG = 0x47444444,
///
/// Hard disk identify information
///
/// "IDNT"
HARD_DISK_IDENT_METADATA_TAG = 0x49444e54,
///
/// Hard disk key information
///
/// "KEY "
HARD_DISK_KEY_METADATA_TAG = 0x4b455920,
#endregion
#region PCMCIA
///
/// PCMCIA CIS information
///
/// "CIS "
PCMCIA_CIS_METADATA_TAG = 0x43495320,
#endregion
#region CD-ROM
/// "CHCD"
CDROM_OLD_METADATA_TAG = 0x43484344,
/// "CHTR"
CDROM_TRACK_METADATA_TAG = 0x43485452,
/// "CHT2"
CDROM_TRACK_METADATA2_TAG = 0x43485432,
#endregion
#region GD-ROM
/// "CHGT"
GDROM_OLD_METADATA_TAG = 0x43484754,
/// "CHGD"
GDROM_TRACK_METADATA_TAG = 0x43484744,
#endregion
#region DVD
///
/// Standard DVD metadata
///
/// "DVD "
DVD_METADATA_TAG = 0x44564420,
#endregion
#region A/V
///
/// Standard A/V metadata
///
/// "AVAV"
AV_METADATA_TAG = 0x41564156,
///
/// A/V laserdisc frame metadata
///
/// "AVLD"
AV_LD_METADATA_TAG = 0x41564c44,
#endregion
}
///
public enum V34EntryType : uint
{
///
/// Invalid type
///
V34_MAP_ENTRY_TYPE_INVALID = 0,
///
/// Standard compression
///
V34_MAP_ENTRY_TYPE_COMPRESSED = 1,
///
/// Uncompressed data
///
V34_MAP_ENTRY_TYPE_UNCOMPRESSED = 2,
///
/// Mini: use offset as raw data
///
V34_MAP_ENTRY_TYPE_MINI = 3,
///
/// Same as another hunk in this file
///
V34_MAP_ENTRY_TYPE_SELF_HUNK = 4,
///
/// Same as a hunk in the parent file
///
V34_MAP_ENTRY_TYPE_PARENT_HUNK = 5,
///
/// Compressed with secondary algorithm (usually FLAC CDDA)
///
V34_MAP_ENTRY_TYPE_2ND_COMPRESSED = 6,
}
///
public enum V5CompressionType : uint
{
// These types are live when running
///
/// Codec #0
///
COMPRESSION_TYPE_0 = 0,
///
/// Codec #1
///
COMPRESSION_TYPE_1 = 1,
///
/// Codec #2
///
COMPRESSION_TYPE_2 = 2,
///
/// Codec #3
///
COMPRESSION_TYPE_3 = 3,
///
/// No compression; implicit length = hunkbytes
///
COMPRESSION_NONE = 4,
///
/// Same as another block in this CHD
///
COMPRESSION_SELF = 5,
///
/// Same as a hunk's worth of units in the parent CHD
///
COMPRESSION_PARENT = 6,
// These additional pseudo-types are used for compressed encodings
///
/// Start of small RLE run (4-bit length)
///
COMPRESSION_RLE_SMALL,
///
/// Start of large RLE run (8-bit length)
///
COMPRESSION_RLE_LARGE,
///
/// Same as the last COMPRESSION_SELF block
///
COMPRESSION_SELF_0,
///
/// Same as the last COMPRESSION_SELF block + 1
///
COMPRESSION_SELF_1,
///
/// Same block in the parent
///
COMPRESSION_PARENT_SELF,
///
/// Same as the last COMPRESSION_PARENT block
///
COMPRESSION_PARENT_0,
///
/// Same as the last COMPRESSION_PARENT block + 1
///
COMPRESSION_PARENT_1
}
}