diff options
Diffstat (limited to 'web/script/player/track/mse.ts')
-rw-r--r-- | web/script/player/track/mse.ts | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/web/script/player/track/mse.ts b/web/script/player/track/mse.ts index 01836b7..8e83c78 100644 --- a/web/script/player/track/mse.ts +++ b/web/script/player/track/mse.ts @@ -4,6 +4,8 @@ import { profile_to_partial_track, track_to_content_type } from "../mediacaps.ts import { BufferRange, Player } from "../player.ts"; import { EncodingProfileExt, ProfileSelector } from "../profiles.ts"; import { PlayerTrack, AppendRange, TARGET_BUFFER_DURATION, MIN_BUFFER_DURATION } from "./mod.ts"; +import { show_profile } from "../mod.ts"; +import { e } from "../../jshelper/src/element.ts"; export class MSEPlayerTrack extends PlayerTrack { public source_buffer!: SourceBuffer; @@ -21,7 +23,7 @@ export class MSEPlayerTrack extends PlayerTrack { private metadata: SourceTrack, ) { super(track_index); - this.profile_selector = new ProfileSelector(player, this, player.downloader.bandwidth); + this.profile_selector = new ProfileSelector(player, this, player.downloader.bandwidth_avail); this.init() } @@ -143,4 +145,20 @@ export class MSEPlayerTrack extends PlayerTrack { this.source_buffer.appendBuffer(seg.buf); } } + + public debug(): OVar<HTMLElement> { + const rtype = (t: string, b: BufferRange[]) => { + const c = b.filter(r => r.status == t); + return `${c.length} range${c.length != 1 ? "s" : ""}, ${c.reduce((a, v) => a + v.end - v.start, 0).toFixed(2)}s` + } + return this.profile.liftA2(this.buffered, (p, b) => + e("pre", + `mse track ${this.track_index}: ${(p ? `profile ${p.id} (${show_profile(p)})` : `remux`)}` + + `\n\ttype: ${track_to_content_type(this.track_from_profile())}` + + `\n\tbuffered: ${rtype("buffered", b)}` + + `\n\tqueued: ${rtype("queued", b)}` + + `\n\tloading: ${rtype("loading", b)}` + ) as HTMLElement + ) + } } |