chdlady 0.3.0

High-level facade API for reading and creating CHD files
# chdlady

Rust library for reading, writing, and manipulating MAME CHD (Compressed Hunks of Data) containers.

This crate serves as the primary facade for the project, re-exporting modules from internal workspace crates (`chdlady-core`, `chdlady-disc`, `chdlady-huffman`, `chdlady-av`, and `chdlady-physical`). It handles CD-ROM (CUE, TOC, GDI, CloneCD CCD, Alcohol 120% MDS, Nero NRG), DVD ISO, hard disk raw images with CHS geometry, laserdisc AVI files, and direct physical optical drives (CD and DVD). CHD versions 3, 4, and 5 can be read; version 5 can be written.

## Safety Scope

Container parsing, compression codecs, disc geometry engines, and CLI subcommands enforce `#![deny(unsafe_code)]`.

The only exception in the workspace is `chdlady-physical`: communicating with optical drives requires calling OS-level pass-through ioctls (`SG_IO` on Linux, `IOCTL_SCSI_PASS_THROUGH_DIRECT` on Windows). Those raw kernel pointer operations are strictly isolated inside platform-specific modules (`linux.rs` and `windows.rs`), leaving all high-level decoding and conversion code safe.

## Usage

Add `chdlady` to your dependencies:

```toml
[dependencies]
chdlady = "0.3"
```

The `default` feature enables all media types, compression codecs, and Rayon parallelization. If you only need specific capabilities, disable default features:

```toml
[dependencies]
chdlady = { version = "0.3", default-features = false, features = ["cd", "zlib", "lzma"] }
```

## Features

| Feature | Default | Description |
|---|---|---|
| `full` | ✓ | Enables all media handlers, codecs, and physical drive reading |
| `cd` | ✓ | CD-ROM creation and extraction (FLAC-based) |
| `dvd` | ✓ | DVD ISO creation and extraction |
| `gdrom` | ✓ | GD-ROM support (implies `cd`) |
| `hd` | ✓ | Hard disk image creation and extraction |
| `ld` | ✓ | Laserdisc creation and extraction |
| `physical` | ✓ | Direct conversion from optical drives (CD/DVD) via SCSI/MMC |
| `zlib` | ✓ | Deflate codec |
| `lzma` | ✓ | LZMA codec |
| `zstd` | ✓ | Zstandard codec |
| `flac` | ✓ | FLAC codec for CD hunks |
| `rayon` | ✓ | Parallel compression and decompression |

Part of the [chdlady](https://codeberg.org/NeverAnswers/chdlady) workspace.