⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 249688 in webkit


Ignore:
Timestamp:
Sep 9, 2019, 8:19:29 PM (7 years ago)
Author:
Alan Coon
Message:

Cherry-pick r248161. rdar://problem/55183128

[iOS] Directly use RealtimeMediaSourceCenter to compute the media capture state
https://bugs.webkit.org/show_bug.cgi?id=200368
<rdar://problem/53191450>

Reviewed by Eric Carlson.

Instead of registering a MediaStreamTrack as a media producer to compute capture state,
go directly to the sources from the RealtimeMediaSourceCenter.
Do the same when requested to mute capture tracks.

No observable change of behavior.
Covered by manual test on iOS and existing tests.

  • Modules/mediastream/MediaStreamTrack.cpp: (WebCore::MediaStreamTrack::MediaStreamTrack): (WebCore::MediaStreamTrack::~MediaStreamTrack): (WebCore::MediaStreamTrack::mediaState const): (WebCore::sourceCaptureState): (WebCore::MediaStreamTrack::captureState): (WebCore::MediaStreamTrack::muteCapture):
  • Modules/mediastream/MediaStreamTrack.h:
  • dom/Document.cpp: (WebCore::Document::updateIsPlayingMedia): (WebCore::Document::pageMutedStateDidChange):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@248161 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Location:
branches/safari-608-branch/Source/WebCore
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • branches/safari-608-branch/Source/WebCore/ChangeLog

    r249484 r249688  
     12019-09-09  Kocsen Chung  <kocsen_chung@apple.com>
     2
     3        Cherry-pick r248161. rdar://problem/55183128
     4
     5    [iOS] Directly use RealtimeMediaSourceCenter to compute the media capture  state
     6    https://bugs.webkit.org/show_bug.cgi?id=200368
     7    <rdar://problem/53191450>
     8   
     9    Reviewed by Eric Carlson.
     10   
     11    Instead of registering a MediaStreamTrack as a media producer to compute capture state,
     12    go directly to the sources from the RealtimeMediaSourceCenter.
     13    Do the same when requested to mute capture tracks.
     14   
     15    No observable change of behavior.
     16    Covered by manual test on iOS and existing tests.
     17   
     18    * Modules/mediastream/MediaStreamTrack.cpp:
     19    (WebCore::MediaStreamTrack::MediaStreamTrack):
     20    (WebCore::MediaStreamTrack::~MediaStreamTrack):
     21    (WebCore::MediaStreamTrack::mediaState const):
     22    (WebCore::sourceCaptureState):
     23    (WebCore::MediaStreamTrack::captureState):
     24    (WebCore::MediaStreamTrack::muteCapture):
     25    * Modules/mediastream/MediaStreamTrack.h:
     26    * dom/Document.cpp:
     27    (WebCore::Document::updateIsPlayingMedia):
     28    (WebCore::Document::pageMutedStateDidChange):
     29   
     30   
     31    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@248161 268f45cc-cd09-0410-ab3c-d52691b4dbfc
     32
     33    2019-08-02  Youenn Fablet  <youenn@apple.com>
     34
     35            [iOS] Directly use RealtimeMediaSourceCenter to compute the media capture  state
     36            https://bugs.webkit.org/show_bug.cgi?id=200368
     37            <rdar://problem/53191450>
     38
     39            Reviewed by Eric Carlson.
     40
     41            Instead of registering a MediaStreamTrack as a media producer to compute capture state,
     42            go directly to the sources from the RealtimeMediaSourceCenter.
     43            Do the same when requested to mute capture tracks.
     44
     45            No observable change of behavior.
     46            Covered by manual test on iOS and existing tests.
     47
     48            * Modules/mediastream/MediaStreamTrack.cpp:
     49            (WebCore::MediaStreamTrack::MediaStreamTrack):
     50            (WebCore::MediaStreamTrack::~MediaStreamTrack):
     51            (WebCore::MediaStreamTrack::mediaState const):
     52            (WebCore::sourceCaptureState):
     53            (WebCore::MediaStreamTrack::captureState):
     54            (WebCore::MediaStreamTrack::muteCapture):
     55            * Modules/mediastream/MediaStreamTrack.h:
     56            * dom/Document.cpp:
     57            (WebCore::Document::updateIsPlayingMedia):
     58            (WebCore::Document::pageMutedStateDidChange):
     59
    1602019-09-04  Mark Lam  <mark.lam@apple.com>
    261
  • branches/safari-608-branch/Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp

    r247382 r249688  
    4949namespace WebCore {
    5050
     51static MediaProducer::MediaStateFlags sourceCaptureState(RealtimeMediaSource&);
     52
    5153WTF_MAKE_ISO_ALLOCATED_IMPL(MediaStreamTrack);
    5254
     
    7375        if (document->page() && document->page()->mutedState())
    7476            setMuted(true);
     77#if !PLATFORM(IOS_FAMILY)
    7578        document->addAudioProducer(*this);
     79#endif
    7680    }
    7781}
     
    8488        return;
    8589
     90#if !PLATFORM(IOS_FAMILY)
    8691    if (auto document = this->document())
    8792        document->removeAudioProducer(*this);
     93#endif
    8894}
    8995
     
    410416        return IsNotPlaying;
    411417
    412     if (source().type() == RealtimeMediaSource::Type::Audio) {
    413         if (source().interrupted() && !source().muted())
    414             return HasInterruptedAudioCaptureDevice;
    415         if (muted())
    416             return HasMutedAudioCaptureDevice;
    417         if (m_private->isProducingData())
    418             return HasActiveAudioCaptureDevice;
    419     } else {
    420         auto deviceType = source().deviceType();
    421         ASSERT(deviceType == CaptureDevice::DeviceType::Camera || deviceType == CaptureDevice::DeviceType::Screen || deviceType == CaptureDevice::DeviceType::Window);
    422         if (source().interrupted() && !source().muted())
    423             return deviceType == CaptureDevice::DeviceType::Camera ? HasInterruptedVideoCaptureDevice : HasInterruptedDisplayCaptureDevice;
    424         if (muted())
    425             return deviceType == CaptureDevice::DeviceType::Camera ? HasMutedVideoCaptureDevice : HasMutedDisplayCaptureDevice;
    426         if (m_private->isProducingData())
    427             return deviceType == CaptureDevice::DeviceType::Camera ? HasActiveVideoCaptureDevice : HasActiveDisplayCaptureDevice;
    428     }
    429 
    430     return IsNotPlaying;
    431 }
     418    return sourceCaptureState(source());
     419}
     420
     421MediaProducer::MediaStateFlags sourceCaptureState(RealtimeMediaSource& source)
     422{
     423    switch (source.deviceType()) {
     424    case CaptureDevice::DeviceType::Microphone:
     425        if (source.muted())
     426            return MediaProducer::HasMutedAudioCaptureDevice;
     427        if (source.interrupted())
     428            return MediaProducer::HasInterruptedAudioCaptureDevice;
     429        if (source.isProducingData())
     430            return MediaProducer::HasActiveAudioCaptureDevice;
     431        break;
     432    case CaptureDevice::DeviceType::Camera:
     433        if (source.muted())
     434            return MediaProducer::HasMutedVideoCaptureDevice;
     435        if (source.interrupted())
     436            return MediaProducer::HasInterruptedVideoCaptureDevice;
     437        if (source.isProducingData())
     438            return MediaProducer::HasActiveVideoCaptureDevice;
     439        break;
     440    case CaptureDevice::DeviceType::Screen:
     441    case CaptureDevice::DeviceType::Window:
     442        if (source.muted())
     443            return MediaProducer::HasMutedDisplayCaptureDevice;
     444        if (source.interrupted())
     445            return MediaProducer::HasInterruptedDisplayCaptureDevice;
     446        if (source.isProducingData())
     447            return MediaProducer::HasActiveDisplayCaptureDevice;
     448        break;
     449    case CaptureDevice::DeviceType::Unknown:
     450        ASSERT_NOT_REACHED();
     451    }
     452
     453    return MediaProducer::IsNotPlaying;
     454}
     455
     456#if PLATFORM(IOS_FAMILY)
     457MediaProducer::MediaStateFlags MediaStreamTrack::captureState()
     458{
     459    MediaProducer::MediaStateFlags state = MediaProducer::IsNotPlaying;
     460    if (auto* source = RealtimeMediaSourceCenter::singleton().audioCaptureFactory().activeSource())
     461        state |= sourceCaptureState(*source);
     462    if (auto* source = RealtimeMediaSourceCenter::singleton().videoCaptureFactory().activeSource())
     463        state |= sourceCaptureState(*source);
     464    return state;
     465}
     466
     467void MediaStreamTrack::muteCapture()
     468{
     469    if (auto* source = RealtimeMediaSourceCenter::singleton().audioCaptureFactory().activeSource())
     470        source->setMuted(true);
     471    if (auto* source = RealtimeMediaSourceCenter::singleton().videoCaptureFactory().activeSource())
     472        source->setMuted(true);
     473}
     474#endif
    432475
    433476void MediaStreamTrack::trackStarted(MediaStreamTrackPrivate&)
  • branches/safari-608-branch/Source/WebCore/Modules/mediastream/MediaStreamTrack.h

    r247208 r249688  
    6969    virtual ~MediaStreamTrack();
    7070
     71#if PLATFORM(IOS_FAMILY)
     72    static MediaProducer::MediaStateFlags captureState();
     73    static void muteCapture();
     74#endif
     75
    7176    virtual bool isCanvas() const { return false; }
    7277
  • branches/safari-608-branch/Source/WebCore/dom/Document.cpp

    r248136 r249688  
    39853985        state |= audioProducer.mediaState();
    39863986
     3987#if PLATFORM(IOS_FAMILY)
     3988    state |= MediaStreamTrack::captureState();
     3989#endif
     3990
    39873991#if ENABLE(MEDIA_SESSION)
    39883992    if (HTMLMediaElement* sourceElement = HTMLMediaElement::elementWithID(sourceElementID)) {
     
    40264030    for (auto& audioProducer : m_audioProducers)
    40274031        audioProducer.pageMutedStateDidChange();
     4032
     4033#if PLATFORM(IOS_FAMILY)
     4034    MediaStreamTrack::muteCapture();
     4035#endif
    40284036}
    40294037
Note: See TracChangeset for help on using the changeset viewer.