chromium/third_party/blink/renderer/modules/mediarecorder/media_recorder.idl

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

// https://w3c.github.io/mediacapture-record/#mediarecorder-api

enum RecordingState { "inactive", "recording", "paused" };

[
    ActiveScriptWrappable,
    Exposed=Window
] interface MediaRecorder : EventTarget {
    [CallWith=ExecutionContext, RaisesException] constructor(MediaStream stream, optional MediaRecorderOptions options = {});
    readonly attribute MediaStream stream;
    [HighEntropy=Direct, MeasureAs=MediaRecorder_MimeType] readonly attribute DOMString mimeType;
    readonly attribute RecordingState state;

    attribute EventHandler onstart;
    attribute EventHandler onstop;
    attribute EventHandler ondataavailable;
    attribute EventHandler onpause;
    attribute EventHandler onresume;
    attribute EventHandler onerror;
    [HighEntropy=Direct, MeasureAs=MediaRecorder_VideoBitsPerSecond] readonly attribute unsigned long videoBitsPerSecond;
    [HighEntropy=Direct, MeasureAs=MediaRecorder_AudioBitsPerSecond] readonly attribute unsigned long audioBitsPerSecond;
    readonly attribute BitrateMode audioBitrateMode;

    [RaisesException, Measure] void start(optional long timeslice);
    [RaisesException] void stop();
    [RaisesException] void pause();
    [RaisesException] void resume();
    [RaisesException] void requestData();

    [CallWith=ExecutionContext] static boolean isTypeSupported(DOMString type);
};