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

Reply via email to