// Copyright 2015 The Chromium Authors. All rights reserved.
// 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-main/getusermedia.html#idl-def-MediaTrackConstraintSet

typedef ConstrainLongRange ConstrainLong;
typedef ConstrainDoubleRange ConstrainDouble;
typedef ConstrainBooleanParameters ConstrainBoolean;
typedef ConstrainDOMStringParameters ConstrainDOMString;
// The spec says that the typedefs should be:
// typedef (long or ConstrainLongRange) ConstrainLong;
// typedef (double or ConstrainDoubleRange) ConstrainDouble;
// typedef (boolean or ConstrainBooleanParameters) ConstrainBoolean;
// typedef (DOMString or sequence<DOMString> or ConstrainDomStringParameters) ConstrainDomString;
// This is blocked on https://crbug.com/524424

dictionary MediaTrackConstraintSet {
    [RuntimeEnabled=MediaConstraints] ConstrainLong width;
    [RuntimeEnabled=MediaConstraints] ConstrainLong height;
    [RuntimeEnabled=MediaConstraints] ConstrainDouble aspectRatio;
    [RuntimeEnabled=MediaConstraints] ConstrainDouble frameRate;
    [RuntimeEnabled=MediaConstraints] ConstrainDOMString facingMode;
    [RuntimeEnabled=MediaConstraints] ConstrainDouble volume;
    [RuntimeEnabled=MediaConstraints] ConstrainLong sampleRate;
    [RuntimeEnabled=MediaConstraints] ConstrainLong sampleSize;
    [RuntimeEnabled=MediaConstraints] ConstrainBoolean echoCancellation;
    [RuntimeEnabled=MediaConstraints] ConstrainDouble latency;
    [RuntimeEnabled=MediaConstraints] ConstrainLong channelCount;
    [RuntimeEnabled=MediaConstraints] ConstrainDOMString deviceId;
    [RuntimeEnabled=MediaConstraints] ConstrainDOMString groupId;
    // The "mandatory" and "_optional" members are retained for conformance
    // with https://www.w3.org/TR/2013/WD-mediacapture-streams-20130903/
    Dictionary mandatory;
    sequence<Dictionary> _optional;
};
