MediaStream::MediaStream(ExecutionContext* context, const MediaStreamTrackVector& audioTracks, const MediaStreamTrackVector& videoTracks) : m_scheduledEventTimer(this, &MediaStream::scheduledEventTimerFired), m_executionContext(context) { MediaStreamComponentVector audioComponents; MediaStreamComponentVector videoComponents; MediaStreamTrackVector::const_iterator iter; for (iter = audioTracks.begin(); iter != audioTracks.end(); ++iter) { (*iter)->registerMediaStream(this); audioComponents.append((*iter)->component()); } for (iter = videoTracks.begin(); iter != videoTracks.end(); ++iter) { (*iter)->registerMediaStream(this); videoComponents.append((*iter)->component()); } m_descriptor = MediaStreamDescriptor::create(audioComponents, videoComponents); m_descriptor->setClient(this); MediaStreamCenter::instance().didCreateMediaStream(m_descriptor); m_audioTracks = audioTracks; m_videoTracks = videoTracks; if (emptyOrOnlyEndedTracks()) { m_descriptor->setActive(false); } }
MediaStreamDescriptor::MediaStreamDescriptor(const String& id, const MediaStreamComponentVector& audioComponents, const MediaStreamComponentVector& videoComponents) : m_client(nullptr) , m_id(id) , m_active(true) , m_ended(false) { ASSERT(m_id.length()); for (MediaStreamComponentVector::const_iterator iter = audioComponents.begin(); iter != audioComponents.end(); ++iter) m_audioComponents.append((*iter)); for (MediaStreamComponentVector::const_iterator iter = videoComponents.begin(); iter != videoComponents.end(); ++iter) m_videoComponents.append((*iter)); }
MediaStreamDescriptor::MediaStreamDescriptor(const String& id, const MediaStreamComponentVector& audioComponents, const MediaStreamComponentVector& videoComponents) : m_client(0) , m_id(id) , m_ended(false) { ASSERT(m_id.length()); for (MediaStreamComponentVector::const_iterator iter = audioComponents.begin(); iter != audioComponents.end(); ++iter) { (*iter)->setStream(this); m_audioComponents.append((*iter)); } for (MediaStreamComponentVector::const_iterator iter = videoComponents.begin(); iter != videoComponents.end(); ++iter) { (*iter)->setStream(this); m_videoComponents.append((*iter)); } }