WebMediaStreamDescriptor.cpp [plain text]
#include "config.h"
#if ENABLE(MEDIA_STREAM)
#include <public/WebMediaStreamDescriptor.h>
#include "MediaStreamComponent.h"
#include "MediaStreamDescriptor.h"
#include "MediaStreamSource.h"
#include <public/WebMediaStreamComponent.h>
#include <public/WebMediaStreamSource.h>
#include <public/WebString.h>
#include <wtf/Vector.h>
using namespace WebCore;
namespace WebKit {
WebMediaStreamDescriptor::WebMediaStreamDescriptor(const PassRefPtr<WebCore::MediaStreamDescriptor>& mediaStreamDescriptor)
: m_private(mediaStreamDescriptor)
{
}
WebMediaStreamDescriptor::WebMediaStreamDescriptor(WebCore::MediaStreamDescriptor* mediaStreamDescriptor)
: m_private(mediaStreamDescriptor)
{
}
void WebMediaStreamDescriptor::reset()
{
m_private.reset();
}
WebString WebMediaStreamDescriptor::label() const
{
return m_private->label();
}
void WebMediaStreamDescriptor::sources(WebVector<WebMediaStreamSource>& webSources) const
{
size_t numberOfAudioSources = m_private->numberOfAudioComponents();
size_t numberOfVideoSources = m_private->numberOfVideoComponents();
WebVector<WebMediaStreamSource> result(numberOfAudioSources + numberOfVideoSources);
size_t i = 0;
for (size_t j = 0; j < numberOfAudioSources; ++i, ++j)
result[i] = m_private->audioComponent(j)->source();
for (size_t j = 0; j < numberOfVideoSources; ++i, ++j)
result[i] = m_private->videoComponent(j)->source();
webSources.swap(result);
}
void WebMediaStreamDescriptor::audioSources(WebVector<WebMediaStreamComponent>& webSources) const
{
size_t numberOfSources = m_private->numberOfAudioComponents();
WebVector<WebMediaStreamComponent> result(numberOfSources);
for (size_t i = 0; i < numberOfSources; ++i)
result[i] = m_private->audioComponent(i);
webSources.swap(result);
}
void WebMediaStreamDescriptor::videoSources(WebVector<WebMediaStreamComponent>& webSources) const
{
size_t numberOfSources = m_private->numberOfVideoComponents();
WebVector<WebMediaStreamComponent> result(numberOfSources);
for (size_t i = 0; i < numberOfSources; ++i)
result[i] = m_private->videoComponent(i);
webSources.swap(result);
}
WebMediaStreamDescriptor& WebMediaStreamDescriptor::operator=(const PassRefPtr<WebCore::MediaStreamDescriptor>& mediaStreamDescriptor)
{
m_private = mediaStreamDescriptor;
return *this;
}
WebMediaStreamDescriptor::operator PassRefPtr<WebCore::MediaStreamDescriptor>() const
{
return m_private.get();
}
WebMediaStreamDescriptor::operator WebCore::MediaStreamDescriptor*() const
{
return m_private.get();
}
void WebMediaStreamDescriptor::initialize(const WebString& label, const WebVector<WebMediaStreamSource>& sources)
{
MediaStreamSourceVector audio, video;
for (size_t i = 0; i < sources.size(); ++i) {
MediaStreamSource* curr = sources[i];
if (curr->type() == MediaStreamSource::TypeAudio)
audio.append(curr);
else if (curr->type() == MediaStreamSource::TypeVideo)
video.append(curr);
}
m_private = MediaStreamDescriptor::create(label, audio, video);
}
void WebMediaStreamDescriptor::initialize(const WebString& label, const WebVector<WebMediaStreamSource>& audioSources, const WebVector<WebMediaStreamSource>& videoSources)
{
MediaStreamSourceVector audio, video;
for (size_t i = 0; i < audioSources.size(); ++i) {
MediaStreamSource* curr = audioSources[i];
audio.append(curr);
}
for (size_t i = 0; i < videoSources.size(); ++i) {
MediaStreamSource* curr = videoSources[i];
video.append(curr);
}
m_private = MediaStreamDescriptor::create(label, audio, video);
}
void WebMediaStreamDescriptor::assign(const WebMediaStreamDescriptor& other)
{
m_private = other.m_private;
}
}
#endif // ENABLE(MEDIA_STREAM)