mirror of
https://github.com/4gray/iptvnator.git
synced 2026-10-14 05:06:16 -08:00
Re-lands #1771, which was merged into the branch of #1768 after #1768 itself had been squash-merged and so never reached master: - Native: the macOS addon, the Windows libmpv addon and the frame-copy helper observe mpv `chapter-list`; snapshots carry `chapters: [{ timeSeconds, title? }]`, cleared on every START_FILE. - Main: `normalizeEmbeddedMpvChapters` validates the field into `EmbeddedMpvSession.chapters` (older binaries give []). - Renderer: `buildChapterTimelineSegments` maps chapters to timeline segments; host catch-up segments keep precedence, and a closing-credits chapter times the Up next card. Chapters flow through the same timelineSegments path as catch-up programmes, so they get #1854's keyboard and screen-reader naming, bounded label and 3:1 separators; specs and the frame-copy E2E now assert the chapter name reaches the slider's aria-valuetext. The packaged Linux smoke registers each media server for cleanup as it starts. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
2fa03c8efc
commit
e74a03b8e0
27 files changed
+1020
-41
No files matched your search
@@ -91,6 +91,13 @@ export interface EmbeddedMpvAudioTrack {
|
||||
|
||||
export type EmbeddedMpvSubtitleTrack = EmbeddedMpvAudioTrack;
|
||||
|
||||
/** One entry of mpv's `chapter-list`, in file order. */
|
||||
export interface EmbeddedMpvChapter {
|
||||
/** Chapter start, in media seconds. */
|
||||
timeSeconds: number;
|
||||
title?: string;
|
||||
}
|
||||
|
||||
export interface EmbeddedMpvRecordingState {
|
||||
active: boolean;
|
||||
targetPath?: string;
|
||||
@@ -149,6 +156,11 @@ export interface EmbeddedMpvSession {
|
||||
selectedSubtitleTrackId: number | null;
|
||||
playbackSpeed: number;
|
||||
aspectOverride: string;
|
||||
/**
|
||||
* The file's chapters (mpv `chapter-list`). Absent from an addon built
|
||||
* before chapters were observed and from the Linux `--wid` backend.
|
||||
*/
|
||||
chapters?: EmbeddedMpvChapter[];
|
||||
/** Source video size (mpv dwidth/dheight); frame-copy engine only. */
|
||||
videoWidth?: number;
|
||||
videoHeight?: number;
|
||||
|
||||
Reference in new issue
Block a user