예제 #1
0
void MediaStreamSource::setEnabled(bool enabled)
{
    if (!enabled) {
        // Don't disable the source unless all observers are disabled.
        for (auto observer = m_observers.begin(); observer != m_observers.end(); ++observer) {
            if ((*observer)->observerIsEnabled())
                return;
        }
    }

    if (m_enabled == enabled)
        return;

    m_enabled = enabled;

    if (m_readyState == Ended)
        return;

    if (!enabled)
        stopProducingData();
    else
        startProducingData();

    for (auto observer = m_observers.begin(); observer != m_observers.end(); ++observer)
        (*observer)->sourceEnabledChanged();
}
void RealtimeMediaSource::stop(Observer* callingObserver)
{
    if (stopped())
        return;

    m_stopped = true;

    for (auto* observer : m_observers) {
        if (observer != callingObserver)
            observer->sourceStopped();
    }

    stopProducingData();
}
예제 #3
0
void MediaStreamSource::setReadyState(ReadyState readyState)
{
    if (m_readyState == Ended || m_readyState == readyState)
        return;

    m_readyState = readyState;
    for (auto observer = m_observers.begin(); observer != m_observers.end(); ++observer)
        (*observer)->sourceReadyStateChanged();

    if (m_readyState == Live) {
        startProducingData();
        return;
    }
    
    // There are no more consumers of this source's data, shut it down as appropriate.
    if (m_readyState == Ended)
        stopProducingData();
}
예제 #4
0
void MediaStreamTrack::stop()
{
    stopProducingData();
}