Skip to content

Expose NRG sessions, tracks and raw CD-DA extraction - #358

Merged
Hawkynt merged 20 commits into
mainfrom
feature/nrg-track-reader
Sep 19, 2026
Merged

Hawkynt merged 20 commits into
mainfrom
feature/nrg-track-reader

Conversation

@Hawkynt

@Hawkynt Hawkynt commented Sep 14, 2026

Copy link
Copy Markdown
Owner

What changed

  • expose NRG session/track topology from NrgReader instead of collapsing the container to one ISO track
  • parse per-session CUEX + DAOX/DAOI metadata and TAO ETN2/ETNF tracks, including track numbers, mode, sector geometry, pregap/data byte ranges, index LBAs, ADR/control, MCN and ISRC
  • expose raw CDTX pack bytes
  • probe ISO 9660 independently on every data track
  • preserve the first ISO filesystem at the archive root for compatibility; namespace later ISO filesystems below .nrg/session-XX/track-YY/iso
  • expose CD-DA and non-ISO data tracks as exact raw .bin archive entries below .nrg/session-XX/tracks
  • add ExtractTrack / CopyTrackTo so large tracks can be copied without transcoding; 2352/2448-byte CD-DA sector representations are preserved exactly
  • tighten rebuild maintenance so a single non-ISO data track cannot be flattened into a new ISO image

Compatibility

Existing single-ISO NRG callers still see their ISO files at the archive root. The richer topology is additive through Sessions / Tracks; synthetic raw-track entries only appear for content not represented by a readable ISO tree.

References / licensing

NRG remains proprietary with no public normative Nero specification. The implementation uses reverse-engineered public format facts and behavioral oracles only. CDEmu/libMirage is GPL and is not copied or translated; this remains a clean-room managed C# implementation. The DAO/CUE layouts were cross-checked against independently documented NRG structures and public CD image tooling.

Tests

Added coverage for mixed-mode topology, MCN/ISRC/CD-TEXT, raw CD-DA extraction, 2448-byte subchannel preservation, pregap streaming, multiple ISO sessions, non-ISO raw data tracks, and maintenance refusal for a raw single-track data image.

@Hawkynt
Hawkynt force-pushed the feature/nrg-track-reader branch 5 times, most recently from 488b11a to ed85291 Compare September 19, 2026 01:49
@Hawkynt
Hawkynt force-pushed the feature/nrg-track-reader branch from ed85291 to fcccd1d Compare September 19, 2026 01:52
@Hawkynt
Hawkynt merged commit 15cf91d into main Sep 19, 2026
5 checks passed
@Hawkynt
Hawkynt deleted the feature/nrg-track-reader branch September 19, 2026 02:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant