mirror of
https://github.com/4gray/iptvnator.git
synced 2026-10-10 10:06:15 -08:00
* docs: design Linux frame-copy packaging * docs: plan Linux frame-copy packaging * feat(packaging): define Linux frame-copy profiles * fix(packaging): reject inherited profile names * feat(embedded-mpv): validate staged Linux runtime * fix(embedded-mpv): require Linux source packages * fix(embedded-mpv): harden Linux runtime staging * feat(embedded-mpv): build LGPL Linux runtime * fix(embedded-mpv): pin Linux runtime inputs * feat(embedded-mpv): build relocatable Linux helper * fix(embedded-mpv): require bundled Linux runtime * fix(embedded-mpv): make Linux runtime portable * feat(packaging): ship Linux frame-copy artifacts * fix(embedded-mpv): verify Linux helper linkage * fix(packaging): enforce Linux frame-copy isolation * fix(embedded-mpv): pin Linux display data * docs(embedded-mpv): document Linux frame-copy packaging * feat(embedded-mpv): probe Linux frame-copy runtime * test(embedded-mpv): smoke packaged Linux frame-copy * docs(embedded-mpv): clarify Linux system runtime baseline * fix(embedded-mpv): harden Linux runtime capability gate * ci: verify Linux frame-copy packages * test(embedded-mpv): harden packaged Linux smoke * test(embedded-mpv): preserve packaged GL mode * test(packaging): harden Linux package probes * fix(embedded-mpv): enable private Snap shared memory * fix(embedded-mpv): sanitize Linux helper environment * fix(packaging): enforce private Snap memory semantics * fix(packaging): reject ambiguous Snap memory metadata * fix(embedded-mpv): prioritize trusted Snap GL * fix(packaging): reject advanced Snap YAML semantics * fix(packaging): reject arbitrary Snap YAML aliases * feat(packaging): ship Linux runtime license notices * docs(embedded-mpv): document Linux runtime distribution * fix(packaging): parse Snap trailing comments safely * fix(release): gate Snap publish on public source release * fix(packaging): strip VCS metadata from source bundle * docs(packaging): clarify Linux source release gate * test(embedded-mpv): smoke missing bundled libmpv * style(embedded-mpv): format final validation inputs * fix(e2e): satisfy fixture index signature typing * fix(ci): declare fontconfig gperf generator * fix(embedded-mpv): hash runtime cache identities * fix(packaging): harden Linux frame-copy delivery * fix(packaging): tighten runtime delivery gates * fix(ci): decouple Linux runtime matrix * fix(packaging): harden Linux frame-copy delivery * fix(packaging): validate Linux frame-copy runtimes * fix(packaging): scope Snap Electron library checks * feat(packaging): ship Linux frame-copy runtimes * fix(packaging): improve Linux runtime smoke diagnostics * fix(packaging): expose bounded helper probe details * test(packaging): trace Snap EGL probe failures * fix(packaging): prefer core22 ABI in Snap helper * fix(packaging): bound helper probe capture * fix(packaging): harden Linux frame-copy releases * fix(packaging): canonicalize libplacebo submodule identity * fix(packaging): make source archive inspection portable * fix(packaging): harden Snap release verification
110 lines
2.9 KiB
TypeScript
110 lines
2.9 KiB
TypeScript
export type EmbeddedMpvSessionStatus =
|
|
| 'idle'
|
|
| 'loading'
|
|
| 'playing'
|
|
| 'paused'
|
|
| 'ended'
|
|
| 'error'
|
|
| 'closed';
|
|
|
|
export interface EmbeddedMpvBounds {
|
|
x: number;
|
|
y: number;
|
|
width: number;
|
|
height: number;
|
|
}
|
|
|
|
export interface EmbeddedMpvCapabilities {
|
|
subtitles: boolean;
|
|
playbackSpeed: boolean;
|
|
aspectOverride: boolean;
|
|
screenshot: boolean;
|
|
recording: boolean;
|
|
}
|
|
|
|
export type EmbeddedMpvEngine = 'native' | 'frame-copy';
|
|
|
|
export interface EmbeddedMpvSupport {
|
|
supported: boolean;
|
|
platform: string;
|
|
reason?: string;
|
|
capabilities?: EmbeddedMpvCapabilities;
|
|
/**
|
|
* Rendering engine the main process will use for new sessions.
|
|
* `native` = platform video surface (NSOpenGLView/HWND/X11 wid),
|
|
* `frame-copy` = helper process + shm ring + renderer canvas.
|
|
*/
|
|
engine?: EmbeddedMpvEngine;
|
|
/**
|
|
* True when this machine could run the frame-copy engine (macOS arm64
|
|
* or Linux x64, after its helper/runtime capability gate), regardless of
|
|
* whether it is active.
|
|
* Drives the Settings toggle; switching engines requires an app restart.
|
|
*/
|
|
frameCopyAvailable?: boolean;
|
|
/**
|
|
* Stable fail-closed capability reason when frameCopyAvailable is false.
|
|
* Intended for startup tracing and support diagnostics, not user copy.
|
|
*/
|
|
frameCopyUnavailableReason?: string;
|
|
}
|
|
|
|
/**
|
|
* Where the renderer's frame pump finds the current shm frame ring of a
|
|
* frame-copy session. A new generation is announced after every viewport
|
|
* resize; the pump re-attaches to the new segment.
|
|
*/
|
|
export interface EmbeddedMpvFrameSource {
|
|
shmName: string;
|
|
width: number;
|
|
height: number;
|
|
generation: number;
|
|
readerPath: string;
|
|
}
|
|
|
|
export interface EmbeddedMpvAudioTrack {
|
|
id: number;
|
|
title?: string;
|
|
language?: string;
|
|
selected: boolean;
|
|
defaultTrack?: boolean;
|
|
forced?: boolean;
|
|
}
|
|
|
|
export type EmbeddedMpvSubtitleTrack = EmbeddedMpvAudioTrack;
|
|
|
|
export interface EmbeddedMpvRecordingState {
|
|
active: boolean;
|
|
targetPath?: string;
|
|
startedAt?: string;
|
|
error?: string;
|
|
}
|
|
|
|
export interface EmbeddedMpvRecordingStartOptions {
|
|
directory?: string;
|
|
title?: string;
|
|
}
|
|
|
|
export interface EmbeddedMpvSession {
|
|
id: string;
|
|
title: string;
|
|
streamUrl: string;
|
|
status: EmbeddedMpvSessionStatus;
|
|
positionSeconds: number;
|
|
durationSeconds: number | null;
|
|
volume: number;
|
|
audioTracks: EmbeddedMpvAudioTrack[];
|
|
selectedAudioTrackId: number | null;
|
|
subtitleTracks: EmbeddedMpvSubtitleTrack[];
|
|
selectedSubtitleTrackId: number | null;
|
|
playbackSpeed: number;
|
|
aspectOverride: string;
|
|
/** Source video size (mpv dwidth/dheight); frame-copy engine only. */
|
|
videoWidth?: number;
|
|
videoHeight?: number;
|
|
recording?: EmbeddedMpvRecordingState;
|
|
startedAt: string;
|
|
updatedAt: string;
|
|
error?: string;
|
|
}
|