diff options
Diffstat (limited to 'web/script/player/profiles.ts')
-rw-r--r-- | web/script/player/profiles.ts | 19 |
1 files changed, 5 insertions, 14 deletions
diff --git a/web/script/player/profiles.ts b/web/script/player/profiles.ts index adaa717..caa46bd 100644 --- a/web/script/player/profiles.ts +++ b/web/script/player/profiles.ts @@ -1,5 +1,6 @@ import { OVar } from "../jshelper/mod.ts"; import { EncodingProfile, JhlsMetadata } from "./jhls.d.ts"; +import { test_media_capability } from "./mediacaps.ts"; import { Player } from "./player.ts"; const PROFILE_UP_FAC = 0.6 @@ -33,23 +34,13 @@ export class ProfileSelector { if (i.subtitles) return this.profiles_subtitles return [] } - remux_supported(track: number): boolean { - // TODO use media capability API - // like so: await navigator.mediaCapabilities.decodingInfo({type:"file",video:{contentType:"video/webm; codecs=av1",bitrate:5*1000*1000/8,framerate:60,height:1080,width:1920}}) - const codec = this.metadata.tracks[track].info.codec - return [ - "V_AV1", - "V_VP8", - "V_VP9", - "A_OPUS", - "A_VORBIS", - "S_TEXT/WEBVTT" - ].includes(codec) + async remux_supported(track: number): Promise<boolean> { + return await test_media_capability(this.metadata.tracks[track].info) } - select_optimal_profile(track: number, profile: OVar<EncodingProfileExt | undefined>) { + async select_optimal_profile(track: number, profile: OVar<EncodingProfileExt | undefined>) { const profs = this.profile_list_for_track(track) - const sup_remux = this.remux_supported(track); + const sup_remux = await this.remux_supported(track); const min_prof = sup_remux ? -1 : 0 const co = profile.value?.order ?? min_prof const current_bitrate = profile_byterate(profs[co], 5000 * 1000) |