diff options
Diffstat (limited to 'web')
| -rw-r--r-- | web/script/player/jhls.d.ts | 46 | ||||
| -rw-r--r-- | web/script/player/mod.ts | 35 | 
2 files changed, 49 insertions, 32 deletions
| diff --git a/web/script/player/jhls.d.ts b/web/script/player/jhls.d.ts new file mode 100644 index 0000000..b1b6a57 --- /dev/null +++ b/web/script/player/jhls.d.ts @@ -0,0 +1,46 @@ + +export interface TimeRange { start: number, end: number } +export interface JhlsMetadata { +    tracks: JhlsTrack[], +    extra_profiles: EncodingProfile[], +    duration: number, +} +export interface JhlsTrack { +    info: SourceTrack, +    segments: TimeRange[], +} +export interface SourceTrack { +    kind: SourceTrackKind, +    name: string, +    codec: string, +    language: string, +} +export interface SourceTrackKind { +    video?: { +        width: number, +        height: number, +        fps: number, +    }, +    audio?: { +        channels: number, +        sample_rate: number, +        bit_depth: number, +    }, +    subtitles?: boolean, +} +export interface EncodingProfile { +    video?: { +        codec: string, +        preset: number, +        bitrate: number, +        width: number, +    }, +    audio?: { +        codec: string, +        bitrate: number, +        sample_rate?: number, +    }, +    subtitles?: { +        codec: string, +    }, +}
\ No newline at end of file diff --git a/web/script/player/mod.ts b/web/script/player/mod.ts index 52da454..caad781 100644 --- a/web/script/player/mod.ts +++ b/web/script/player/mod.ts @@ -4,35 +4,7 @@      Copyright (C) 2023 metamuffin <metamuffin.org>  */  import { OVar, e } from "../jshelper/mod.ts"; - -export interface Range { start: number, end: number } -export interface JhlsMetadata { -    tracks: JhlsTrack[], -    duration: number, -} -export interface JhlsTrack { -    info: SourceTrack, -    segments: Range[], -} -export interface SourceTrack { -    kind: SourceTrackKind, -    name: string, -    codec: string, -    language: string, -} -export interface SourceTrackKind { -    video?: { -        width: number, -        height: number, -        fps: number, -    }, -    audio?: { -        channels: number, -        sample_rate: number, -        bit_depth: number, -    }, -    subtitles?: boolean, -} +import { JhlsMetadata, JhlsTrack, TimeRange } from "./jhls.d.ts";  const TARGET_BUFFER_DURATION = 15  const MIN_BUFFER_DURATION = 1 @@ -148,7 +120,7 @@ function display_time(t: number): string {      return (h ? h + "h" : "") + (m ? m + "m" : "") + (s ? s + "s" : "")  } -interface BufferRange extends Range { status: "buffered" | "loading" | "queued" } +interface BufferRange extends TimeRange { status: "buffered" | "loading" | "queued" }  class Player {      public video = e("video")      private media_source = new MediaSource(); @@ -240,10 +212,9 @@ class Player {          await this.update(p)          this.video.currentTime = p      } -  } -interface AppendRange extends Range { buf: ArrayBuffer, index: number, cb: () => void } +interface AppendRange extends TimeRange { buf: ArrayBuffer, index: number, cb: () => void }  class PlayerTrack {      private source_buffer: SourceBuffer      private current_load?: AppendRange | 
