<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>174505</bug_id>
          
          <creation_ts>2017-07-14 09:26:13 -0700</creation_ts>
          <short_desc>[MediaStream] Limit the number of remote video samples queued</short_desc>
          <delta_ts>2017-07-14 11:35:03 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>ASSIGNED</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1328799</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-07-14 09:26:13 -0700</bug_when>
    <thetext>MediaPlayerPrivateMediaStreamAVFObjC::removeOldSamplesFromPendingQueue releases queued video samples that are earlier than the current stream time. This works for samples from a local media stream track, but frames from a remote track are tagged for &quot;immediate display&quot; and don&apos;t have valid time stamps so there is no such thing as an &quot;old&quot; sample.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1328801</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-07-14 09:28:57 -0700</bug_when>
    <thetext>&lt;rdar://problem/33223015&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1328810</commentid>
    <comment_count>2</comment_count>
      <attachid>315435</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-07-14 09:40:36 -0700</bug_when>
    <thetext>Created attachment 315435
Proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1328835</commentid>
    <comment_count>3</comment_count>
      <attachid>315435</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-07-14 10:23:01 -0700</bug_when>
    <thetext>Comment on attachment 315435
Proposed patch.

View in context: https://bugs.webkit.org/attachment.cgi?id=315435&amp;action=review

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:263
&gt; +    if (!queue.first()-&gt;decodeTime().isValid()) {

I applied the patch locally to check whether  decodeTime is invalid in the case of RealtimeIncomingVideoSource.
It is valid but is negative. At least on my Mac, we are not going through that loop.
We will probably go through the next while loop and empty the queue there.
Is it different on iOS?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1328857</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-07-14 10:50:45 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #3)
&gt; Comment on attachment 315435 [details]
&gt; Proposed patch.
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=315435&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:263
&gt; &gt; +    if (!queue.first()-&gt;decodeTime().isValid()) {
&gt; 
&gt; I applied the patch locally to check whether  decodeTime is invalid in the
&gt; case of RealtimeIncomingVideoSource.
&gt; It is valid but is negative. At least on my Mac, we are not going through
&gt; that loop.
&gt; We will probably go through the next while loop and empty the queue there.
&gt; Is it different on iOS?

While the raw PTS time is negative in the CMSampleBuffer:

(lldb) po (CMSampleBuffer)0x00007f88b20ca290
CMSampleBuffer 0x7f88b20ca290 retainCount: 1 allocator: 0x7fff8383df40
  ...
	numSamples = 1
	sampleTimingArray[1] = {
		{PTS = {-1/1 = -1.000}, DTS = {-1/1 = -1.000}, duration = {INVALID}},
	}
	sampleAttachmentsArray[0] = {
		sample 0:
			DisplayImmediately = true
	}
	imageBuffer = 0x7f88b5c2f140

&quot;decodeTime&quot; is invalid:

(lldb) p mediaSample.decodeTime()
(WTF::MediaTime) $11 = { Invalid } {
   = (m_timeValue = 0, m_timeValueAsDouble = 0)
  m_timeScale = 0
  m_timeFlags = &apos;\0&apos;
}
(lldb) p mediaSample.decodeTime().isValid()
(bool) $12 = false

But we should probably also check explicitly for negative times as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1328878</commentid>
    <comment_count>5</comment_count>
      <attachid>315457</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-07-14 11:12:39 -0700</bug_when>
    <thetext>Created attachment 315457
Patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1328906</commentid>
    <comment_count>6</comment_count>
      <attachid>315457</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-07-14 11:35:03 -0700</bug_when>
    <thetext>Comment on attachment 315457
Patch for landing.

Clearing flags on attachment: 315457

Committed r219513: &lt;http://trac.webkit.org/changeset/219513&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>315435</attachid>
            <date>2017-07-14 09:40:36 -0700</date>
            <delta_ts>2017-07-14 11:13:14 -0700</delta_ts>
            <desc>Proposed patch.</desc>
            <filename>limit_sample_queue_patch_1.txt</filename>
            <type>text/plain</type>
            <size>1920</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxOTUwNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE3LTA3LTE0ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYVN0cmVhbV0g
TGltaXQgdGhlIG51bWJlciBvZiByZW1vdGUgdmlkZW8gc2FtcGxlcyBxdWV1ZWQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDUwNQorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMzMyMjMwMTU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnJlbW92ZU9sZFNhbXBsZXNG
cm9tUGVuZGluZ1F1ZXVlKTogT25seQorICAgICAgICBlbnF1ZXVlIGEgZml4ZWQgbnVtYmVyIG9m
IGZyYW1lcyB3aXRoIGludmFsaWQgZGVjb2RlIHRpbWVzLgorCiAyMDE3LTA3LTE0ICBGdWppaSBI
aXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgogCiAgICAgICAgIFtXaW5DYWlyb10g
ZXJyb3IgJ21fY29tcG9zaXRvclRleHR1cmUnOiB1bmRlY2xhcmVkIGlkZW50aWZpZXIgc2luY2Ug
QnVnIDE3NDM0NQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQkocmV2aXNpb24gMjE5
NTAzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0yNTcsMTIgKzI1NywyMiBAQCBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxh
eWVyUHJpCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpyZW1v
dmVPbGRTYW1wbGVzRnJvbVBlbmRpbmdRdWV1ZShQZW5kaW5nU2FtcGxlUXVldWUmIHF1ZXVlKQog
eworICAgIGlmIChxdWV1ZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICgh
cXVldWUuZmlyc3QoKS0+ZGVjb2RlVGltZSgpLmlzVmFsaWQoKSkgeworICAgICAgICB3aGlsZSAo
cXVldWUuc2l6ZSgpID4gNSkKKyAgICAgICAgICAgIHF1ZXVlLnJlbW92ZUZpcnN0KCk7CisKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIE1lZGlhVGltZSBub3cgPSBzdHJlYW1UaW1lKCk7
CiAgICAgd2hpbGUgKCFxdWV1ZS5pc0VtcHR5KCkpIHsKICAgICAgICAgaWYgKHF1ZXVlLmZpcnN0
KCktPmRlY29kZVRpbWUoKSA+IG5vdykKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBxdWV1
ZS5yZW1vdmVGaXJzdCgpOwotICAgIH07CisgICAgfQogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6YWRkU2FtcGxlVG9QZW5kaW5nUXVldWUoUGVuZGluZ1Nh
bXBsZVF1ZXVlJiBxdWV1ZSwgTWVkaWFTYW1wbGUmIHNhbXBsZSkK
</data>
<flag name="review"
          id="336274"
          type_id="1"
          status="+"
          setter="youennf"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>315457</attachid>
            <date>2017-07-14 11:12:39 -0700</date>
            <delta_ts>2017-07-14 11:35:03 -0700</delta_ts>
            <desc>Patch for landing.</desc>
            <filename>limit_sample_queue_patch_2.txt</filename>
            <type>text/plain</type>
            <size>2004</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxOTUwNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE3LTA3LTE0ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYVN0cmVhbV0g
TGltaXQgdGhlIG51bWJlciBvZiByZW1vdGUgdmlkZW8gc2FtcGxlcyBxdWV1ZWQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDUwNQorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMzMyMjMwMTU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWW91ZW5uIEZh
YmxldC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cmVtb3ZlT2xkU2FtcGxlc0Zy
b21QZW5kaW5nUXVldWUpOiBPbmx5CisgICAgICAgIGVucXVldWUgYSBmaXhlZCBudW1iZXIgb2Yg
ZnJhbWVzIHdpdGggaW52YWxpZCBvciBuZWdhdGl2ZSBkZWNvZGUgdGltZXMuCisKIDIwMTctMDct
MTQgIEZ1amlpIEhpcm9ub3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CiAKICAgICAgICAg
W1dpbkNhaXJvXSBlcnJvciAnbV9jb21wb3NpdG9yVGV4dHVyZSc6IHVuZGVjbGFyZWQgaWRlbnRp
ZmllciBzaW5jZSBCdWcgMTc0MzQ1CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCShy
ZXZpc2lvbiAyMTk1MDMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0JKHdv
cmtpbmcgY29weSkKQEAgLTI1NywxMiArMjU3LDIzIEBAIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5
cGUgTWVkaWFQbGF5ZXJQcmkKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakM6OnJlbW92ZU9sZFNhbXBsZXNGcm9tUGVuZGluZ1F1ZXVlKFBlbmRpbmdTYW1wbGVRdWV1
ZSYgcXVldWUpCiB7CisgICAgaWYgKHF1ZXVlLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgYXV0byBkZWNvZGVUaW1lID0gcXVldWUuZmlyc3QoKS0+ZGVjb2RlVGltZSgpOworICAg
IGlmICghZGVjb2RlVGltZS5pc1ZhbGlkKCkgfHwgZGVjb2RlVGltZSA8IE1lZGlhVGltZTo6emVy
b1RpbWUoKSkgeworICAgICAgICB3aGlsZSAocXVldWUuc2l6ZSgpID4gNSkKKyAgICAgICAgICAg
IHF1ZXVlLnJlbW92ZUZpcnN0KCk7CisKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIE1l
ZGlhVGltZSBub3cgPSBzdHJlYW1UaW1lKCk7CiAgICAgd2hpbGUgKCFxdWV1ZS5pc0VtcHR5KCkp
IHsKICAgICAgICAgaWYgKHF1ZXVlLmZpcnN0KCktPmRlY29kZVRpbWUoKSA+IG5vdykKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBxdWV1ZS5yZW1vdmVGaXJzdCgpOwotICAgIH07CisgICAg
fQogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6YWRkU2Ft
cGxlVG9QZW5kaW5nUXVldWUoUGVuZGluZ1NhbXBsZVF1ZXVlJiBxdWV1ZSwgTWVkaWFTYW1wbGUm
IHNhbXBsZSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>