Update README: v0.6.0 API, real sample output
This commit is contained in:
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
Rust library for 4K UHD / Blu-ray optical drives. Drive access, disc scanning, stream labels, AACS decryption, KEYDB updates, and content reading in one crate. Bundled drive profiles — no external files needed.
|
Rust library for 4K UHD / Blu-ray optical drives. Drive access, disc scanning, stream labels, AACS decryption, KEYDB updates, and content reading in one crate. Bundled drive profiles — no external files needed.
|
||||||
|
|
||||||
**12-23 MB/s** read speeds on BD. Full LibreDrive init: unlock, firmware upload, speed calibration — all from pure Rust.
|
**12+ MB/s** sustained read speeds on BD. Full init: unlock, firmware upload, speed calibration — all from pure Rust.
|
||||||
|
|
||||||
Multi-lingual by design — the library outputs structured data and numeric error codes, never English text. Build any UI or localization on top.
|
Multi-lingual by design — the library outputs structured data and numeric error codes, never English text. Build any UI or localization on top.
|
||||||
|
|
||||||
@@ -18,7 +18,7 @@ Part of the [freemkv](https://github.com/freemkv) project.
|
|||||||
|
|
||||||
```toml
|
```toml
|
||||||
[dependencies]
|
[dependencies]
|
||||||
libfreemkv = "0.5"
|
libfreemkv = "0.6"
|
||||||
```
|
```
|
||||||
|
|
||||||
## Quick Start
|
## Quick Start
|
||||||
@@ -29,6 +29,8 @@ use std::path::Path;
|
|||||||
|
|
||||||
// Open drive — profiles are bundled, auto-identified
|
// Open drive — profiles are bundled, auto-identified
|
||||||
let mut session = DriveSession::open(Path::new("/dev/sr0"))?;
|
let mut session = DriveSession::open(Path::new("/dev/sr0"))?;
|
||||||
|
session.wait_ready()?; // wait for disc
|
||||||
|
session.init()?; // optional: unlock + calibrate for full speed
|
||||||
|
|
||||||
// Scan disc — UDF, playlists, streams, AACS (all automatic)
|
// Scan disc — UDF, playlists, streams, AACS (all automatic)
|
||||||
let disc = Disc::scan(&mut session, &ScanOptions::default())?;
|
let disc = Disc::scan(&mut session, &ScanOptions::default())?;
|
||||||
@@ -47,7 +49,7 @@ while let Some(unit) = reader.read_unit()? {
|
|||||||
## What It Does
|
## What It Does
|
||||||
|
|
||||||
- **Drive access** — open, identify, unlock, firmware upload, speed calibration, eject
|
- **Drive access** — open, identify, unlock, firmware upload, speed calibration, eject
|
||||||
- **12-23 MB/s reads** — auto-detects kernel transfer limits, full disc speed
|
- **12+ MB/s reads** — auto-detects kernel transfer limits, sustained full speed
|
||||||
- **Disc scanning** — UDF 2.50 filesystem, MPLS playlists, CLPI clip info
|
- **Disc scanning** — UDF 2.50 filesystem, MPLS playlists, CLPI clip info
|
||||||
- **Stream labels** — 5 BD-J format parsers (Paramount, Criterion, Pixelogic, CTRM, Deluxe)
|
- **Stream labels** — 5 BD-J format parsers (Paramount, Criterion, Pixelogic, CTRM, Deluxe)
|
||||||
- **AACS decryption** — transparent key resolution and content decrypt (1.0, 2.0 in progress)
|
- **AACS decryption** — transparent key resolution and content decrypt (1.0, 2.0 in progress)
|
||||||
@@ -59,10 +61,10 @@ AACS decryption requires a KEYDB.cfg file. If available at `~/.config/aacs/KEYDB
|
|||||||
## Architecture
|
## Architecture
|
||||||
|
|
||||||
```text
|
```text
|
||||||
DriveSession — open, identify, unlock, read sectors
|
DriveSession — open, identify, init (optional), read sectors
|
||||||
├── ScsiTransport — SG_IO (Linux), IOKit (macOS)
|
├── ScsiTransport — SG_IO (Linux), IOKit (macOS)
|
||||||
├── DriveProfile — per-drive unlock parameters (bundled)
|
├── DriveProfile — per-drive parameters (bundled)
|
||||||
└── Platform — MediaTek (supported), Renesas (planned)
|
└── PlatformDriver — MediaTek (supported), Renesas (planned)
|
||||||
|
|
||||||
Disc — scan titles, streams, AACS state
|
Disc — scan titles, streams, AACS state
|
||||||
├── UDF reader — Blu-ray UDF 2.50 with metadata partitions
|
├── UDF reader — Blu-ray UDF 2.50 with metadata partitions
|
||||||
|
|||||||
Reference in New Issue
Block a user