| // Copyright 2019 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 |
| |
| typedef ([AllowShared] ArrayBuffer or [AllowShared] ArrayBufferView) AllowSharedBufferSource; |
| |
| [ |
| Exposed=(Window,DedicatedWorker), |
| Serializable |
| ] interface VideoFrame { |
| [CallWith=ScriptState, RaisesException, MeasureAs=WebCodecsVideoFrameFromImage] |
| constructor(CanvasImageSource source, optional VideoFrameInit init = {}); |
| |
| [CallWith=ScriptState, RaisesException, MeasureAs=WebCodecsVideoFrameFromBuffer] |
| constructor(AllowSharedBufferSource data, VideoFrameBufferInit init); |
| |
| readonly attribute VideoPixelFormat? format; |
| |
| // Presentation timestamp, in microseconds. |
| readonly attribute long long timestamp; |
| // Presentation duration, in microseconds. |
| readonly attribute unsigned long long? duration; |
| |
| // Dimensions of this frame's pixel data; typically padded to a macroblock |
| // multiple. |
| readonly attribute unsigned long codedWidth; |
| readonly attribute unsigned long codedHeight; |
| |
| // Convenience accessor, origin is always (0, 0). |
| readonly attribute DOMRectReadOnly? codedRect; |
| |
| // Area of this frame's pixel data that is not padding. |
| readonly attribute DOMRectReadOnly? visibleRect; |
| |
| // Rotation to apply when rendering, in degrees clockwise. |
| [RuntimeEnabled=WebCodecsOrientation] |
| readonly attribute unsigned long rotation; |
| |
| // Whether the rendering is flipped horizontally after rotation. |
| [RuntimeEnabled=WebCodecsOrientation] |
| readonly attribute boolean flip; |
| |
| // Display aspect ratio of visible rect, after accounting for rotation. |
| readonly attribute unsigned long displayWidth; |
| readonly attribute unsigned long displayHeight; |
| |
| // Color space of the data produced by copyTo(). |
| readonly attribute VideoColorSpace colorSpace; |
| |
| // The VideoFrameMetadata associated with this frame. Possible members are |
| // recorded in https://www.w3.org/TR/webcodecs-video-frame-metadata-registry/. |
| // By design, all VideoFrameMetadata properties are serializable. |
| [RaisesException, RuntimeEnabled="VideoFrameMetadataBackgroundBlur"] |
| VideoFrameMetadata metadata(); |
| |
| // Returns the minimum size (in bytes) of a buffer that copyTo() could |
| // copy this frame into with the given options. |
| [RaisesException] unsigned long allocationSize( |
| optional VideoFrameCopyToOptions options = {}); |
| |
| // Copy the planes of this frame into |destination| according to |options|. |
| // The format of the data is the same as this frame's |format|. |
| [CallWith=ScriptState, RaisesException] |
| Promise<sequence<PlaneLayout>> copyTo( |
| AllowSharedBufferSource destination, |
| optional VideoFrameCopyToOptions options = {}); |
| |
| // Creates a copy of this VideoFrame, which needs to be independently closed. |
| [RaisesException] VideoFrame clone(); |
| |
| void close(); |
| }; |