RESOLVED FIXED Bug 206582
[Cocoa] Use AVAssetWriterDelegate to implement MediaRecorder
https://bugs.webkit.org/show_bug.cgi?id=206582
Summary [Cocoa] Use AVAssetWriterDelegate to implement MediaRecorder
youenn fablet
Reported 2020-01-22 08:10:31 PST
[Cocoa] Use AVAssetWriterDelegate to implement MediaRecorder
Attachments
WIP (80.21 KB, patch)
2020-01-22 08:34 PST, youenn fablet
no flags
WIP (97.22 KB, patch)
2020-01-22 09:15 PST, youenn fablet
no flags
Rebasing (96.24 KB, patch)
2020-01-22 10:01 PST, youenn fablet
no flags
Patch (95.31 KB, patch)
2020-01-22 11:47 PST, youenn fablet
no flags
Patch (122.64 KB, patch)
2020-01-24 02:00 PST, youenn fablet
no flags
Patch for landing (129.08 KB, patch)
2020-01-27 05:03 PST, youenn fablet
no flags
Patch (136.97 KB, patch)
2020-01-27 09:18 PST, youenn fablet
no flags
Patch for landing (135.78 KB, patch)
2020-01-27 11:11 PST, youenn fablet
no flags
Patch for landing (134.16 KB, patch)
2020-01-28 08:00 PST, youenn fablet
no flags
Fix include path and commented out code (134.02 KB, patch)
2020-01-30 05:20 PST, youenn fablet
no flags
Patch (135.04 KB, patch)
2020-02-03 05:32 PST, youenn fablet
no flags
Patch (148.68 KB, patch)
2020-02-03 09:38 PST, youenn fablet
no flags
Patch (146.92 KB, patch)
2020-02-04 01:39 PST, youenn fablet
no flags
Patch (146.98 KB, patch)
2020-02-04 01:54 PST, youenn fablet
no flags
Patch (137.71 KB, patch)
2020-02-04 05:18 PST, youenn fablet
no flags
Patch (142.07 KB, patch)
2020-02-05 06:47 PST, youenn fablet
no flags
Patch (142.06 KB, patch)
2020-02-05 23:21 PST, youenn fablet
no flags
Patch (142.04 KB, patch)
2020-02-06 23:14 PST, youenn fablet
no flags
Patch (141.73 KB, patch)
2020-06-05 05:19 PDT, youenn fablet
no flags
Build fix (1.70 KB, patch)
2020-06-05 09:14 PDT, youenn fablet
no flags
A follow-up patch to fix a build failure (1.70 KB, patch)
2020-06-05 11:50 PDT, Peng Liu
youennf: review+
ews-feeder: commit-queue-
One more reserveCapacity (141.89 KB, patch)
2020-06-07 23:22 PDT, youenn fablet
no flags
Rebasing (141.81 KB, patch)
2020-06-08 02:41 PDT, youenn fablet
no flags
youenn fablet
Comment 1 2020-01-22 08:34:03 PST
youenn fablet
Comment 2 2020-01-22 09:15:41 PST
Eric Carlson
Comment 3 2020-01-22 09:17:14 PST
Comment on attachment 388423 [details] WIP View in context: https://bugs.webkit.org/attachment.cgi?id=388423&action=review At some point it would be nice to have VideoSampleBufferCompressor and AudioSampleBufferCompressor as C++ classes so they can be reused more easily. > Source/WebCore/platform/mediarecorder/cocoa/AudioSampleBufferCompressor.mm:90 > + m_serialDispatchQueue = dispatch_queue_create([@"com.apple.WebAudioSampleBufferCompressor" UTF8String], DISPATCH_QUEUE_SERIAL); Nit: no need to round trip through an NSString, a char* should work. > Source/WebCore/platform/mediarecorder/cocoa/AudioSampleBufferCompressor.mm:112 > + auto error = CMBufferQueueMarkEndOfData(m_outputBufferQueue.get()); This should be added to CoreMediaSoftLink > Source/WebCore/platform/mediarecorder/cocoa/AudioSampleBufferCompressor.mm:127 > + const auto *audioFormatListItem = CMAudioFormatDescriptionGetRichestDecodableFormat(formatDescription); Ditto > Source/WebCore/platform/mediarecorder/cocoa/AudioSampleBufferCompressor.mm:134 > + if (auto error = AudioFormatGetProperty(kAudioFormatProperty_FormatInfo, 0, NULL, &size, &m_destinationFormat)) { This should be soft linked, maybe create a new AudioToolboxSoftLink file? > Source/WebCore/platform/mediarecorder/cocoa/AudioSampleBufferCompressor.mm:140 > + if (auto error = AudioConverterNew(&m_sourceFormat, &m_destinationFormat, &converter)) { Ditto > Source/WebCore/platform/mediarecorder/cocoa/AudioSampleBufferCompressor.mm:147 > + const void *cookie = CMAudioFormatDescriptionGetMagicCookie(formatDescription, &cookieSize); This should be added to CoreMediaSoftLink > Source/WebCore/platform/mediarecorder/cocoa/AudioSampleBufferCompressor.mm:149 > + if (auto error = AudioConverterSetProperty(m_converter.get(), kAudioConverterDecompressionMagicCookie, (UInt32)cookieSize, cookie)) { AudioToolboxSoftLink > Source/WebCore/platform/mediarecorder/cocoa/AudioSampleBufferCompressor.mm:156 > + if (auto error = AudioConverterGetProperty(m_converter.get(), kAudioConverterCurrentInputStreamDescription, &size, &m_sourceFormat)) { Ditto. > Source/WebCore/platform/mediarecorder/cocoa/AudioSampleBufferCompressor.mm:177 > + UInt32 outputBitRate = 64000; > + if (m_destinationFormat.mSampleRate >= 44100) > + outputBitRate = 192000; > + else if (m_destinationFormat.mSampleRate < 22000) > + outputBitRate = 32000; Named constants might help readers understand the values. > Source/WebCore/platform/mediarecorder/cocoa/AudioSampleBufferCompressor.mm:180 > + if (auto error = AudioConverterSetProperty(m_converter.get(), kAudioConverterEncodeBitRate, size, &outputBitRate)) { AudioToolboxSoftLink > Source/WebCore/platform/mediarecorder/cocoa/AudioSampleBufferCompressor.mm:197 > + m_sourceBuffer.reserveCapacity([self computeBufferSizeForAudioFormat:m_sourceFormat maxOutputPacketSize:0 duration:0.1]); > + m_destinationBuffer.reserveCapacity([self computeBufferSizeForAudioFormat:m_destinationFormat maxOutputPacketSize:m_maxOutputPacketSize duration:0.1]); Named constants would be good here too (is this LOW_WATER_TIME_IN_SECOND?) > Source/WebCore/platform/mediarecorder/cocoa/AudioSampleBufferCompressor.mm:386 > + while (0 < numBytesToCopy) { This would probably be better as "numBytesToCopy > 0" > Source/WebCore/platform/mediarecorder/cocoa/AudioSampleBufferCompressor.mm:459 > + // We assume that the source format is PCM, which is not VBR, but CBR. > + // So, there is not packet descriptions describing the layout of each packet. Should we ASSERT this assumption? > Source/WebCore/platform/mediarecorder/cocoa/AudioSampleBufferCompressor.mm:482 > +- (CMSampleBufferRef)pickOutputSampleBuffer "getOutputSampleBuffer" would be a better match for the typical WebKit naming style. > Source/WebCore/platform/mediarecorder/cocoa/VideoSampleBufferCompressor.mm:55 > + auto error = CMBufferQueueCreate(kCFAllocatorDefault, 0, CMBufferQueueGetCallbacksForUnsortedSampleBuffers(), &m_outputBufferQueue); CoreMediaSoftLink > Source/WebCore/platform/mediarecorder/cocoa/VideoSampleBufferCompressor.mm:84 > + auto error = VTCompressionSessionCompleteFrames(m_vtSession.get(), kCMTimeInvalid); This should be soft linked, maybe add a VTCompressionSessionSoftLink? > Source/WebCore/platform/mediarecorder/cocoa/VideoSampleBufferCompressor.mm:87 > + error = CMBufferQueueMarkEndOfData(m_outputBufferQueue); CoreMediaSoftLink > Source/WebCore/platform/mediarecorder/cocoa/VideoSampleBufferCompressor.mm:112 > + auto error = VTCompressionSessionCreate(kCFAllocatorDefault, dimensions.width, dimensions.height, m_outputCodecType, (__bridge CFDictionaryRef)encoderSpecifications, NULL, NULL, videoCompressionCallback, (__bridge void *)self, &vtSession); VTCompressionSessionSoftLink > Source/WebCore/platform/mediarecorder/cocoa/VideoSampleBufferCompressor.mm:126 > + error = VTSessionSetProperty(m_vtSession.get(), kVTCompressionPropertyKey_RealTime, kCFBooleanTrue); > + RELEASE_LOG_ERROR_IF(error, MediaStream, "WebVideoSampleBufferCompressor VTSessionSetProperty kVTCompressionPropertyKey_RealTime failed with %d", error); > + error = VTSessionSetProperty(m_vtSession.get(), kVTCompressionPropertyKey_MaxKeyFrameIntervalDuration, (__bridge CFTypeRef)@(m_maxKeyFrameIntervalDuration)); > + RELEASE_LOG_ERROR_IF(error, MediaStream, "WebVideoSampleBufferCompressor VTSessionSetProperty kVTCompressionPropertyKey_MaxKeyFrameIntervalDuration failed with %d", error); > + error = VTSessionSetProperty(m_vtSession.get(), kVTCompressionPropertyKey_ExpectedFrameRate, (__bridge CFTypeRef)@(m_expectedFrameRate)); > + RELEASE_LOG_ERROR_IF(error, MediaStream, "WebVideoSampleBufferCompressor VTSessionSetProperty kVTCompressionPropertyKey_ExpectedFrameRate failed with %d", error); > + > + error = VTCompressionSessionPrepareToEncodeFrames(m_vtSession.get()); Ditto > Source/WebCore/platform/mediarecorder/cocoa/VideoSampleBufferCompressor.mm:142 > + auto error = VTCompressionSessionEncodeFrame(m_vtSession.get(), imageBuffer, presentationTimeStamp, duration, NULL, (__bridge void *)self, NULL); Ditto.
youenn fablet
Comment 4 2020-01-22 10:01:34 PST
Created attachment 388434 [details] Rebasing
youenn fablet
Comment 5 2020-01-22 11:47:07 PST
youenn fablet
Comment 6 2020-01-24 02:00:42 PST
Eric Carlson
Comment 7 2020-01-24 10:24:30 PST
Comment on attachment 388661 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=388661&action=review > Source/WebCore/platform/mediarecorder/cocoa/AudioSampleBufferCompressor.mm:124 > + const void *cookie = CMAudioFormatDescriptionGetMagicCookie(formatDescription, &cookieSize); This should be added to CoreMediaSoftLink. > Source/WebCore/platform/mediarecorder/cocoa/AudioSampleBufferCompressor.mm:273 > + if (auto error = CMBlockBufferReplaceDataBytes(data, buffer.get(), 0, dataSize)) { Ditto > Source/WebCore/platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.mm:281 > + if (![m_videoAssetWriterInput isReadyForMoreMediaData]) > + [m_writer flush]; Will the AssetWriter always be ready for more media data after flushing the writer?
youenn fablet
Comment 8 2020-01-27 05:03:03 PST
Created attachment 388847 [details] Patch for landing
youenn fablet
Comment 9 2020-01-27 05:05:45 PST
(In reply to Eric Carlson from comment #7) > Comment on attachment 388661 [details] > Patch > > View in context: > https://bugs.webkit.org/attachment.cgi?id=388661&action=review > > > Source/WebCore/platform/mediarecorder/cocoa/AudioSampleBufferCompressor.mm:124 > > + const void *cookie = CMAudioFormatDescriptionGetMagicCookie(formatDescription, &cookieSize); > > This should be added to CoreMediaSoftLink. Done > > Source/WebCore/platform/mediarecorder/cocoa/AudioSampleBufferCompressor.mm:273 > > + if (auto error = CMBlockBufferReplaceDataBytes(data, buffer.get(), 0, dataSize)) { > > Ditto Done > > Source/WebCore/platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.mm:281 > > + if (![m_videoAssetWriterInput isReadyForMoreMediaData]) > > + [m_writer flush]; > > Will the AssetWriter always be ready for more media data after flushing the > writer? This works as per my testing but I do not see any guarantee for that. I guess the other approach is to use requestMediaDataWhenReadyOnQueue.
youenn fablet
Comment 10 2020-01-27 05:21:05 PST
> > Will the AssetWriter always be ready for more media data after flushing the > > writer? > > This works as per my testing but I do not see any guarantee for that. > I guess the other approach is to use requestMediaDataWhenReadyOnQueue. Actually, no this does not work, let's just stop pushing samples when not being ready for now.
youenn fablet
Comment 11 2020-01-27 09:18:58 PST
youenn fablet
Comment 12 2020-01-27 11:11:50 PST
Created attachment 388875 [details] Patch for landing
youenn fablet
Comment 13 2020-01-28 08:00:43 PST
Created attachment 388994 [details] Patch for landing
WebKit Commit Bot
Comment 14 2020-01-29 02:02:44 PST
Comment on attachment 388994 [details] Patch for landing Clearing flags on attachment: 388994 Committed r255345: <https://trac.webkit.org/changeset/255345>
WebKit Commit Bot
Comment 15 2020-01-29 02:02:46 PST
All reviewed patches have been landed. Closing bug.
Radar WebKit Bug Importer
Comment 16 2020-01-29 02:03:16 PST
zalan
Comment 17 2020-01-29 07:52:45 PST
Any particular reason to land commented out code?
youenn fablet
Comment 18 2020-01-29 07:56:28 PST
(In reply to zalan from comment #17) > Any particular reason to land commented out code? Which code are you referring to?
zalan
Comment 19 2020-01-29 07:57:32 PST
(In reply to youenn fablet from comment #18) > (In reply to zalan from comment #17) > > Any particular reason to land commented out code? > > Which code are you referring to? /* auto block = makeBlockPtr([this, weakThis = makeWeakPtr(this), completionHandler = WTFMove(completionHandler)]() mutable { if (weakThis) { appendEndsPreviousSampleDurationMarker(m_videoAssetWriterInput.get(), m_lastVideoPresentationTime, m_lastVideoDecodingTime); [m_videoAssetWriterInput markAsFinished]; } completionHandler(); }); [m_videoAssetWriterInput requestMediaDataWhenReadyOnQueue:dispatch_get_main_queue() usingBlock:block.get()]; */
youenn fablet
Comment 20 2020-01-29 07:59:42 PST
Oh right, should fix that.
WebKit Commit Bot
Comment 21 2020-01-29 08:03:07 PST
Re-opened since this is blocked by bug 206933
youenn fablet
Comment 22 2020-01-30 05:20:41 PST
Created attachment 389240 [details] Fix include path and commented out code
WebKit Commit Bot
Comment 23 2020-01-30 06:18:41 PST
The commit-queue encountered the following flaky tests while processing attachment 389240 [details]: editing/spelling/spellcheck-attribute.html bug 206178 (authors: g.czajkowski@samsung.com, mark.lam@apple.com, and rniwa@webkit.org) The commit-queue is continuing to process your patch.
WebKit Commit Bot
Comment 24 2020-01-30 06:19:13 PST
The commit-queue encountered the following flaky tests while processing attachment 389240 [details]: editing/spelling/spellcheck-async-remove-frame.html bug 158401 (authors: morrita@google.com, rniwa@webkit.org, and tony@chromium.org) imported/w3c/web-platform-tests/IndexedDB/fire-success-event-exception.html bug 206554 (authors: shvaikalesh@gmail.com and youennf@gmail.com) The commit-queue is continuing to process your patch.
WebKit Commit Bot
Comment 25 2020-01-30 06:51:53 PST
The commit-queue encountered the following flaky tests while processing attachment 389240 [details]: editing/spelling/spellcheck-attribute.html bug 206178 (authors: g.czajkowski@samsung.com, mark.lam@apple.com, and rniwa@webkit.org) The commit-queue is continuing to process your patch.
WebKit Commit Bot
Comment 26 2020-01-30 06:52:35 PST
Comment on attachment 389240 [details] Fix include path and commented out code Clearing flags on attachment: 389240 Committed r255424: <https://trac.webkit.org/changeset/255424>
WebKit Commit Bot
Comment 27 2020-01-30 06:52:37 PST
All reviewed patches have been landed. Closing bug.
Ryan Haddad
Comment 28 2020-01-30 10:57:51 PST
Reverted r255424 for reason: Breaks internal builds. Committed r255439: <https://trac.webkit.org/changeset/255439>
youenn fablet
Comment 29 2020-02-03 05:32:39 PST
youenn fablet
Comment 30 2020-02-03 09:38:51 PST
youenn fablet
Comment 31 2020-02-04 01:39:07 PST
youenn fablet
Comment 32 2020-02-04 01:54:26 PST
youenn fablet
Comment 33 2020-02-04 05:18:01 PST
Eric Carlson
Comment 34 2020-02-04 06:14:28 PST
Comment on attachment 389652 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=389652&action=review > Source/WebCore/ChangeLog:20 > + Note that, whenever we request data, we flush the writer and insert an end of video sample to amke sure video data gets flushed. s/amke/make/ > Source/WebCore/ChangeLog:21 > + Therefore data should not be requested to fast to get adequate video compression. s/to fast/too fast/ > Source/WebCore/platform/mediarecorder/cocoa/AudioSampleBufferCompressor.mm:38 > +#define LOW_WATER_TIME_IN_SECOND 0.1 s/LOW_WATER_TIME_IN_SECOND/LOW_WATER_TIME_IN_SECONDS/ > Source/WebCore/platform/mediarecorder/cocoa/AudioSampleBufferCompressor.mm:68 > + if (auto error = CMBufferQueueCreate(kCFAllocatorDefault, 0, CMBufferQueueGetCallbacksForUnsortedSampleBuffers(), &inputBufferQueue)) { CMBufferQueueGetCallbacksForUnsortedSampleBuffers should be soft linked. > Source/WebCore/platform/mediarecorder/cocoa/AudioSampleBufferCompressor.mm:75 > + if (auto error = CMBufferQueueCreate(kCFAllocatorDefault, 0, CMBufferQueueGetCallbacksForUnsortedSampleBuffers(), &outputBufferQueue)) { Ditto > Source/WebCore/platform/mediarecorder/cocoa/AudioSampleBufferCompressor.mm:204 > + CMSetAttachment(buffer, kCMSampleBufferAttachmentKey_TrimDurationAtStart, trimAtStartDict, kCMAttachmentMode_ShouldPropagate); This constant should be soft linked > Source/WebCore/platform/mediarecorder/cocoa/AudioSampleBufferCompressor.mm:287 > + CMSetAttachment(sampleBuffer, kCMSampleBufferAttachmentKey_GradualDecoderRefresh, (__bridge CFTypeRef)m_gdrCountNum.get(), kCMAttachmentMode_ShouldPropagate); Ditto. > Source/WebCore/platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.mm:300 > + CMSetAttachment(sampleBuffer.get(), kCMSampleBufferAttachmentKey_EndsPreviousSampleDuration, kCFBooleanTrue, kCMAttachmentMode_ShouldPropagate); Soft link > Source/WebCore/platform/mediarecorder/cocoa/VideoSampleBufferCompressor.mm:65 > + if (auto error = CMBufferQueueCreate(kCFAllocatorDefault, 0, CMBufferQueueGetCallbacksForUnsortedSampleBuffers(), &outputBufferQueue)) { Soft link > Source/WebCore/platform/mediarecorder/cocoa/VideoSampleBufferCompressor.mm:107 > + NSDictionary *encoderSpecifications = @{(__bridge NSString *)kVTVideoEncoderSpecification_EnableHardwareAcceleratedVideoEncoder:@YES}; Ditto. > Source/WebCore/platform/mediarecorder/cocoa/VideoSampleBufferCompressor.mm:118 > + error = VTSessionSetProperty(m_vtSession.get(), kVTCompressionPropertyKey_RealTime, kCFBooleanTrue); Ditto. > Source/WebCore/platform/mediarecorder/cocoa/VideoSampleBufferCompressor.mm:120 > + error = VTSessionSetProperty(m_vtSession.get(), kVTCompressionPropertyKey_MaxKeyFrameIntervalDuration, (__bridge CFTypeRef)@(m_maxKeyFrameIntervalDuration)); Ditto. > Source/WebCore/platform/mediarecorder/cocoa/VideoSampleBufferCompressor.mm:122 > + error = VTSessionSetProperty(m_vtSession.get(), kVTCompressionPropertyKey_ExpectedFrameRate, (__bridge CFTypeRef)@(m_expectedFrameRate)); Ditto.
youenn fablet
Comment 35 2020-02-05 06:47:58 PST
WebKit Commit Bot
Comment 36 2020-02-05 08:53:59 PST
Comment on attachment 389803 [details] Patch Clearing flags on attachment: 389803 Committed r255818: <https://trac.webkit.org/changeset/255818>
WebKit Commit Bot
Comment 37 2020-02-05 08:54:02 PST
All reviewed patches have been landed. Closing bug.
WebKit Commit Bot
Comment 38 2020-02-05 09:12:07 PST
Re-opened since this is blocked by bug 207270
youenn fablet
Comment 39 2020-02-05 23:21:23 PST
WebKit Commit Bot
Comment 40 2020-02-06 00:34:57 PST
Comment on attachment 389938 [details] Patch Clearing flags on attachment: 389938 Committed r255910: <https://trac.webkit.org/changeset/255910>
WebKit Commit Bot
Comment 41 2020-02-06 00:35:00 PST
All reviewed patches have been landed. Closing bug.
Ryan Haddad
Comment 42 2020-02-06 11:53:51 PST
Attempt to fix internal builds: https://trac.webkit.org/changeset/255970/webkit
WebKit Commit Bot
Comment 43 2020-02-06 11:59:45 PST
Re-opened since this is blocked by bug 207345
youenn fablet
Comment 44 2020-02-06 23:14:23 PST
WebKit Commit Bot
Comment 45 2020-02-07 00:48:02 PST
The commit-queue encountered the following flaky tests while processing attachment 390057 [details]: editing/spelling/spellcheck-attribute.html bug 206178 (authors: g.czajkowski@samsung.com, mark.lam@apple.com, and rniwa@webkit.org) imported/w3c/web-platform-tests/web-animations/timing-model/timelines/update-and-send-events-replacement.html bug 207335 (author: graouts@apple.com) The commit-queue is continuing to process your patch.
WebKit Commit Bot
Comment 46 2020-02-07 00:48:58 PST
Comment on attachment 390057 [details] Patch Clearing flags on attachment: 390057 Committed r256010: <https://trac.webkit.org/changeset/256010>
WebKit Commit Bot
Comment 47 2020-02-07 00:49:00 PST
All reviewed patches have been landed. Closing bug.
Ryan Haddad
Comment 48 2020-02-12 17:07:05 PST
Rolled out in https://trac.webkit.org/changeset/256493/webkit due to crashes. Details are in radar.
youenn fablet
Comment 49 2020-06-04 06:21:44 PDT
Crashes were probably due to use of reserveCapacity since it is calling asanSetInitialBufferSizeTo. Instead we could use resize.
youenn fablet
Comment 50 2020-06-05 05:19:10 PDT
EWS
Comment 51 2020-06-05 08:18:19 PDT
Committed r262619: <https://trac.webkit.org/changeset/262619> All reviewed patches have been landed. Closing bug and clearing flags on attachment 401142 [details].
youenn fablet
Comment 52 2020-06-05 09:14:05 PDT
Reopening to attach new patch.
youenn fablet
Comment 53 2020-06-05 09:14:09 PDT
Created attachment 401159 [details] Build fix
EWS
Comment 54 2020-06-05 09:47:35 PDT
Committed r262625: <https://trac.webkit.org/changeset/262625> All reviewed patches have been landed. Closing bug and clearing flags on attachment 401159 [details].
Peng Liu
Comment 55 2020-06-05 11:50:26 PDT
Reopening to attach new patch.
Peng Liu
Comment 56 2020-06-05 11:50:27 PDT
Created attachment 401178 [details] A follow-up patch to fix a build failure
EWS
Comment 57 2020-06-05 12:35:30 PDT
Tools/Scripts/svn-apply failed to apply attachment 401178 [details] to trunk. Please resolve the conflicts and upload a new patch.
Peng Liu
Comment 58 2020-06-05 13:44:18 PDT
Ryan Haddad
Comment 59 2020-06-05 15:49:20 PDT
Reverted r262619, r262625, and r262641 for reason: Caused mediarecorder layout test crashes. Committed r262663: <https://trac.webkit.org/changeset/262663>
Ryan Haddad
Comment 60 2020-06-05 15:49:21 PDT
Reverted r262619, r262625, and r262641 for reason: Caused mediarecorder layout test crashes. Committed r262663: <https://trac.webkit.org/changeset/262663>
youenn fablet
Comment 61 2020-06-07 23:22:04 PDT
Created attachment 401312 [details] One more reserveCapacity
youenn fablet
Comment 62 2020-06-08 02:41:32 PDT
Created attachment 401321 [details] Rebasing
EWS
Comment 63 2020-06-08 04:49:20 PDT
Committed r262708: <https://trac.webkit.org/changeset/262708> All reviewed patches have been landed. Closing bug and clearing flags on attachment 401321 [details].
Note You need to log in before you can comment on or make changes to this bug.