Module htmlmedia
HTMLMediaElement (<video>, <audio>): the media element state machine of HTML §4.8.11 (src/page/media_element.odin) on the media package's player. The events (loadstart ... ended) are plain events fired at the element; TimeRanges, MediaError and VideoPlaybackQuality are made by the engine (native/js/runtime/web_mediaobjects.c) from the numbers below.
Exposed to: Window. Source: api/media_element.widl.
Odin: import "wren:htmlmedia".
Types
handle HTMLMediaElement : Element
A <video> or <audio> element; anything else is not a live HTMLMediaElement.
Checked by the browser on every call (lookup_HTMLMediaElement).
callback VideoFrameRequestCallback
void VideoFrameRequestCallback(i32 user, f64 now)requestVideoFrameCallback's callback: now is the current time on the page's performance timeline (the callback
reads the rest of the metadata back with HTMLVideoElement_videoFrameMetadata, keyed by the id this call made).
Functions
HTMLMediaElement_currentSrc
string HTMLMediaElement_currentSrc(HTMLMediaElement element)element.currentSrc: the absolute URL of the resource being played ("" when none).
Host: HTMLMediaElement_currentSrc :: proc(c: ^Call, element: Api_HTMLMediaElement) -> string
HTMLMediaElement_networkState
i32 HTMLMediaElement_networkState(HTMLMediaElement element)element.networkState: 0 empty, 1 idle, 2 loading, 3 no source.
Host: HTMLMediaElement_networkState :: proc(c: ^Call, element: Api_HTMLMediaElement) -> i32
HTMLMediaElement_readyState
i32 HTMLMediaElement_readyState(HTMLMediaElement element)element.readyState: 0 nothing ... 4 enough data.
Host: HTMLMediaElement_readyState :: proc(c: ^Call, element: Api_HTMLMediaElement) -> i32
HTMLMediaElement_seeking
bool HTMLMediaElement_seeking(HTMLMediaElement element)element.seeking
Host: HTMLMediaElement_seeking :: proc(c: ^Call, element: Api_HTMLMediaElement) -> bool
HTMLMediaElement_currentTime
f64 HTMLMediaElement_currentTime(HTMLMediaElement element)element.currentTime, in seconds.
Host: HTMLMediaElement_currentTime :: proc(c: ^Call, element: Api_HTMLMediaElement) -> f64
HTMLMediaElement_set_currentTime
void HTMLMediaElement_set_currentTime(HTMLMediaElement element, f64 value)element.currentTime = value: a seek (a NaN or infinite value is refused by Web IDL before).
Host: HTMLMediaElement_set_currentTime :: proc(c: ^Call, element: Api_HTMLMediaElement, value: f64)
HTMLMediaElement_duration
f64 HTMLMediaElement_duration(HTMLMediaElement element)element.duration: NaN until the metadata is known, Infinity for a stream with no end.
Host: HTMLMediaElement_duration :: proc(c: ^Call, element: Api_HTMLMediaElement) -> f64
HTMLMediaElement_paused
bool HTMLMediaElement_paused(HTMLMediaElement element)element.paused
Host: HTMLMediaElement_paused :: proc(c: ^Call, element: Api_HTMLMediaElement) -> bool
HTMLMediaElement_ended
bool HTMLMediaElement_ended(HTMLMediaElement element)element.ended
Host: HTMLMediaElement_ended :: proc(c: ^Call, element: Api_HTMLMediaElement) -> bool
HTMLMediaElement_defaultPlaybackRate
f64 HTMLMediaElement_defaultPlaybackRate(HTMLMediaElement element)Host: HTMLMediaElement_defaultPlaybackRate :: proc(c: ^Call, element: Api_HTMLMediaElement) -> f64
HTMLMediaElement_set_defaultPlaybackRate
void HTMLMediaElement_set_defaultPlaybackRate(HTMLMediaElement element, f64 value)Host: HTMLMediaElement_set_defaultPlaybackRate :: proc(c: ^Call, element: Api_HTMLMediaElement, value: f64)
HTMLMediaElement_playbackRate
f64 HTMLMediaElement_playbackRate(HTMLMediaElement element)Host: HTMLMediaElement_playbackRate :: proc(c: ^Call, element: Api_HTMLMediaElement) -> f64
HTMLMediaElement_set_playbackRate
void HTMLMediaElement_set_playbackRate(HTMLMediaElement element, f64 value)Host: HTMLMediaElement_set_playbackRate :: proc(c: ^Call, element: Api_HTMLMediaElement, value: f64)
HTMLMediaElement_preservesPitch
bool HTMLMediaElement_preservesPitch(HTMLMediaElement element)Host: HTMLMediaElement_preservesPitch :: proc(c: ^Call, element: Api_HTMLMediaElement) -> bool
HTMLMediaElement_set_preservesPitch
void HTMLMediaElement_set_preservesPitch(HTMLMediaElement element, bool value)Host: HTMLMediaElement_set_preservesPitch :: proc(c: ^Call, element: Api_HTMLMediaElement, value: bool)
HTMLMediaElement_volume
f64 HTMLMediaElement_volume(HTMLMediaElement element)Host: HTMLMediaElement_volume :: proc(c: ^Call, element: Api_HTMLMediaElement) -> f64
HTMLMediaElement_set_volume
void HTMLMediaElement_set_volume(HTMLMediaElement element, f64 value) raiseselement.volume = value: IndexSize outside [0, 1].
Raises: returns an Error (see web).
Host: HTMLMediaElement_set_volume :: proc(c: ^Call, element: Api_HTMLMediaElement, value: f64) -> Api_Error
HTMLMediaElement_muted
bool HTMLMediaElement_muted(HTMLMediaElement element)Host: HTMLMediaElement_muted :: proc(c: ^Call, element: Api_HTMLMediaElement) -> bool
HTMLMediaElement_set_muted
void HTMLMediaElement_set_muted(HTMLMediaElement element, bool value)Host: HTMLMediaElement_set_muted :: proc(c: ^Call, element: Api_HTMLMediaElement, value: bool)
HTMLMediaElement_ranges
bytes HTMLMediaElement_ranges(HTMLMediaElement element, i32 which)element.buffered (0), played (1) or seekable (2) as pairs of f64 (start, end), seconds, little endian: the engine makes the TimeRanges object of them.
Host: HTMLMediaElement_ranges :: proc(c: ^Call, element: Api_HTMLMediaElement, which: i32) -> []u8
HTMLMediaElement_setSourceHandle
void HTMLMediaElement_setSourceHandle(HTMLMediaElement element, u64 handle) raiseselement.srcObject = a MediaSourceHandle (its object handle; 0: null): the element loads it, srcObject before src (HTML "media provider object"). Type for another kind of object.
Raises: returns an Error (see web).
Host: HTMLMediaElement_setSourceHandle :: proc(c: ^Call, element: Api_HTMLMediaElement, handle: u64) -> Api_Error
HTMLMediaElement_errorCode
i32 HTMLMediaElement_errorCode(HTMLMediaElement element)element.error: the code (0 when null) and the message.
Host: HTMLMediaElement_errorCode :: proc(c: ^Call, element: Api_HTMLMediaElement) -> i32
HTMLMediaElement_errorMessage
string HTMLMediaElement_errorMessage(HTMLMediaElement element)Host: HTMLMediaElement_errorMessage :: proc(c: ^Call, element: Api_HTMLMediaElement) -> string
HTMLMediaElement_play
Promise HTMLMediaElement_play(HTMLMediaElement element)element.play(): a promise settled when playback starts (NotAllowedError when the autoplay policy forbids it, NotSupportedError when there is no usable source, AbortError when a pause or a load interrupts it).
Host: HTMLMediaElement_play :: proc(c: ^Call, element: Api_HTMLMediaElement) -> u64
HTMLMediaElement_pause
void HTMLMediaElement_pause(HTMLMediaElement element)Host: HTMLMediaElement_pause :: proc(c: ^Call, element: Api_HTMLMediaElement)
HTMLMediaElement_load
void HTMLMediaElement_load(HTMLMediaElement element)element.load(): the media element load algorithm.
Host: HTMLMediaElement_load :: proc(c: ^Call, element: Api_HTMLMediaElement)
HTMLMediaElement_canPlayType
string HTMLMediaElement_canPlayType(HTMLMediaElement element, string type)element.canPlayType(type): "", "maybe" or "probably".
Host: HTMLMediaElement_canPlayType :: proc(c: ^Call, element: Api_HTMLMediaElement, type: string) -> string
HTMLVideoElement_videoWidth
u32 HTMLVideoElement_videoWidth(HTMLMediaElement element)video.videoWidth / videoHeight: the size of the picture (0 before the metadata).
Host: HTMLVideoElement_videoWidth :: proc(c: ^Call, element: Api_HTMLMediaElement) -> u32
HTMLVideoElement_videoHeight
u32 HTMLVideoElement_videoHeight(HTMLMediaElement element)Host: HTMLVideoElement_videoHeight :: proc(c: ^Call, element: Api_HTMLMediaElement) -> u32
HTMLVideoElement_playbackQuality
bytes HTMLVideoElement_playbackQuality(HTMLMediaElement element)video.getVideoPlaybackQuality(): five f64 (creationTime, droppedVideoFrames, totalVideoFrames, corruptedVideoFrames, totalFrameDelay in seconds).
Host: HTMLVideoElement_playbackQuality :: proc(c: ^Call, element: Api_HTMLMediaElement) -> []u8
HTMLVideoElement_requestVideoFrameCallback
u64 HTMLVideoElement_requestVideoFrameCallback(HTMLMediaElement element, VideoFrameRequestCallback callback, i32 user = 0)video.requestVideoFrameCallback(callback): the callback runs once, when a new video frame is presented (the same moment the playback-quality counters advance). Returns an id for cancelVideoFrameCallback (0: too many waiting, media.max_video_frame_callbacks).
Host: HTMLVideoElement_requestVideoFrameCallback :: proc(c: ^Call, element: Api_HTMLMediaElement, callback: u32, user: i32) -> u64
HTMLVideoElement_cancelVideoFrameCallback
void HTMLVideoElement_cancelVideoFrameCallback(HTMLMediaElement element, u64 id)video.cancelVideoFrameCallback(id).
Host: HTMLVideoElement_cancelVideoFrameCallback :: proc(c: ^Call, element: Api_HTMLMediaElement, id: u64)
HTMLVideoElement_videoFrameMetadata
bytes HTMLVideoElement_videoFrameMetadata(HTMLMediaElement element, u64 id)The VideoFrameCallbackMetadata of the frame that fired callback id, snapshotted at presentation: eight f64
(presentationTime, expectedDisplayTime, width, height, mediaTime, presentedFrames, processingDuration, and a
bitmask of which of the optional fields are present; here always 0 — captureTime/receiveTime/rtpTimestamp absent).
Empty when the id is unknown.
Host: HTMLVideoElement_videoFrameMetadata :: proc(c: ^Call, element: Api_HTMLMediaElement, id: u64) -> []u8
HTMLMediaElement_audioTracks
u64 HTMLMediaElement_audioTracks(HTMLMediaElement element)element.audioTracks / videoTracks / textTracks: the handle of the list object (an AudioTrackList / VideoTrackList / TextTrackList of the mediatracks module; the engine wraps it). 0 when media.tracks.enabled is off. The same object each time (SameObject).
Host: HTMLMediaElement_audioTracks :: proc(c: ^Call, element: Api_HTMLMediaElement) -> u64
HTMLMediaElement_videoTracks
u64 HTMLMediaElement_videoTracks(HTMLMediaElement element)Host: HTMLMediaElement_videoTracks :: proc(c: ^Call, element: Api_HTMLMediaElement) -> u64
HTMLMediaElement_textTracks
u64 HTMLMediaElement_textTracks(HTMLMediaElement element)Host: HTMLMediaElement_textTracks :: proc(c: ^Call, element: Api_HTMLMediaElement) -> u64
HTMLMediaElement_addTextTrack
u64 HTMLMediaElement_addTextTrack(HTMLMediaElement element, string kind, string label = "", string language = "") raiseselement.addTextTrack(kind, label, language): the handle of a new (hidden) TextTrack. NotSupported when off.
Raises: returns an Error (see web).
Host: HTMLMediaElement_addTextTrack :: proc(c: ^Call, element: Api_HTMLMediaElement, kind: string, label: string, language: string) -> (u64, Api_Error)