RESOLVED FIXED 174494
Report CoreAudioCaptureSource failure in case shared unit stops to work properly
https://bugs.webkit.org/show_bug.cgi?id=174494
Summary Report CoreAudioCaptureSource failure in case shared unit stops to work properly
youenn fablet
Reported 2017-07-13 22:43:25 PDT
CoreAudioCaptureSource sometimes fails working. The capture callback is not called. Being able to report that to the web app may be useful.
Attachments
Patch (9.74 KB, patch)
2017-07-13 22:54 PDT, youenn fablet
no flags
Patch (9.97 KB, patch)
2017-07-14 09:03 PDT, youenn fablet
no flags
Patch (9.97 KB, patch)
2017-07-14 09:13 PDT, youenn fablet
no flags
youenn fablet
Comment 1 2017-07-13 22:54:58 PDT
Radar WebKit Bug Importer
Comment 2 2017-07-13 22:55:43 PDT
youenn fablet
Comment 3 2017-07-13 22:56:59 PDT
Patch allows triggering an owned event on a capture audio track that fails. On such case, the web application will be able to react by making another call to getUserMedia which will create a new shared unit without any user prompt. Then, the web app can use RTCPeerConnection.replaceTrack to send the audio content without any renegotiation.
youenn fablet
Comment 4 2017-07-13 22:56:59 PDT
Patch allows triggering an owned event on a capture audio track that fails. On such case, the web application will be able to react by making another call to getUserMedia which will create a new shared unit without any user prompt. Then, the web app can use RTCPeerConnection.replaceTrack to send the audio content without any renegotiation.
Eric Carlson
Comment 5 2017-07-14 05:48:00 PDT
Comment on attachment 315403 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=315403&action=review > Source/WebCore/platform/mediastream/RealtimeMediaSource.cpp:192 > + m_didCaptureFailed = true; Nit: "did capture failed" isn't right so maybe "m_captureFailed" or "m_captureDidFail"? > Source/WebCore/platform/mediastream/RealtimeMediaSource.h:146 > + bool didCaptureFailed() const { return m_didCaptureFailed; } Ditto.
Eric Carlson
Comment 6 2017-07-14 08:20:20 PDT
Comment on attachment 315403 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=315403&action=review > Source/WebCore/platform/mediastream/mac/CoreAudioCaptureSource.cpp:600 > + m_verifyCapturingTimer.startRepeating(1_s); Why one second, this seems really short? FWIW, it looks like Chrome checks every five seconds and ends the track after 12 seconds without a callback: https://codereview.chromium.org/2899413004/diff/40001/media/audio/audio_input_device.cc
youenn fablet
Comment 7 2017-07-14 08:55:43 PDT
(In reply to Eric Carlson from comment #6) > Comment on attachment 315403 [details] > Patch > > View in context: > https://bugs.webkit.org/attachment.cgi?id=315403&action=review > > > Source/WebCore/platform/mediastream/mac/CoreAudioCaptureSource.cpp:600 > > + m_verifyCapturingTimer.startRepeating(1_s); > > Why one second, this seems really short? FWIW, it looks like Chrome checks > every five seconds and ends the track after 12 seconds without a callback: > https://codereview.chromium.org/2899413004/diff/40001/media/audio/ > audio_input_device.cc 1_s might be too short indeed as audio start-up might be long. I'll go with 5 seconds even if 5s without audio is quite long. We could also start with something like 10s after start/resume and lower it to something like 2 seconds after that.
youenn fablet
Comment 8 2017-07-14 09:03:44 PDT
youenn fablet
Comment 9 2017-07-14 09:04:08 PDT
(In reply to youenn fablet from comment #8) > Created attachment 315425 [details] > Patch Went with the 10 seconds then 2 seconds approach.
youenn fablet
Comment 10 2017-07-14 09:13:20 PDT
WebKit Commit Bot
Comment 11 2017-07-14 10:44:07 PDT
Comment on attachment 315427 [details] Patch Clearing flags on attachment: 315427 Committed r219511: <http://trac.webkit.org/changeset/219511>
WebKit Commit Bot
Comment 12 2017-07-14 10:44:09 PDT
All reviewed patches have been landed. Closing bug.
Note You need to log in before you can comment on or make changes to this bug.