[Web API type definition issue] VideoEncoderConfig interface should have hevc attribute

Open
#2,025 7 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
3/5
Estimated time
1-2 days
Newbie friendliness
48/100
Issue type
Feature
Clarity
Mostly clear
Activity status
Stale
Tech stack
typescript
Domain
tooling

Research direction

Start by inspecting removedTypes.jsonc and the related tests for VideoEncoderConfig. Remove the hevc member exclusion, add the requested HevcEncoderConfig and HevcBitstreamFormat definitions, then update the affected tests so the generated TypeScript DOM definitions include the new attribute.

Written by the indexing model from the issue text.

Description

lib.d.ts bug
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

Dominant language
TypeScript
Stars
740
Forks
474
Avg merge
2d 8h
Merged PRs (30d)
15

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from microsoft/TypeScript-DOM-lib-generator

All issues in microsoft/TypeScript-DOM-lib-generator

Similar issues

More TypeScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.