mirror of
https://github.com/zoriya/v10.git
synced 2026-08-16 02:45:09 +00:00
54 lines
2.5 KiB
TypeScript
54 lines
2.5 KiB
TypeScript
import { Cue, TextTrack } from "../../media/types/index.js";
|
|
import { MessageActor } from "../../core/actors/create-machine-actor.js";
|
|
import { ForwardBufferConfig } from "../../media/buffer/forward-buffer.js";
|
|
import { TextMessagePipelines } from "../primitives/text-segment-load-pipeline.js";
|
|
import "./text-tracks.js";
|
|
//#region src/playback/actors/text-track-segment-loader.d.ts
|
|
/**
|
|
* Mirrors the v/a `SegmentLoaderMessage` shape. `range` carries the
|
|
* forward-window anchor (`range.start` is treated as the load anchor;
|
|
* the actor computes its own forward window internally via
|
|
* `getSegmentsToLoad`). When `range` is omitted (metadata mode), this
|
|
* actor is a no-op — text tracks have no init-segment concept.
|
|
*/
|
|
type TextTrackSegmentLoaderMessage = {
|
|
type: 'load';
|
|
track: TextTrack;
|
|
range?: {
|
|
start: number;
|
|
end: number;
|
|
};
|
|
};
|
|
/** Finite states of the actor. */
|
|
type TextTrackSegmentLoaderActorState = 'idle' | 'loading' | 'destroyed';
|
|
/** Non-finite (extended) data managed by the actor. */
|
|
interface TextTrackSegmentLoaderActorContext {
|
|
/**
|
|
* Track ID of the segment currently being fetched, or null. Paired
|
|
* with `inFlightSegmentId` so the continue-vs-preempt check survives
|
|
* cross-track segment-id collisions (e.g. each track starts at
|
|
* `seg-0`).
|
|
*/
|
|
inFlightTrackId: string | null;
|
|
/**
|
|
* Segment ID currently being fetched, or null. Used together with
|
|
* `inFlightTrackId` by the `loading` state's `load` handler.
|
|
*/
|
|
inFlightSegmentId: string | null;
|
|
}
|
|
type TextTrackSegmentLoaderActor = MessageActor<TextTrackSegmentLoaderActorState, TextTrackSegmentLoaderActorContext, TextTrackSegmentLoaderMessage>;
|
|
/**
|
|
* Configuration for `createTextTrackSegmentLoaderActor`. Spread over
|
|
* `DEFAULT_FORWARD_BUFFER_CONFIG` to override individual forward-window
|
|
* fields (e.g. `bufferDuration`). Text tracks don't have a back-buffer
|
|
* concern — cues evict by their playhead-relative window at runtime —
|
|
* so no `backBuffer` config field.
|
|
*/
|
|
interface TextTrackSegmentLoaderActorConfig<C extends Cue = Cue> {
|
|
forwardBuffer?: Partial<ForwardBufferConfig>;
|
|
/** Ordered step pipeline. Defaults to {@link DEFAULT_TEXT_MESSAGE_PIPELINES} (`resolveCues → dispatchCues`). */
|
|
messagePipelines?: TextMessagePipelines<C>;
|
|
}
|
|
//#endregion
|
|
export { TextTrackSegmentLoaderActor, TextTrackSegmentLoaderActorConfig, TextTrackSegmentLoaderActorContext, TextTrackSegmentLoaderActorState, TextTrackSegmentLoaderMessage };
|
|
//# sourceMappingURL=text-track-segment-loader.d.ts.map
|