<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[160754] trunk/Source/WebCore</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/160754">160754</a></dd>
<dt>Author</dt> <dd>jer.noble@apple.com</dd>
<dt>Date</dt> <dd>2013-12-17 22:49:50 -0800 (Tue, 17 Dec 2013)</dd>
</dl>

<h3>Log Message</h3>
<pre>[MSE] Add per-track signalling between SourceBuffer and SourceBufferPrivate.
https://bugs.webkit.org/show_bug.cgi?id=125899

Reviewed by Eric Carlson.

To accommodate the future addition of audio support to MSE in the Mac
port, add the concept of trackIDs to the communication between
SourceBuffer and SourceBufferPrivate.

The following virtual methods  now take a trackID parameter:
* platform/graphics/SourceBufferPrivate.h:
(WebCore::SourceBufferPrivate::isReadyForMoreSamples):
(WebCore::SourceBufferPrivate::stopAskingForMoreSamples):
(WebCore::SourceBufferPrivate::notifyClientWhenReadyForMoreSamples):
* platform/graphics/SourceBufferPrivateClient.h:
(WebCore::SourceBufferPrivateClient::sourceBufferPrivateDidBecomeReadyForMoreSamples):

Update overridden methods in subclasses:
* Modules/mediasource/SourceBuffer.cpp:
(WebCore::SourceBuffer::sourceBufferPrivateDidBecomeReadyForMoreSamples):
* Modules/mediasource/SourceBuffer.h:
* platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.h:
* platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:
(WebCore::SourceBufferPrivateAVFObjC::trackDidChangeEnabled):
(WebCore::SourceBufferPrivateAVFObjC::isReadyForMoreSamples):
* platform/mock/mediasource/MockSourceBufferPrivate.h:

Change the logic in provideMediaData to update a single TrackBuffer
rather than iterating over all of them:
* Modules/mediasource/SourceBuffer.cpp:
(WebCore::SourceBuffer::sourceBufferPrivateSeekToTime):
(WebCore::SourceBuffer::appendBufferTimerFired):
(WebCore::SourceBuffer::provideMediaData):</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreModulesmediasourceSourceBuffercpp">trunk/Source/WebCore/Modules/mediasource/SourceBuffer.cpp</a></li>
<li><a href="#trunkSourceWebCoreModulesmediasourceSourceBufferh">trunk/Source/WebCore/Modules/mediasource/SourceBuffer.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsSourceBufferPrivateh">trunk/Source/WebCore/platform/graphics/SourceBufferPrivate.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsSourceBufferPrivateClienth">trunk/Source/WebCore/platform/graphics/SourceBufferPrivateClient.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsavfoundationobjcSourceBufferPrivateAVFObjCh">trunk/Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsavfoundationobjcSourceBufferPrivateAVFObjCmm">trunk/Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm</a></li>
<li><a href="#trunkSourceWebCoreplatformmockmediasourceMockSourceBufferPrivateh">trunk/Source/WebCore/platform/mock/mediasource/MockSourceBufferPrivate.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (160753 => 160754)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2013-12-18 06:27:44 UTC (rev 160753)
+++ trunk/Source/WebCore/ChangeLog        2013-12-18 06:49:50 UTC (rev 160754)
</span><span class="lines">@@ -1,3 +1,39 @@
</span><ins>+2013-12-17  Jer Noble  &lt;jer.noble@apple.com&gt;
+
+        [MSE] Add per-track signalling between SourceBuffer and SourceBufferPrivate.
+        https://bugs.webkit.org/show_bug.cgi?id=125899
+
+        Reviewed by Eric Carlson.
+
+        To accommodate the future addition of audio support to MSE in the Mac
+        port, add the concept of trackIDs to the communication between
+        SourceBuffer and SourceBufferPrivate.
+
+        The following virtual methods  now take a trackID parameter:
+        * platform/graphics/SourceBufferPrivate.h:
+        (WebCore::SourceBufferPrivate::isReadyForMoreSamples):
+        (WebCore::SourceBufferPrivate::stopAskingForMoreSamples):
+        (WebCore::SourceBufferPrivate::notifyClientWhenReadyForMoreSamples):
+        * platform/graphics/SourceBufferPrivateClient.h:
+        (WebCore::SourceBufferPrivateClient::sourceBufferPrivateDidBecomeReadyForMoreSamples):
+
+        Update overridden methods in subclasses:
+        * Modules/mediasource/SourceBuffer.cpp:
+        (WebCore::SourceBuffer::sourceBufferPrivateDidBecomeReadyForMoreSamples):
+        * Modules/mediasource/SourceBuffer.h:
+        * platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.h:
+        * platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:
+        (WebCore::SourceBufferPrivateAVFObjC::trackDidChangeEnabled):
+        (WebCore::SourceBufferPrivateAVFObjC::isReadyForMoreSamples):
+        * platform/mock/mediasource/MockSourceBufferPrivate.h:
+
+        Change the logic in provideMediaData to update a single TrackBuffer
+        rather than iterating over all of them:
+        * Modules/mediasource/SourceBuffer.cpp:
+        (WebCore::SourceBuffer::sourceBufferPrivateSeekToTime):
+        (WebCore::SourceBuffer::appendBufferTimerFired):
+        (WebCore::SourceBuffer::provideMediaData):
+
</ins><span class="cx"> 2013-12-17  Joseph Pecoraro  &lt;pecoraro@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Web Inspector: Remove InspectorAgent::hasFrontend
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediasourceSourceBuffercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediasource/SourceBuffer.cpp (160753 => 160754)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediasource/SourceBuffer.cpp        2013-12-18 06:27:44 UTC (rev 160753)
+++ trunk/Source/WebCore/Modules/mediasource/SourceBuffer.cpp        2013-12-18 06:49:50 UTC (rev 160754)
</span><span class="lines">@@ -286,9 +286,9 @@
</span><span class="cx">         trackBuffer.decodeQueue.clear();
</span><span class="cx">         for (auto iter = currentSampleDTSIterator; iter != trackBuffer.samples.decodeEnd(); ++iter)
</span><span class="cx">             trackBuffer.decodeQueue.insert(*iter);
</span><ins>+
+        provideMediaData(trackBuffer, trackID);
</ins><span class="cx">     }
</span><del>-
-    provideMediaData();   
</del><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> MediaTime SourceBuffer::sourceBufferPrivateFastSeekTimeForMediaTime(SourceBufferPrivate*, const MediaTime&amp; targetTime, const MediaTime&amp; negativeThreshold, const MediaTime&amp; positiveThreshold)
</span><span class="lines">@@ -454,7 +454,8 @@
</span><span class="cx">     scheduleEvent(eventNames().updateendEvent);
</span><span class="cx"> 
</span><span class="cx">     m_source-&gt;monitorSourceBuffers();
</span><del>-    provideMediaData();
</del><ins>+    for (auto iter = m_trackBufferMap.begin(), end = m_trackBufferMap.end(); iter != end; ++iter)
+        provideMediaData(iter-&gt;value, iter-&gt;key);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> const AtomicString&amp; SourceBuffer::decodeError()
</span><span class="lines">@@ -1123,39 +1124,38 @@
</span><span class="cx">         m_source-&gt;mediaElement()-&gt;textTrackKindChanged(track);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void SourceBuffer::sourceBufferPrivateDidBecomeReadyForMoreSamples(SourceBufferPrivate*)
</del><ins>+void SourceBuffer::sourceBufferPrivateDidBecomeReadyForMoreSamples(SourceBufferPrivate*, AtomicString trackID)
</ins><span class="cx"> {
</span><span class="cx">     LOG(Media, &quot;SourceBuffer::sourceBufferPrivateDidBecomeReadyForMoreSamples(%p)&quot;, this);
</span><del>-    provideMediaData();
</del><ins>+    auto it = m_trackBufferMap.find(trackID);
+    if (it == m_trackBufferMap.end())
+        return;
+
+    provideMediaData(it-&gt;value, trackID);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void SourceBuffer::provideMediaData()
</del><ins>+void SourceBuffer::provideMediaData(TrackBuffer&amp; trackBuffer, AtomicString trackID)
</ins><span class="cx"> {
</span><del>-    if (!m_private-&gt;isReadyForMoreSamples())
-        return;
-
</del><span class="cx"> #if !LOG_DISABLED
</span><span class="cx">     unsigned enqueuedSamples = 0;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    for (auto it = m_trackBufferMap.begin(), end = m_trackBufferMap.end(); it != end; ++it) {
-        TrackBuffer&amp; trackBuffer = it-&gt;value;
-        AtomicString trackID = it-&gt;key;
-        auto sampleIt = trackBuffer.decodeQueue.begin();
-        for (auto sampleEnd = trackBuffer.decodeQueue.end(); sampleIt != sampleEnd; ++sampleIt) {
-            if (!m_private-&gt;isReadyForMoreSamples())
-                break;
</del><ins>+    auto sampleIt = trackBuffer.decodeQueue.begin();
+    for (auto sampleEnd = trackBuffer.decodeQueue.end(); sampleIt != sampleEnd; ++sampleIt) {
+        if (!m_private-&gt;isReadyForMoreSamples(trackID)) {
+            m_private-&gt;notifyClientWhenReadyForMoreSamples(trackID);
+            break;
+        }
</ins><span class="cx"> 
</span><del>-            RefPtr&lt;MediaSample&gt; sample = sampleIt-&gt;second;
-            trackBuffer.lastEnqueuedPresentationTime = sample-&gt;presentationTime();
-            m_private-&gt;enqueueSample(sample.release(), trackID);
</del><ins>+        RefPtr&lt;MediaSample&gt; sample = sampleIt-&gt;second;
+        trackBuffer.lastEnqueuedPresentationTime = sample-&gt;presentationTime();
+        m_private-&gt;enqueueSample(sample.release(), trackID);
</ins><span class="cx"> #if !LOG_DISABLED
</span><del>-            ++enqueuedSamples;
</del><ins>+        ++enqueuedSamples;
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-        }
-        trackBuffer.decodeQueue.erase(trackBuffer.decodeQueue.begin(), sampleIt);
</del><span class="cx">     }
</span><ins>+    trackBuffer.decodeQueue.erase(trackBuffer.decodeQueue.begin(), sampleIt);
</ins><span class="cx"> 
</span><span class="cx">     LOG(Media, &quot;SourceBuffer::provideMediaData(%p) - Enqueued %u samples&quot;, this, enqueuedSamples);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediasourceSourceBufferh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediasource/SourceBuffer.h (160753 => 160754)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediasource/SourceBuffer.h        2013-12-18 06:27:44 UTC (rev 160753)
+++ trunk/Source/WebCore/Modules/mediasource/SourceBuffer.h        2013-12-18 06:49:50 UTC (rev 160754)
</span><span class="lines">@@ -108,7 +108,7 @@
</span><span class="cx">     virtual void sourceBufferPrivateDidReceiveSample(SourceBufferPrivate*, PassRefPtr&lt;MediaSample&gt;) OVERRIDE;
</span><span class="cx">     virtual bool sourceBufferPrivateHasAudio(const SourceBufferPrivate*) const OVERRIDE;
</span><span class="cx">     virtual bool sourceBufferPrivateHasVideo(const SourceBufferPrivate*) const OVERRIDE;
</span><del>-    virtual void sourceBufferPrivateDidBecomeReadyForMoreSamples(SourceBufferPrivate*) OVERRIDE;
</del><ins>+    virtual void sourceBufferPrivateDidBecomeReadyForMoreSamples(SourceBufferPrivate*, AtomicString trackID) OVERRIDE;
</ins><span class="cx">     virtual void sourceBufferPrivateSeekToTime(SourceBufferPrivate*, const MediaTime&amp;);
</span><span class="cx">     virtual MediaTime sourceBufferPrivateFastSeekTimeForMediaTime(SourceBufferPrivate*, const MediaTime&amp;, const MediaTime&amp; negativeThreshold, const MediaTime&amp; positiveThreshold);
</span><span class="cx"> 
</span><span class="lines">@@ -140,7 +140,8 @@
</span><span class="cx"> 
</span><span class="cx">     bool validateInitializationSegment(const InitializationSegment&amp;);
</span><span class="cx"> 
</span><del>-    void provideMediaData();
</del><ins>+    struct TrackBuffer;
+    void provideMediaData(TrackBuffer&amp;, AtomicString trackID);
</ins><span class="cx">     void didDropSample();
</span><span class="cx"> 
</span><span class="cx">     RefPtr&lt;SourceBufferPrivate&gt; m_private;
</span><span class="lines">@@ -163,7 +164,6 @@
</span><span class="cx">     MediaTime m_timestampOffset;
</span><span class="cx">     MediaTime m_highestPresentationEndTimestamp;
</span><span class="cx"> 
</span><del>-    struct TrackBuffer;
</del><span class="cx">     HashMap&lt;AtomicString, TrackBuffer&gt; m_trackBufferMap;
</span><span class="cx">     bool m_receivedFirstInitializationSegment;
</span><span class="cx">     RefPtr&lt;TimeRanges&gt; m_buffered;
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsSourceBufferPrivateh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/SourceBufferPrivate.h (160753 => 160754)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/SourceBufferPrivate.h        2013-12-18 06:27:44 UTC (rev 160753)
+++ trunk/Source/WebCore/platform/graphics/SourceBufferPrivate.h        2013-12-18 06:49:50 UTC (rev 160754)
</span><span class="lines">@@ -65,8 +65,10 @@
</span><span class="cx"> 
</span><span class="cx">     virtual void flushAndEnqueueNonDisplayingSamples(Vector&lt;RefPtr&lt;MediaSample&gt;&gt;, AtomicString) { }
</span><span class="cx">     virtual void enqueueSample(PassRefPtr&lt;MediaSample&gt;, AtomicString) { }
</span><del>-    virtual bool isReadyForMoreSamples() { return false; }
</del><ins>+    virtual bool isReadyForMoreSamples(AtomicString) { return false; }
</ins><span class="cx">     virtual void setActive(bool) { }
</span><ins>+    virtual void stopAskingForMoreSamples(AtomicString) { }
+    virtual void notifyClientWhenReadyForMoreSamples(AtomicString) { }
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsSourceBufferPrivateClienth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/SourceBufferPrivateClient.h (160753 => 160754)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/SourceBufferPrivateClient.h        2013-12-18 06:27:44 UTC (rev 160753)
+++ trunk/Source/WebCore/platform/graphics/SourceBufferPrivateClient.h        2013-12-18 06:49:50 UTC (rev 160754)
</span><span class="lines">@@ -73,11 +73,10 @@
</span><span class="cx">     virtual bool sourceBufferPrivateHasAudio(const SourceBufferPrivate*) const = 0;
</span><span class="cx">     virtual bool sourceBufferPrivateHasVideo(const SourceBufferPrivate*) const = 0;
</span><span class="cx"> 
</span><del>-    virtual void sourceBufferPrivateDidBecomeReadyForMoreSamples(SourceBufferPrivate*) = 0;
</del><ins>+    virtual void sourceBufferPrivateDidBecomeReadyForMoreSamples(SourceBufferPrivate*, AtomicString trackID) = 0;
</ins><span class="cx"> 
</span><span class="cx">     virtual MediaTime sourceBufferPrivateFastSeekTimeForMediaTime(SourceBufferPrivate*, const MediaTime&amp; time, const MediaTime&amp;, const MediaTime&amp;) { return time; }
</span><span class="cx">     virtual void sourceBufferPrivateSeekToTime(SourceBufferPrivate*, const MediaTime&amp;) { };
</span><del>-
</del><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsavfoundationobjcSourceBufferPrivateAVFObjCh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.h (160753 => 160754)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.h        2013-12-18 06:27:44 UTC (rev 160753)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.h        2013-12-18 06:49:50 UTC (rev 160754)
</span><span class="lines">@@ -92,7 +92,7 @@
</span><span class="cx">     virtual bool isFull() OVERRIDE;
</span><span class="cx">     virtual void flushAndEnqueueNonDisplayingSamples(Vector&lt;RefPtr&lt;MediaSample&gt;&gt;, AtomicString trackID) OVERRIDE;
</span><span class="cx">     virtual void enqueueSample(PassRefPtr&lt;MediaSample&gt;, AtomicString trackID) OVERRIDE;
</span><del>-    virtual bool isReadyForMoreSamples() OVERRIDE;
</del><ins>+    virtual bool isReadyForMoreSamples(AtomicString trackID) OVERRIDE;
</ins><span class="cx">     virtual void setActive(bool) OVERRIDE;
</span><span class="cx"> 
</span><span class="cx">     Vector&lt;RefPtr&lt;VideoTrackPrivate&gt;&gt; m_videoTracks;
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsavfoundationobjcSourceBufferPrivateAVFObjCmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm (160753 => 160754)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm        2013-12-18 06:27:44 UTC (rev 160753)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm        2013-12-18 06:49:50 UTC (rev 160754)
</span><span class="lines">@@ -469,7 +469,7 @@
</span><span class="cx">             m_displayLayer = [[getAVSampleBufferDisplayLayerClass() alloc] init];
</span><span class="cx">             [m_displayLayer requestMediaDataWhenReadyOnQueue:dispatch_get_main_queue() usingBlock:^{
</span><span class="cx">                 if (m_client)
</span><del>-                    m_client-&gt;sourceBufferPrivateDidBecomeReadyForMoreSamples(this);
</del><ins>+                    m_client-&gt;sourceBufferPrivateDidBecomeReadyForMoreSamples(this, AtomicString::number(trackID));
</ins><span class="cx">             }];
</span><span class="cx">             if (m_mediaSource)
</span><span class="cx">                 m_mediaSource-&gt;player()-&gt;addDisplayLayer(m_displayLayer.get());
</span><span class="lines">@@ -538,8 +538,9 @@
</span><span class="cx">         m_mediaSource-&gt;player()-&gt;setHasAvailableVideoFrame(true);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool SourceBufferPrivateAVFObjC::isReadyForMoreSamples()
</del><ins>+bool SourceBufferPrivateAVFObjC::isReadyForMoreSamples(AtomicString trackID)
</ins><span class="cx"> {
</span><ins>+    UNUSED_PARAM(trackID);
</ins><span class="cx">     return [m_displayLayer isReadyForMoreMediaData];
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformmockmediasourceMockSourceBufferPrivateh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/mock/mediasource/MockSourceBufferPrivate.h (160753 => 160754)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mock/mediasource/MockSourceBufferPrivate.h        2013-12-18 06:27:44 UTC (rev 160753)
+++ trunk/Source/WebCore/platform/mock/mediasource/MockSourceBufferPrivate.h        2013-12-18 06:49:50 UTC (rev 160754)
</span><span class="lines">@@ -73,7 +73,7 @@
</span><span class="cx"> 
</span><span class="cx">     virtual void flushAndEnqueueNonDisplayingSamples(Vector&lt;RefPtr&lt;MediaSample&gt;&gt;, AtomicString) OVERRIDE { }
</span><span class="cx">     virtual void enqueueSample(PassRefPtr&lt;MediaSample&gt;, AtomicString) OVERRIDE;
</span><del>-    virtual bool isReadyForMoreSamples() OVERRIDE { return true; }
</del><ins>+    virtual bool isReadyForMoreSamples(AtomicString) OVERRIDE { return true; }
</ins><span class="cx">     virtual void setActive(bool) OVERRIDE;
</span><span class="cx"> 
</span><span class="cx">     void didReceiveInitializationSegment(const MockInitializationBox&amp;);
</span></span></pre>
</div>
</div>

</body>
</html>