2
* Copyright (C) 2011 Google Inc. All rights reserved.
4
* Redistribution and use in source and binary forms, with or without
5
* modification, are permitted provided that the following conditions are
8
* * Redistributions of source code must retain the above copyright
9
* notice, this list of conditions and the following disclaimer.
10
* * Redistributions in binary form must reproduce the above
11
* copyright notice, this list of conditions and the following disclaimer
12
* in the documentation and/or other materials provided with the
14
* * Neither the name of Google Inc. nor the names of its
15
* contributors may be used to endorse or promote products derived from
16
* this software without specific prior written permission.
18
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33
#if ENABLE(MEDIA_STREAM)
35
#include <public/WebMediaStreamDescriptor.h>
37
#include "MediaStreamComponent.h"
38
#include "MediaStreamDescriptor.h"
39
#include "MediaStreamSource.h"
40
#include <public/WebMediaStreamComponent.h>
41
#include <public/WebMediaStreamSource.h>
42
#include <public/WebString.h>
43
#include <wtf/OwnPtr.h>
44
#include <wtf/PassOwnPtr.h>
45
#include <wtf/Vector.h>
47
using namespace WebCore;
51
WebMediaStreamDescriptor::WebMediaStreamDescriptor(const PassRefPtr<WebCore::MediaStreamDescriptor>& mediaStreamDescriptor)
52
: m_private(mediaStreamDescriptor)
56
WebMediaStreamDescriptor::WebMediaStreamDescriptor(WebCore::MediaStreamDescriptor* mediaStreamDescriptor)
57
: m_private(mediaStreamDescriptor)
61
void WebMediaStreamDescriptor::reset()
66
WebString WebMediaStreamDescriptor::label() const
68
return m_private->label();
71
class ExtraDataContainer : public WebCore::MediaStreamDescriptor::ExtraData {
73
ExtraDataContainer(WebMediaStreamDescriptor::ExtraData* extraData) : m_extraData(WTF::adoptPtr(extraData)) { }
75
WebMediaStreamDescriptor::ExtraData* extraData() { return m_extraData.get(); }
78
OwnPtr<WebMediaStreamDescriptor::ExtraData> m_extraData;
81
WebMediaStreamDescriptor::ExtraData* WebMediaStreamDescriptor::extraData() const
83
RefPtr<MediaStreamDescriptor::ExtraData> data = m_private->extraData();
86
return static_cast<ExtraDataContainer*>(data.get())->extraData();
89
void WebMediaStreamDescriptor::setExtraData(ExtraData* extraData)
91
m_private->setExtraData(adoptRef(new ExtraDataContainer(extraData)));
94
void WebMediaStreamDescriptor::audioSources(WebVector<WebMediaStreamComponent>& webSources) const
96
size_t numberOfSources = m_private->numberOfAudioComponents();
97
WebVector<WebMediaStreamComponent> result(numberOfSources);
98
for (size_t i = 0; i < numberOfSources; ++i)
99
result[i] = m_private->audioComponent(i);
100
webSources.swap(result);
103
void WebMediaStreamDescriptor::videoSources(WebVector<WebMediaStreamComponent>& webSources) const
105
size_t numberOfSources = m_private->numberOfVideoComponents();
106
WebVector<WebMediaStreamComponent> result(numberOfSources);
107
for (size_t i = 0; i < numberOfSources; ++i)
108
result[i] = m_private->videoComponent(i);
109
webSources.swap(result);
112
WebMediaStreamDescriptor& WebMediaStreamDescriptor::operator=(const PassRefPtr<WebCore::MediaStreamDescriptor>& mediaStreamDescriptor)
114
m_private = mediaStreamDescriptor;
118
WebMediaStreamDescriptor::operator PassRefPtr<WebCore::MediaStreamDescriptor>() const
120
return m_private.get();
123
WebMediaStreamDescriptor::operator WebCore::MediaStreamDescriptor*() const
125
return m_private.get();
128
void WebMediaStreamDescriptor::initialize(const WebString& label, const WebVector<WebMediaStreamSource>& audioSources, const WebVector<WebMediaStreamSource>& videoSources)
130
MediaStreamSourceVector audio, video;
131
for (size_t i = 0; i < audioSources.size(); ++i) {
132
MediaStreamSource* curr = audioSources[i];
135
for (size_t i = 0; i < videoSources.size(); ++i) {
136
MediaStreamSource* curr = videoSources[i];
139
m_private = MediaStreamDescriptor::create(label, audio, video);
142
void WebMediaStreamDescriptor::assign(const WebMediaStreamDescriptor& other)
144
m_private = other.m_private;
147
} // namespace WebKit
149
#endif // ENABLE(MEDIA_STREAM)