chromium/third_party/blink/renderer/modules/webcodecs/video_encoder_config.idl

// Copyright 2020 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// https://github.com/WICG/web-codecs

enum VideoEncoderBitrateMode { "constant", "variable", "quantizer" };

// NOTE: Keep this structure in sync with CopyConfig() defined in
// video_encoder.cc.
dictionary VideoEncoderConfig {
  required DOMString codec;
  HardwarePreference hardwareAcceleration = "no-preference";
  AlphaOption alpha = "discard";

  [EnforceRange] unsigned long long bitrate;
  VideoEncoderBitrateMode bitrateMode = "variable";

  double framerate;

  required [EnforceRange] unsigned long width;
  required [EnforceRange] unsigned long height;

  // Hint about the pixel aspect ratio of the content.
  [EnforceRange] unsigned long displayWidth;
  [EnforceRange] unsigned long displayHeight;

  AvcEncoderConfig avc;
  HevcEncoderConfig hevc;

  // Same as in WebRTC SVC (https://w3c.github.io/webrtc-svc/)
  DOMString scalabilityMode;

  LatencyMode latencyMode = "quality";

  // MediaStreamTrack Content Hints (https://www.w3.org/TR/mst-content-hint/)
  DOMString contentHint = "";
};