| /* |
| * Copyright (C) 2015-2020 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. |
| * 3. Neither the name of Google Inc. nor the names of its contributors |
| * may be used to endorse or promote products derived from this |
| * software without specific prior written permission. |
| * |
| * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT |
| * OWNER 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. |
| */ |
| |
| #pragma once |
| |
| #if ENABLE(MEDIA_STREAM) |
| |
| #include <wtf/text/WTFString.h> |
| |
| namespace WebCore { |
| |
| enum class MediaConstraintType : uint8_t { |
| Unknown, |
| Width, |
| Height, |
| AspectRatio, |
| FrameRate, |
| FacingMode, |
| Volume, |
| SampleRate, |
| SampleSize, |
| EchoCancellation, |
| DeviceId, |
| GroupId, |
| DisplaySurface, |
| LogicalSurface, |
| }; |
| |
| class RealtimeMediaSourceSupportedConstraints { |
| public: |
| RealtimeMediaSourceSupportedConstraints() |
| { |
| } |
| |
| bool supportsWidth() const { return m_supportsWidth; } |
| void setSupportsWidth(bool value) { m_supportsWidth = value; } |
| |
| bool supportsHeight() const { return m_supportsHeight; } |
| void setSupportsHeight(bool value) { m_supportsHeight = value; } |
| |
| bool supportsAspectRatio() const { return m_supportsAspectRatio; } |
| void setSupportsAspectRatio(bool value) { m_supportsAspectRatio = value; } |
| |
| bool supportsFrameRate() const { return m_supportsFrameRate; } |
| void setSupportsFrameRate(bool value) { m_supportsFrameRate = value; } |
| |
| bool supportsFacingMode() const { return m_supportsFacingMode; } |
| void setSupportsFacingMode(bool value) { m_supportsFacingMode = value; } |
| |
| bool supportsVolume() const { return m_supportsVolume; } |
| void setSupportsVolume(bool value) { m_supportsVolume = value; } |
| |
| bool supportsSampleRate() const { return m_supportsSampleRate; } |
| void setSupportsSampleRate(bool value) { m_supportsSampleRate = value; } |
| |
| bool supportsSampleSize() const { return m_supportsSampleSize; } |
| void setSupportsSampleSize(bool value) { m_supportsSampleSize = value; } |
| |
| bool supportsEchoCancellation() const { return m_supportsEchoCancellation; } |
| void setSupportsEchoCancellation(bool value) { m_supportsEchoCancellation = value; } |
| |
| bool supportsDeviceId() const { return m_supportsDeviceId; } |
| void setSupportsDeviceId(bool value) { m_supportsDeviceId = value; } |
| |
| bool supportsGroupId() const { return m_supportsGroupId; } |
| void setSupportsGroupId(bool value) { m_supportsGroupId = value; } |
| |
| bool supportsDisplaySurface() const { return m_supportsDisplaySurface; } |
| void setSupportsDisplaySurface(bool value) { m_supportsDisplaySurface = value; } |
| |
| bool supportsLogicalSurface() const { return m_supportsLogicalSurface; } |
| void setSupportsLogicalSurface(bool value) { m_supportsLogicalSurface = value; } |
| |
| bool supportsConstraint(MediaConstraintType) const; |
| |
| template<class Encoder> void encode(Encoder&) const; |
| template<class Decoder> static WARN_UNUSED_RETURN bool decode(Decoder&, RealtimeMediaSourceSupportedConstraints&); |
| |
| private: |
| bool m_supportsWidth { false }; |
| bool m_supportsHeight { false }; |
| bool m_supportsAspectRatio { false }; |
| bool m_supportsFrameRate { false }; |
| bool m_supportsFacingMode { false }; |
| bool m_supportsVolume { false }; |
| bool m_supportsSampleRate { false }; |
| bool m_supportsSampleSize { false }; |
| bool m_supportsEchoCancellation { false }; |
| bool m_supportsDeviceId { false }; |
| bool m_supportsGroupId { false }; |
| bool m_supportsDisplaySurface { false }; |
| bool m_supportsLogicalSurface { false }; |
| }; |
| |
| template<class Encoder> |
| void RealtimeMediaSourceSupportedConstraints::encode(Encoder& encoder) const |
| { |
| encoder << m_supportsWidth |
| << m_supportsHeight |
| << m_supportsAspectRatio |
| << m_supportsFrameRate |
| << m_supportsFacingMode |
| << m_supportsVolume |
| << m_supportsSampleRate |
| << m_supportsSampleSize |
| << m_supportsEchoCancellation |
| << m_supportsDeviceId |
| << m_supportsGroupId |
| << m_supportsDisplaySurface |
| << m_supportsLogicalSurface; |
| } |
| |
| template<class Decoder> |
| bool RealtimeMediaSourceSupportedConstraints::decode(Decoder& decoder, RealtimeMediaSourceSupportedConstraints& constraints) |
| { |
| return decoder.decode(constraints.m_supportsWidth) |
| && decoder.decode(constraints.m_supportsHeight) |
| && decoder.decode(constraints.m_supportsAspectRatio) |
| && decoder.decode(constraints.m_supportsFrameRate) |
| && decoder.decode(constraints.m_supportsFacingMode) |
| && decoder.decode(constraints.m_supportsVolume) |
| && decoder.decode(constraints.m_supportsSampleRate) |
| && decoder.decode(constraints.m_supportsSampleSize) |
| && decoder.decode(constraints.m_supportsEchoCancellation) |
| && decoder.decode(constraints.m_supportsDeviceId) |
| && decoder.decode(constraints.m_supportsGroupId) |
| && decoder.decode(constraints.m_supportsDisplaySurface) |
| && decoder.decode(constraints.m_supportsLogicalSurface); |
| } |
| |
| } // namespace WebCore |
| |
| namespace WTF { |
| |
| template<> struct EnumTraits<WebCore::MediaConstraintType> { |
| using values = EnumValues< |
| WebCore::MediaConstraintType, |
| WebCore::MediaConstraintType::Unknown, |
| WebCore::MediaConstraintType::Width, |
| WebCore::MediaConstraintType::Height, |
| WebCore::MediaConstraintType::AspectRatio, |
| WebCore::MediaConstraintType::FrameRate, |
| WebCore::MediaConstraintType::FacingMode, |
| WebCore::MediaConstraintType::Volume, |
| WebCore::MediaConstraintType::SampleRate, |
| WebCore::MediaConstraintType::SampleSize, |
| WebCore::MediaConstraintType::EchoCancellation, |
| WebCore::MediaConstraintType::DeviceId, |
| WebCore::MediaConstraintType::GroupId, |
| WebCore::MediaConstraintType::DisplaySurface, |
| WebCore::MediaConstraintType::LogicalSurface |
| >; |
| }; |
| |
| } // namespace WTF |
| |
| #endif // ENABLE(MEDIA_STREAM) |