MediaStreamDescriptor.h [plain text]
#ifndef MediaStreamDescriptor_h
#define MediaStreamDescriptor_h
#if ENABLE(MEDIA_STREAM)
#include "MediaStreamComponent.h"
#include <wtf/RefCounted.h>
#include <wtf/Vector.h>
namespace WebCore {
class MediaStreamDescriptorOwner {
public:
virtual ~MediaStreamDescriptorOwner() { }
virtual void streamEnded() = 0;
};
class MediaStreamDescriptor : public RefCounted<MediaStreamDescriptor> {
public:
static PassRefPtr<MediaStreamDescriptor> create(const String& label, const MediaStreamSourceVector& audioSources, const MediaStreamSourceVector& videoSources)
{
return adoptRef(new MediaStreamDescriptor(label, audioSources, videoSources));
}
MediaStreamDescriptorOwner* owner() const { return m_owner; }
void setOwner(MediaStreamDescriptorOwner* owner) { m_owner = owner; }
String label() const { return m_label; }
unsigned numberOfAudioComponents() const { return m_audioComponents.size(); }
MediaStreamComponent* audioComponent(unsigned index) const { return m_audioComponents[index].get(); }
unsigned numberOfVideoComponents() const { return m_videoComponents.size(); }
MediaStreamComponent* videoComponent(unsigned index) const { return m_videoComponents[index].get(); }
bool ended() const { return m_ended; }
void setEnded() { m_ended = true; }
private:
MediaStreamDescriptor(const String& label, const MediaStreamSourceVector& audioSources, const MediaStreamSourceVector& videoSources)
: m_owner(0)
, m_label(label)
, m_ended(false)
{
for (size_t i = 0; i < audioSources.size(); i++)
m_audioComponents.append(MediaStreamComponent::create(audioSources[i]));
for (size_t i = 0; i < videoSources.size(); i++)
m_videoComponents.append(MediaStreamComponent::create(videoSources[i]));
}
MediaStreamDescriptorOwner* m_owner;
String m_label;
Vector<RefPtr<MediaStreamComponent> > m_audioComponents;
Vector<RefPtr<MediaStreamComponent> > m_videoComponents;
bool m_ended;
};
typedef Vector<RefPtr<MediaStreamDescriptor> > MediaStreamDescriptorVector;
}
#endif // ENABLE(MEDIA_STREAM)
#endif // MediaStreamDescriptor_h