Summary
The hang catalog pixel-aspect fields never interop between the two implementations:
js/hang/src/catalog/video.ts:31: displayAspectWidth / displayAspectHeight
rs/hang/src/catalog/video/mod.rs:117: display_ratio_width / display_ratio_height (serialized as displayRatioWidth / displayRatioHeight)
Each side ignores the other's field name, so the value is dropped in both directions.
Impact
Cross-language anamorphic video renders unstretched (wrong aspect ratio); no error anywhere.
Suggested fix
Pick one name (the Rust one matches neither WebCodecs nor the JS name, so decide deliberately), emit it from both sides, and accept the legacy alias on parse for one release.
Found during a full review of the dev branch; pre-existing on main.
(Written by Claude Fable 5)
Summary
The hang catalog pixel-aspect fields never interop between the two implementations:
js/hang/src/catalog/video.ts:31:displayAspectWidth/displayAspectHeightrs/hang/src/catalog/video/mod.rs:117:display_ratio_width/display_ratio_height(serialized asdisplayRatioWidth/displayRatioHeight)Each side ignores the other's field name, so the value is dropped in both directions.
Impact
Cross-language anamorphic video renders unstretched (wrong aspect ratio); no error anywhere.
Suggested fix
Pick one name (the Rust one matches neither WebCodecs nor the JS name, so decide deliberately), emit it from both sides, and accept the legacy alias on parse for one release.
Found during a full review of the dev branch; pre-existing on main.
(Written by Claude Fable 5)