aboutsummaryrefslogtreecommitdiff
path: root/web/script
diff options
context:
space:
mode:
Diffstat (limited to 'web/script')
-rw-r--r--web/script/player/jhls.d.ts46
-rw-r--r--web/script/player/mod.ts35
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