chdlady 0.1.0

High-level facade API for reading and creating CHD files
//! Rust library for reading, writing, and manipulating MAME CHD (Compressed Hunks of Data) containers.
//!
//! CHD is a compressed container format created by the MAME project for storing disc and hard drive
//! images. Each container splits the source media into fixed-size hunks and compresses them
//! independently, allowing random access without full decompression.
//!
//! This crate supports:
//!
//! - **Reading** CHD v3, v4, and v5 containers (including differential/parent-child chains)
//! - **Writing** CHD v5 containers with parallel compression
//! - **Media types**: CD-ROM (CUE/GDI/TOC), DVD ISO, hard disk (with CHS geometry), laserdisc (AVI), and raw binary
//! - **Codecs**: zlib, LZMA, zstd, Huffman, FLAC, CD-optimized variants (cdzl, cdlz, cdzs, cdfl), and A/V Huffman (avhu)
//! - **Integrity**: SHA-1 verification of raw data and metadata
//!
//! ## Feature Flags
//!
//! All features are enabled by default via the `full` feature. Disable `default-features` and
//! pick only what you need to reduce compile times and binary size.
//!
//! | Feature | Description |
//! |---------|-------------|
//! | `cd` | CD-ROM creation and extraction |
//! | `dvd` | DVD ISO creation and extraction |
//! | `gdrom` | GD-ROM support (implies `cd`) |
//! | `hd` | Hard disk image creation and extraction |
//! | `ld` | Laserdisc creation and extraction |
//! | `zlib` | Deflate codec |
//! | `lzma` | LZMA codec |
//! | `zstd` | Zstandard codec |
//! | `flac` | FLAC codec for CD hunks |
//! | `rayon` | Parallel compression and decompression |
//!
//! All crates in this workspace enforce `#![deny(unsafe_code)]`.
#![deny(missing_docs)]
#![deny(unsafe_code)]
#![cfg_attr(docsrs, feature(doc_auto_cfg))]

/// A/V container and A/V Huffman codec for Laserdisc media.
#[cfg(feature = "ld")]
pub use chdlady_av as av;
/// Core CHD container reader, decompression codecs, and verification.
pub use chdlady_core as core;
/// Disc media formats, TOC parsing, and extraction logic.
pub use chdlady_disc as disc;
/// Canonical Huffman compression codec.
pub use chdlady_huffman as huffman;

pub use chdlady_core::{
    delete_metadata_entry, read_all_metadata, write_metadata_entry, ChdError, ChdFile, ChdHeader,
    ChdInfo, ChdParentReader, ChdWriteConfig, ChdWriter, CreateResult, HunkType, MetadataEntry,
    MetadataItem, OperationPhase, ProgressStatus, VerifyResult, CHD_MDFLAGS_CHECKSUM,
};
pub use chdlady_disc::{
    codec_name, create_cd, create_dvd, create_hd, create_raw, extract_cd, extract_cd_with_progress,
    extract_hd, extract_hd_with_progress, extract_raw, extract_raw_with_progress, format_codecs,
    format_with_commas, guess_chs, inspect_create_cd, inspect_create_dvd, inspect_create_hd,
    inspect_create_raw, msf_string_from_frames, parse_compression_codecs, CdCreateInfo,
    CdStreamReader, CdSubcodeType, CdToc, CdTrack, CdTrackType, CdrdaoToc, CreateCdOptions,
    CreateDvdOptions, CreateHdOptions, CreateRawOptions, CueSheet, DiscError, DiscType,
    DvdCreateInfo, GdiSheet, HardDiskGeo, HdCreateInfo, HdTemplate, Msf, RawCreateInfo,
    DEFAULT_CD_CODECS, DEFAULT_HD_CODECS, DEFAULT_RAW_CODECS, DVD_METADATA_TAG,
    HARD_DISK_IDENT_METADATA_TAG, HARD_DISK_METADATA_TAG, HD_TEMPLATES,
};
#[cfg(feature = "ld")]
pub use chdlady_disc::{
    create_ld, extract_ld, inspect_create_ld, CreateLdOptions, ExtractLdOptions, LdCreateInfo,
    LdError, AV_LD_METADATA_TAG, AV_METADATA_TAG, DEFAULT_LD_CODECS,
};