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

Changeset 287073 in webkit


Ignore:
Timestamp:
Dec 15, 2021, 8:23:33 AM (5 years ago)
Author:
youenn@apple.com
Message:

RemoteAudioMediaStreamTrackRendererInternalUnitManager::Unit should only reset once
https://bugs.webkit.org/show_bug.cgi?id=234340

Reviewed by Eric Carlson.

As seen in logs, there are cases where the unit is notified reset several times before it gets stopped and restarted.
This triggers resetting on WebProcess side several times which is unneeded.
Instead, we now only call reset once in a start/stop cycle of the audio unit.
Manually tested.

  • GPUProcess/webrtc/RemoteAudioMediaStreamTrackRendererInternalUnitManager.cpp:

(WebKit::RemoteAudioMediaStreamTrackRendererInternalUnitManager::Unit::notifyReset):
(WebKit::RemoteAudioMediaStreamTrackRendererInternalUnitManager::Unit::start):

Location:
trunk/Source/WebKit
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r287069 r287073  
     12021-12-15  Youenn Fablet  <youenn@apple.com>
     2
     3        RemoteAudioMediaStreamTrackRendererInternalUnitManager::Unit should only reset once
     4        https://bugs.webkit.org/show_bug.cgi?id=234340
     5
     6        Reviewed by Eric Carlson.
     7
     8        As seen in logs, there are cases where the unit is notified reset several times before it gets stopped and restarted.
     9        This triggers resetting on WebProcess side several times which is unneeded.
     10        Instead, we now only call reset once in a start/stop cycle of the audio unit.
     11        Manually tested.
     12
     13        * GPUProcess/webrtc/RemoteAudioMediaStreamTrackRendererInternalUnitManager.cpp:
     14        (WebKit::RemoteAudioMediaStreamTrackRendererInternalUnitManager::Unit::notifyReset):
     15        (WebKit::RemoteAudioMediaStreamTrackRendererInternalUnitManager::Unit::start):
     16
    1172021-12-15  Per Arne Vollan  <pvollan@apple.com>
    218
  • trunk/Source/WebKit/GPUProcess/webrtc/RemoteAudioMediaStreamTrackRendererInternalUnitManager.cpp

    r286650 r287073  
    8989    WebCore::CAAudioStreamDescription m_description;
    9090    bool m_shouldRegisterAsSpeakerSamplesProducer { false };
     91    bool m_canReset { true };
    9192};
    9293
     
    179180void RemoteAudioMediaStreamTrackRendererInternalUnitManager::Unit::notifyReset()
    180181{
     182    if (!m_canReset)
     183        return;
     184
     185    m_canReset = false;
    181186    m_connection->send(Messages::GPUProcessConnection::ResetAudioMediaStreamTrackRendererInternalUnit { m_identifier }, 0);
    182187}
     
    203208    m_generateOffset = 0;
    204209    m_isPlaying = true;
     210    m_canReset = true;
    205211    m_ringBuffer = WebCore::CARingBuffer::adoptStorage(makeUniqueRef<ReadOnlySharedRingBufferStorage>(handle), description, numberOfFrames).moveToUniquePtr();
    206212    m_renderSemaphore = WTFMove(semaphore);
Note: See TracChangeset for help on using the changeset viewer.