Title: [219513] trunk/Source/WebCore
- Revision
- 219513
- Author
- eric.carl...@apple.com
- Date
- 2017-07-14 11:35:00 -0700 (Fri, 14 Jul 2017)
Log Message
[MediaStream] Limit the number of remote video samples queued
https://bugs.webkit.org/show_bug.cgi?id=174505
<rdar://problem/33223015>
Reviewed by Youenn Fablet.
* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::removeOldSamplesFromPendingQueue): Only
enqueue a fixed number of frames with invalid or negative decode times.
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (219512 => 219513)
--- trunk/Source/WebCore/ChangeLog 2017-07-14 17:47:28 UTC (rev 219512)
+++ trunk/Source/WebCore/ChangeLog 2017-07-14 18:35:00 UTC (rev 219513)
@@ -1,3 +1,15 @@
+2017-07-14 Eric Carlson <eric.carl...@apple.com>
+
+ [MediaStream] Limit the number of remote video samples queued
+ https://bugs.webkit.org/show_bug.cgi?id=174505
+ <rdar://problem/33223015>
+
+ Reviewed by Youenn Fablet.
+
+ * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:
+ (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::removeOldSamplesFromPendingQueue): Only
+ enqueue a fixed number of frames with invalid or negative decode times.
+
2017-07-14 Youenn Fablet <you...@apple.com>
Report CoreAudioCaptureSource failure in case shared unit stops working properly
Modified: trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm (219512 => 219513)
--- trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm 2017-07-14 17:47:28 UTC (rev 219512)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm 2017-07-14 18:35:00 UTC (rev 219513)
@@ -257,12 +257,23 @@
void MediaPlayerPrivateMediaStreamAVFObjC::removeOldSamplesFromPendingQueue(PendingSampleQueue& queue)
{
+ if (queue.isEmpty())
+ return;
+
+ auto decodeTime = queue.first()->decodeTime();
+ if (!decodeTime.isValid() || decodeTime < MediaTime::zeroTime()) {
+ while (queue.size() > 5)
+ queue.removeFirst();
+
+ return;
+ }
+
MediaTime now = streamTime();
while (!queue.isEmpty()) {
if (queue.first()->decodeTime() > now)
break;
queue.removeFirst();
- };
+ }
}
void MediaPlayerPrivateMediaStreamAVFObjC::addSampleToPendingQueue(PendingSampleQueue& queue, MediaSample& sample)
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes