Add an OPTIONAL embedded wai.audio.score (WSCR, section 0x04) to the reel: one .wrel container now carries two cargo classes — the cut picture (reel-equivalence) and the music (mixdown-equivalence) — both bound by reel_hash (presence byte + bytes, so a silent reel and an empty-soundtrack reel never collide). audio_score() decodes the embedded score; samples_per_frame() gives the playback-sync mapping (presentation; the verified quantities stay the per-frame hashes + the mixdown hash). The `film` feature now pulls `score`. The corpus `coverage` reel gains a four-note triangle motif (its mixdown_hash in the manifest, checked by verify); a whole movie-with-sound is ~6.6 KB. 77 lib tests, clippy clean. Co-Authored-By: Claude Opus 4.8 <[email protected]>
42 lines
1.4 KiB
JSON
42 lines
1.4 KiB
JSON
{
|
|
"dolly": {
|
|
"kind": "film",
|
|
"frames": 9,
|
|
"ticks_per_frame": 3,
|
|
"start_tick": 0,
|
|
"film_hash": "35d6260d9521d447249ef35a5b13b21c198e8c037c8eaebbea1e396902013e0e",
|
|
"frames_root": "df3bb39acaa6c8216ba7ae6a81d38063d693935c5e0b4258086c66c927d9fece"
|
|
},
|
|
"twoshot": {
|
|
"kind": "film",
|
|
"frames": 9,
|
|
"ticks_per_frame": 4,
|
|
"start_tick": 0,
|
|
"film_hash": "ac4a130e2185c960bcc77c19af5562425eebcb7b48a9cab31ecaca7835199d75",
|
|
"frames_root": "1ef5d242d09b5c2ab2a732e7456496b68df4ea13499217e3f84f829cabfc8966"
|
|
},
|
|
"rise": {
|
|
"kind": "film",
|
|
"frames": 7,
|
|
"ticks_per_frame": 4,
|
|
"start_tick": 0,
|
|
"film_hash": "829d1dc78084753da4c0a0b3e87b3add6212dccf6d9836de2291f6d9504f7ac4",
|
|
"frames_root": "26d1f8745925ecaa6684850e45d38079a13abb2a5cb8e0bb732e551dc6271008"
|
|
},
|
|
"character": {
|
|
"kind": "film",
|
|
"frames": 9,
|
|
"ticks_per_frame": 3,
|
|
"start_tick": 0,
|
|
"film_hash": "e90c614b47502c699fbfb737233b14334ec94528dee66a2d7b305d813a0329be",
|
|
"frames_root": "9a4102a2244f7996ed0668ef597280047e9a159186bbdcb708fe9ea9caf7c50a"
|
|
},
|
|
"coverage": {
|
|
"kind": "reel",
|
|
"frames": 12,
|
|
"shots": 3,
|
|
"reel_hash": "639725b35479b61cc4bc0d557cfe906608582b43dd82da7158a799cef1b27e1b",
|
|
"frames_root": "497fdaeeaf8abdd30dd695559684bc744c45a496a3dac78a22f866ba6a34f08e",
|
|
"audio_mixdown_hash": "28ec3ee3dbbf90a3200615d9a20a64b1acabd576d076d37517fc96c4b52b1c99"
|
|
}
|
|
}
|