Repository navigation
Releases
v0.1.2 — 标定交互修复(等待实盘验证)
Disc Image Studio 0.1.2 — 标定交互修复(预发布)
仍是 pre-release:没有任何一次真实烧录。0.1.2 只修交互,编码与文件系统行为不变。
安装
- 下载
DiscImageStudio-0.1.2.dmg(2.5 MB) - 拖进「应用程序」,直接双击启动(Developer ID 签名 + 公证 + 已装订)
- macOS 14+,仅 arm64
- SHA-256:
7aa1258346ebada2ccc357b58b64261fa602517d0989fb1d653ee6dca1bfd332
修了什么(0.1.1 → 0.1.2)
- 标定画布能缩放了:滚轮/捏合以光标为中心 0.25×–8×,空白拖动平移,双击复位,
「适合窗口」按钮。任意缩放下拖点、加点都精确落在鼠标位置。 - 反推不再卡界面:后台执行 + 不确定进度条 + 可取消 + 完成后显示耗时;
改了点之后回到的旧结果会被丢弃。 - 可以手动指定搜索范围:关掉自动扩大后填 ±0.005–1.0 mm;结果受边界限制时明确标「不可信」。
- 8192 px 合成图导出放后台:点击立即返回,有进度与完成路径,重复点击被忽略。
测试
全量 424 个用例通过(UI 105 / Core 102 / DVD 49 / CD 68 / BluRay 40 / Burning 60),
scripts/verify.sh 全过(含三介质 hdiutil 挂载)。
[0.1.2] — 2026-11-02 — 标定交互修复
修掉 0.1.1 里明显影响使用的四处体验问题。
修复
- 标定画布可缩放/平移:滚轮与触控板捏合以光标为中心缩放(0.25×–8×),空白处拖动平移,
双击复位,工具条「适合窗口」。坐标换算统一走PhotoCanvasMapping/TraceCanvasMapping
(letterbox + 缩放 + 平移),任何视口下拖点/加点都落在鼠标位置;缩放平移不改变会话里
保存的照片像素坐标。 - 反推不再卡主线程:放到后台执行,显示不确定进度条、禁用重复触发、可取消
(CalibrationCrossFitter.fit(…, cancellation:)新增CancellationFlag参数,检查点放在
自动扩范围与每颗种子的边界),完成后显示耗时;会话/点变化后的过期结果自动丢弃。 - 可手动指定搜索范围:关闭自动扩大后可填 ±0.005–1.0 mm(0.005 步进),非法值给中文错误;
结果触及搜索边界时明确提示「不可信」。 - 8192 px 合成图导出放后台:按钮立即返回,显示进度与完成路径,重复点击忽略,失败可读错误。
测试
- UI 测试 92 → 105(新增视口坐标 round-trip、反推取消、手动范围校验、后台导出状态机)。
- 全量 424 个用例通过。
v0.1.1 — 标定闭环(等待实盘验证)
Disc Image Studio 0.1.1 — 标定闭环(预发布)
仍是 pre-release:功能完整、已签名公证、可复现,但没有任何一次真实烧录。
这一版补上了「标定闭环」——拿到刻录机和 DVD-R 之后,先烧一张标定盘,就能把
这张盘片的真实内外半径与三次轨距测出来、写回工程,再去生成正式图案。
安装
- 下载
DiscImageStudio-0.1.1.dmg(2.4 MB) - 打开,把
DiscImageStudio.app拖进「应用程序」 - 直接双击启动(Developer ID 签名 + 公证 + 已装订,无需右键绕过 Gatekeeper)
- 系统要求:macOS 14+,仅 arm64(Apple Silicon)
- SHA-256:
5007879413d7e4827e31bc1a0cc5ccc1aa962f8fa50e3fed96200acdaf415415
拿到硬件后的建议顺序
discimage-cli calibration pattern --family dvd --preset dvd-5-120mm --out ~/cal
(或 GUI 标定页「生成图案并保存记录」)→ 得到calibration-pattern.png+.calibration.json- 用这张图案生成
.iso并烧到 DVD-R - 拍照 → GUI 标定页导入照片 → 拖外缘/中心孔控制点 → 计算矫正
- 沿一条十字臂从内到外点曲线(DVD 三次轨距至少 12 点、覆盖 60% 径向宽度)→ 反推参数
- 对照橙色预测线确认后「应用标定参数」→ 工程头亮「参数已更新」
- 用更新后的几何重新生成图案并烧第二张盘,对比标定前后的差异
这一版新增
- 标定闭环:图案生成(九环 + 十字线)、照片单应矫正、单曲线反推(内外半径 + 转角 + 三次轨距)、
会话.calibration.json(schema 6)、GUI 标定页、discimage-cli calibration pattern|fit - 测试 349 → 411
[0.1.1] — 2026-11-02 — 标定闭环
新增辅助标定闭环(优先于 DVD 求解器,因为图案的物理位置只能从盘面本身测出来)。
新增
DiscImageCore/Calibration(约 3,600 行 + 39 个测试)- 图案:内置
target_slim.png(九条细同心圆 + 十字线),按生成外半径缩放、按内半径裁切,
与普通图片使用同一条坐标映射;可导出 2400×2400 PNG。 - 照片矫正:把「盘片实体外缘(60/40 mm)」与「中心孔(7.5 mm)」两条同心圆联合拟合成
一个单应矩阵;尺度来自盘片规格,不需要手量。 - 单曲线反推:沿一条径向曲线从内到外点若干点 → 反推内外半径、整体转角与三次轨距系数
(p0由总轨长约束自动确定);同一条 trace 只允许一个整数圈偏移;搜索框 ±0.02 mm 起,
落在边界时自动扩大到 ±0.1 / ±0.5 mm。 - 判定门槛:平均偏差 > 0.35 mm 或最大 > 0.8 mm 的候选不可应用;输出 rms / max / 离群点。
- 会话:
.calibration.json(schemaVersion 6)保存生成快照 + 内嵌照片 + 轮廓点 + 曲线点。
- 图案:内置
- GUI 标定页(从占位改为真流程):生成标定盘 → 导入照片 → 拖外缘/中心孔控制点 → 计算矫正 →
在正视视图上点曲线 → 反推 → 橙色预测叠线 + 红点 + 候选切换 → 应用回工程(工程头提示「参数已更新」)。 - CLI:
discimage-cli calibration pattern|fit,可无界面生成标定图案/会话、从曲线点反推参数。
修复 / 改进
DiscImageCLI增加calibration子命令帮助文本。- 测试总数 349 → 411(Core 102 / DVD 49 / CD 68 / BluRay 40 / Burning 60 / UI 92)。
仍未验证(与 0.1.0 相同)
真实烧录、实盘光学极性、图案在真盘上的对齐、镜头径向畸变与描点精度、单条曲线对三次系数的唯一性。
v0.1.0 — 首个预发布(等待实盘验证)
Disc Image Studio 0.1.0 — 首个预发布
pre-release 的含义:功能完整、可复现、已签名公证,但没有做过任何一次真实烧录
(开发机没有刻录机,也没有空白光盘)。这一版是给「买好光驱和 DVD-R 之后做实盘验证」用的。
安装
- 下载
DiscImageStudio-0.1.0.dmg(2.1 MB) - 打开,把
DiscImageStudio.app拖进「应用程序」 - 直接双击启动即可(已用 Developer ID 签名、已公证并装订票据,不需要右键绕过 Gatekeeper)
- 系统要求:macOS 14 或更新,仅 arm64(Apple Silicon)
- SHA-256:
26dd64ff616d72f0a7f66512de28ccab8c44bf0c46a06a8232fce80b70d6e877
这一版能做什么
- 把图片编码进 CD / DVD / 蓝光 的盘面物理层,导出 ISO / WAV+CUE / RAW
- 六页面 GUI:主页 / 设计(mm 画布 + 影调)/ 预览(极坐标盘面)/ 导出 / 刻录 / 标定
.discproj工程文件(schemaVersion 2)- CLI:
discimage-cli generate --family dvd --preset dvd-5-120mm --image in.png --out out.iso - 刻录走系统
drutil/hdiutil
生成速度(release、Apple M5、默认并行):DVD-5 整盘 34 s、CD 80min 9.7 s、BD-R 25 GB 66 s(纯计算)。
[0.1.0] — 2026-11-02 — 首个预发布
macOS 原生移植版的第一版。面向「等实盘验证」的预发布:编码链路、文件系统与打包公证都可复现,
但没有任何一次真实烧录(开发机没有刻录机,也没有空白光盘)。
新增
- 三种介质的编码引擎
- DVD:扰码 / ECC(PI+PO,含增量重建)/ EFMPlus(双 Stream DSV 选择 + SYNC 主副码替换)/
NRZI / 16 扇区 ECC Block 组装;快速纹理映射路径(payload 字节只在0xA5/0x92中选)。 - CD:几何与面积线性采样、2 阶(
0x0D/0xAA)与 4 阶(0x0D/0x10/0x63/0xAA)灰阶、
112 帧环形延迟交织(offset 72…2592,尾部丢弃 1332 字节)、WAV(小端 + 44 字节 RIFF)/ RAW(大端)/ 数据盘 Mode 1。 - 蓝光:EDC、LDC RS(248,216)×304、BIS RS(9,5)+RS(62,30)、17PP(RLL(1,7))、28 位 DC 控制、
RUB 组装、3T/6T 定灰(0xAA/0x44,可反极性)、UDF 2.01。
- DVD:扰码 / ECC(PI+PO,含增量重建)/ EFMPlus(双 Stream DSV 选择 + SYNC 主副码替换)/
- 文件系统:ISO9660(主卷 + Joliet SVD + 路径表,内外圈放置、Unicode 名、拒绝符号链接、单文件 ≤ 4 GiB−1)、UDF 2.01(≥640 扇区且 %32、>4 GiB 按
0x3ffff800拆 extent)、BD sidecar JSON。 - SwiftUI 应用:主页 / 设计(mm 画布、影调面板)/ 预览(极坐标盘面、文件区高亮)/
导出 / 刻录(设备→空白检查→倍速→二次确认)/ 标定;.discproj工程文件(schemaVersion 2,兼容 schema 1)。 - 刻录封装:
drutil/hdiutil的命令构造与输出解析(纯函数、可单测)、取消与超时、中文错误文案。 - CLI:
discimage-cli generate / presets / geometry / info。 - 工程化:349 个单元测试、
scripts/verify.sh端到端验收、scripts/package.sh签名+公证、
scripts/reference.sh逐字节回归、CI(macOS)。
性能(release,Apple M5,默认并行)
| 介质 | 整盘规模 | 耗时 |
|---|---|---|
| DVD-5 | 2,295,104 扇区 / 4.4 GB | 34 s |
| CD 80min | 359,849 扇区 / 845 MB | 9.7 s |
| BD-R SL | 12,219,392 扇区 / 25 GB | 66 s(纯计算) |
并行化不改变任何一个输出字节(scripts/reference.sh --check 会验证串行与 8 线程输出一致)。
已验证
swift build/swift test全绿;scripts/verify.sh全过。- 生成的 DVD ISO9660 与蓝光 UDF 镜像均能被
hdiutil attach挂载,文件内容cmp逐字节一致。 - 应用已用 Developer ID 签名、公证并装订;Gatekeeper 评估通过(含带隔离属性启动)。
未验证 / 已知限制
- 真实烧录从未执行;刻录链路只验证到命令构造、输出解析、错误翻译与取消措辞。
- 实盘光学极性未知:DVD 的
0xA5/0x92、蓝光的 3T/6T 都是编码约定,不是实测反射率。 drutil不保证 DAO 字节级控制,图案在真盘上可能整体旋转/偏移。- 仅 arm64(Apple Silicon);未构建 Universal Binary。
- DVD 不含 beam search 约束求解器(只有快速纹理映射,与上游 GUI 一致)。
- CD 没有 CIRC 与 EFM(上游本身也没有,只做字节级延迟重排)。
- 蓝光为实验性:整盘 25 GB 未实跑,性能为线性外推。
- GUI 的 8192 px 合成图导出在主线程同步执行,会卡几秒;预览页「成品读回」暂未接引擎真实读回。
下一步
拿到刻录机与 DVD-R 后按 docs/VALIDATION.md §4 的清单做实盘记录(版本 hash、刻录机型号固件、
盘片型号、所用预设、写入速度、生成/刻录入口、原始照片),再决定是否把预设与极性写回默认值。