summaryrefslogtreecommitdiff
path: root/Source/WebCore/Modules/mediastream/MediaTrackConstraints.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebCore/Modules/mediastream/MediaTrackConstraints.h')
-rw-r--r--Source/WebCore/Modules/mediastream/MediaTrackConstraints.h100
1 files changed, 63 insertions, 37 deletions
diff --git a/Source/WebCore/Modules/mediastream/MediaTrackConstraints.h b/Source/WebCore/Modules/mediastream/MediaTrackConstraints.h
index 95a8ccaff..3bccdaea0 100644
--- a/Source/WebCore/Modules/mediastream/MediaTrackConstraints.h
+++ b/Source/WebCore/Modules/mediastream/MediaTrackConstraints.h
@@ -1,60 +1,86 @@
/*
- * Copyright (C) 2013 Apple Inc. All rights reserved.
+ * Copyright (C) 2016 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE, INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
*
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-#ifndef MediaTrackConstraints_h
-#define MediaTrackConstraints_h
+#pragma once
#if ENABLE(MEDIA_STREAM)
-#include "MediaConstraintsImpl.h"
-#include "ScriptWrappable.h"
-#include <wtf/RefCounted.h>
+#include "DoubleRange.h"
+#include "LongRange.h"
+#include <wtf/Variant.h>
+#include <wtf/Vector.h>
+#include <wtf/text/WTFString.h>
namespace WebCore {
-class MediaTrackConstraint;
-class MediaTrackConstraintSet;
+class MediaConstraintsImpl;
-class MediaTrackConstraints : public RefCounted<MediaTrackConstraints>, public ScriptWrappable {
-public:
- virtual ~MediaTrackConstraints() { }
+struct ConstrainBooleanParameters {
+ std::optional<bool> exact;
+ std::optional<bool> ideal;
+};
- static RefPtr<MediaTrackConstraints> create(PassRefPtr<MediaConstraintsImpl>);
+struct ConstrainDOMStringParameters {
+ std::optional<Variant<String, Vector<String>>> exact;
+ std::optional<Variant<String, Vector<String>>> ideal;
+};
+
+struct ConstrainDoubleRange : DoubleRange {
+ std::optional<double> exact;
+ std::optional<double> ideal;
+};
- Vector<PassRefPtr<MediaTrackConstraint>> optional(bool) const;
- RefPtr<MediaTrackConstraintSet> mandatory(bool) const;
+struct ConstrainLongRange : LongRange {
+ std::optional<int> exact;
+ std::optional<int> ideal;
+};
+
+using ConstrainBoolean = Variant<bool, ConstrainBooleanParameters>;
+using ConstrainDOMString = Variant<String, Vector<String>, ConstrainDOMStringParameters>;
+using ConstrainDouble = Variant<double, ConstrainDoubleRange>;
+using ConstrainLong = Variant<int, ConstrainLongRange>;
+
+struct MediaTrackConstraintSet {
+ std::optional<ConstrainLong> width;
+ std::optional<ConstrainLong> height;
+ std::optional<ConstrainDouble> aspectRatio;
+ std::optional<ConstrainDouble> frameRate;
+ std::optional<ConstrainDOMString> facingMode;
+ std::optional<ConstrainDouble> volume;
+ std::optional<ConstrainLong> sampleRate;
+ std::optional<ConstrainLong> sampleSize;
+ std::optional<ConstrainBoolean> echoCancellation;
+ std::optional<ConstrainDOMString> deviceId;
+ std::optional<ConstrainDOMString> groupId;
+};
-private:
- explicit MediaTrackConstraints(PassRefPtr<MediaConstraintsImpl>);
-
- RefPtr<MediaConstraintsImpl> m_constraints;
+struct MediaTrackConstraints : MediaTrackConstraintSet {
+ std::optional<Vector<MediaTrackConstraintSet>> advanced;
};
-} // namespace WebCore
+Ref<MediaConstraintsImpl> createMediaConstraintsImpl(const MediaTrackConstraints&);
-#endif // MediaTrackConstraints_h
+}
#endif