1/* 2 * Copyright (C) 2013 Apple Inc. All rights reserved. 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions 6 * are met: 7 * 1. Redistributions of source code must retain the above copyright 8 * notice, this list of conditions and the following disclaimer. 9 * 2. Redistributions in binary form must reproduce the above copyright 10 * notice, this list of conditions and the following disclaimer in the 11 * documentation and/or other materials provided with the distribution. 12 * 13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY 14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR 17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24 */ 25 26#ifndef MediaStreamSourceStates_h 27#define MediaStreamSourceStates_h 28 29#if ENABLE(MEDIA_STREAM) 30 31#include <wtf/RefCounted.h> 32#include <wtf/Vector.h> 33#include <wtf/text/AtomicString.h> 34 35namespace WebCore { 36 37class MediaStreamSourceStates { 38public: 39 enum SourceType { None, Camera, Microphone }; 40 enum VideoFacingMode { Unknown, User, Environment, Left, Right }; 41 42 MediaStreamSourceStates() 43 : m_sourceType(None) 44 , m_facingMode(Unknown) 45 , m_width(0) 46 , m_height(0) 47 , m_frameRate(0) 48 , m_aspectRatio(0) 49 , m_volume(0) 50 { 51 } 52 53 static const AtomicString& sourceType(MediaStreamSourceStates::SourceType); 54 static const AtomicString& facingMode(MediaStreamSourceStates::VideoFacingMode); 55 56 SourceType sourceType() const { return m_sourceType; } 57 void setSourceType(SourceType type) { m_sourceType = type; } 58 59 const AtomicString& sourceId() const { return m_sourceId; } 60 void setSourceId(const AtomicString& sourceId) { m_sourceId = sourceId; } 61 62 VideoFacingMode facingMode() const { return m_facingMode; } 63 void setFacingMode(VideoFacingMode facingMode) { m_facingMode = facingMode; } 64 65 unsigned long width() const { return m_width; } 66 void setWidth(unsigned long width) { m_width = width; } 67 68 unsigned long height() const { return m_height; } 69 void setHeight(unsigned long height) { m_height = height; } 70 71 float frameRate() const { return m_frameRate; } 72 void setFrameRate(float frameRate) { m_frameRate = frameRate; } 73 74 float aspectRatio() const { return m_aspectRatio; } 75 void setAspectRatio(float aspectRatio) { m_aspectRatio = aspectRatio; } 76 77 unsigned long volume() const { return m_volume; } 78 void setVolume(unsigned long volume) { m_volume = volume; } 79 80private: 81 SourceType m_sourceType; 82 AtomicString m_sourceId; 83 VideoFacingMode m_facingMode; 84 unsigned long m_width; 85 unsigned long m_height; 86 float m_frameRate; 87 float m_aspectRatio; 88 unsigned long m_volume; 89}; 90 91} // namespace WebCore 92 93#endif // MediaStreamSourceStates_h 94 95#endif 96