Wren

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) raises

element.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) raises

element.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 = "") raises

element.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)

Edit this page on GitHub