/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this file, * You can obtain one at http://mozilla.org/MPL/2.0/. * * The origin of this IDL file is * https://wicg.github.io/media-capabilities/ * * Copyright © 2018 the Contributors to the Media Capabilities Specification */ dictionary MediaConfiguration { VideoConfiguration video; AudioConfiguration audio; }; dictionary MediaDecodingConfiguration : MediaConfiguration { required MediaDecodingType type; }; dictionary MediaEncodingConfiguration : MediaConfiguration { required MediaEncodingType type; }; enum MediaDecodingType { "file", "media-source", }; enum MediaEncodingType { "record", "transmission" }; // all members are specified as required in the spec. // We enforce that requirement in the MediaCapabilities code instead // See https://github.com/heycam/webidl/issues/76 dictionary VideoConfiguration { DOMString contentType; unsigned long width; unsigned long height; unsigned long long bitrate; DOMString framerate; }; // contentType member is specified as required in the spec. // We enforce that requirement in the MediaCapabilities code instead // See https://github.com/heycam/webidl/issues/76 dictionary AudioConfiguration { DOMString contentType; DOMString channels; unsigned long long bitrate; unsigned long samplerate; }; [Exposed=(Window, Worker), Func="mozilla::dom::MediaCapabilities::Enabled", HeaderFile="mozilla/dom/MediaCapabilities.h"] interface MediaCapabilitiesInfo { readonly attribute boolean supported; readonly attribute boolean smooth; readonly attribute boolean powerEfficient; }; [Exposed=(Window, Worker), Func="mozilla::dom::MediaCapabilities::Enabled"] interface MediaCapabilities { [NewObject] Promise decodingInfo(MediaDecodingConfiguration configuration); [NewObject] Promise encodingInfo(MediaEncodingConfiguration configuration); };