Open
Description
Summary
VideoEncoderConfig interface is missing hevc attribute
Expected vs. Actual Behavior
Modern browsers widely support hevc codec for video encoding and decoding https://developer.mozilla.org/en-US/docs/Web/Media/Guides/Formats/Video_codecs#hevc_h.265. Supported on Chrome 107+, Edge 18+, Firefox 120+, Opera 94+, Safari 11+
The lack of hevc attribute for video encoder means that users cannot change the format of encoded video to e.g. annex-b which is favoured for realtime video streaming.
VideoEncoder interface looks now following:
interface VideoEncoderConfig {
alpha?: AlphaOption;
avc?: AvcEncoderConfig;
bitrate?: number;
bitrateMode?: VideoEncoderBitrateMode;
codec: string;
contentHint?: string;
displayHeight?: number;
displayWidth?: number;
framerate?: number;
hardwareAcceleration?: HardwareAcceleration;
height: number;
latencyMode?: LatencyMode;
scalabilityMode?: string;
width: number;
}
Should be:
interface VideoEncoderConfig {
alpha?: AlphaOption;
avc?: AvcEncoderConfig;
bitrate?: number;
bitrateMode?: VideoEncoderBitrateMode;
codec: string;
contentHint?: string;
displayHeight?: number;
displayWidth?: number;
framerate?: number;
hardwareAcceleration?: HardwareAcceleration;
height: number;
hevc?: HevcEncoderConfig;
latencyMode?: LatencyMode;
scalabilityMode?: string;
width: number;
}
interface HevcEncoderConfig {
format?: HevcBitstreamFormat;
}
type HevcBitstreamFormat = "annexb" | "hevc";
Removing following from removedTypes.jsonc and fixing tests should alleviate this:
"VideoEncoderConfig": {
"members": {
"member": {
"hevc": null // Blink only as of 2023-03
}
}
}
Playground Link
No response
Browser Support
- This API is supported in at least two major browser engines (not two Chromium-based browsers).
Have Tried The Latest Releases
- This issue applies to the latest release of TypeScript.
- This issue applies to the latest release of
@types/web
.
Additional Context
No response