5.9.5
Fixed
- A PGS display set carrying multiple composition objects at one start PTS (a forced sign plus dialogue, a common real-disc shape) now renders ALL its objects instead of collapsing to the last one. The decoder already fanned N objects into N same-start image cues, but the retained store's same-start image replacement (#112) assumed "a PGS composition has a unique start PTS". That is true per composition, false per composition object, so each sibling replaced the previous before publish and only the last object survived (deterministic, silent; the only host-visible fingerprint was a gap in the session-monotonic cue ids). The replacement key now includes object geometry (normalized position + pixel size, deterministic across re-decodes via the alpha-bounding-box crop): a re-decode still replaces its placeholder twin (the #112 audio-switch / post-seek backscan contract), sibling objects are all kept, mirroring the text path's distinct-simultaneous-speakers rule.
- The same collapse existed one level up at seek time: the #112 reconstruction pass held a single candidate cue, so a multi-object landing set lost all but one object when a seek landed inside its window. The candidate is now the whole same-start group; the #143 clear-trim applies per member, and pass-end emission closes every member at the successor's start.
Added
- Per-cue forced flag.
AVSubtitleRect'sAV_SUBTITLE_FLAG_FORCED(set by the PGS/DVD decoders for forced captions) was never read, so a host could not distinguish a forced sign from regular dialogue, nor tell that a forced line had been dropped. It now lands inSubtitleImage.isForcedand surfaces per cue asSubtitleCue.isForced. Both are source-compatible additions (defaulted init parameter / new computed property); track-level forcedness stays onTrackInfo.isForced.
Covered by Issue146PGSMultiObjectTests (9 cases, reporter geometry: forced sign [685,110,550,59] + dialogue [685,910,550,59] @1080p; the three collapse repros fail on 5.9.4). No FFmpegBuild change; the pin stays at 2.1.2.
Thanks to cmcpherson274 for the exceptionally precise report with authored ground truth and an independent range-reader reference (#146).