<?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>189788</bug_id>
          
          <creation_ts>2018-09-20 08:29:53 -0700</creation_ts>
          <short_desc>[GStreamer][MSE] Add a default sample duration</short_desc>
          <delta_ts>2018-09-21 03:45:11 -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>WebKitGTK</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alicia Boya García">aboya</reporter>
          <assigned_to name="Alicia Boya García">aboya</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>calvaris</cc>
    
    <cc>commit-queue</cc>
    
    <cc>mcatanzaro</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1461343</commentid>
    <comment_count>0</comment_count>
    <who name="Alicia Boya García">aboya</who>
    <bug_when>2018-09-20 08:29:53 -0700</bug_when>
    <thetext>Some WebM files don&apos;t provide sample durations, so we need to provide a safe default in order for them to be playable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1461345</commentid>
    <comment_count>1</comment_count>
      <attachid>350203</attachid>
    <who name="Alicia Boya García">aboya</who>
    <bug_when>2018-09-20 08:33:10 -0700</bug_when>
    <thetext>Created attachment 350203
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1461356</commentid>
    <comment_count>2</comment_count>
    <who name="Alicia Boya García">aboya</who>
    <bug_when>2018-09-20 08:59:17 -0700</bug_when>
    <thetext>This is necessary to pass MSE YouTube tests 21. StartPlayWithoutData, 22. EventTimestamp... and any testcase that uses WebM files without frame durations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1461391</commentid>
    <comment_count>3</comment_count>
      <attachid>350203</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-09-20 09:47:06 -0700</bug_when>
    <thetext>Comment on attachment 350203
Patch

Clearing flags on attachment: 350203

Committed r236264: &lt;https://trac.webkit.org/changeset/236264&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1461392</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-09-20 09:47:08 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1461757</commentid>
    <comment_count>5</comment_count>
      <attachid>350203</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2018-09-21 00:51:42 -0700</bug_when>
    <thetext>Comment on attachment 350203
Patch

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

&gt; Source/WebCore/platform/graphics/gstreamer/MediaSampleGStreamer.cpp:59
&gt; +        m_duration = createMediaTime(16666667); // 1/60 seconds

You should be used MediaTime(1, 60) then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1461782</commentid>
    <comment_count>6</comment_count>
      <attachid>350203</attachid>
    <who name="Alicia Boya García">aboya</who>
    <bug_when>2018-09-21 03:45:11 -0700</bug_when>
    <thetext>Comment on attachment 350203
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/gstreamer/MediaSampleGStreamer.cpp:59
&gt;&gt; +        m_duration = createMediaTime(16666667); // 1/60 seconds
&gt; 
&gt; You should be used MediaTime(1, 60) then.

I thought about that, but decided purposely not to. Using a different timescale here would require the timescales would have to be recomputed as soon as an addition is made (and additions will be made plenty with this).

Furthermore, the least common multiple of 1e9 and 60 is 3e9, which is greater than MediaTime::MaximumTimeScale (~2.147e9). In consequence, MaximumTimeScale would lossly be chosen instead, which is not a power of ten, but 0x7fffffff.

This is a lot of complexity, wasted computation and more worringly, risk: because 1e9 and MaximumTimeScale don&apos;t play nicely, `pts + dur - dur` would not be equal to `pts`, and converting them to GStreamer time would return different values.

In this case I&apos;m just choosing an arbitrary duration (16000000 ns, or 16031415 ns would have worked as well), so I don&apos;t mind if 1/60 is not represented exactly.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>350203</attachid>
            <date>2018-09-20 08:33:10 -0700</date>
            <delta_ts>2018-09-20 09:47:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189788-20180920173308.patch</filename>
            <type>text/plain</type>
            <size>2149</size>
            <attacher name="Alicia Boya García">aboya</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2MTY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWZjYjY1NzE0MmVkN2Zl
MjUwM2NjMjdmN2JkYWU2MzRlZmRmMjFlNC4uMGYzNzNjMDIwZTZkODNmMWI3ZDQ3NzMxOTY3NDQ2
MGRjOGM3NzlhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE4LTA5LTIwICBBbGlj
aWEgQm95YSBHYXJjw61hICA8YWJveWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVy
XVtNU0VdIEFkZCBhIGRlZmF1bHQgc2FtcGxlIGR1cmF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODk3ODgKKworICAgICAgICBTb21lIFdlYk0g
ZmlsZXMgZG9uJ3QgcHJvdmlkZSBzYW1wbGUgZHVyYXRpb25zLCBzbyB3ZSBuZWVkIHRvIHByb3Zp
ZGUKKyAgICAgICAgYSBzYWZlIGRlZmF1bHQgaW4gb3JkZXIgZm9yIHRoZW0gdG8gYmUgcGxheWFi
bGUuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFTYW1wbGVHU3RyZWFtZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFTYW1wbGVHU3RyZWFtZXI6Ok1lZGlhU2FtcGxlR1N0cmVhbWVy
KToKKwogMjAxOC0wOS0xOSAgUGhpbGlwcGUgTm9ybWFuZCA8cG5vcm1hbmRAaWdhbGlhLmNvbT4K
IAogICAgICAgICBbR1N0cmVhbWVyXSBBZGQgc3VwcG9ydCBmb3IgQVYxIGRlY29kaW5nCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFT
YW1wbGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhU2FtcGxlR1N0cmVhbWVyLmNwcAppbmRleCA1ODZkOGRmZTY1YzAzZjI1MmRi
YzNjMjc1NDk4NjVlNzc2NTBkOWE3Li5iODEwZTc4ZGE4MmQxYzZkYmU5ZWE0YjNmYWYwYWQ4MWVh
MDk2M2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFTYW1wbGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVNhbXBsZUdTdHJlYW1lci5jcHAKQEAgLTUwLDYg
KzUwLDE0IEBAIE1lZGlhU2FtcGxlR1N0cmVhbWVyOjpNZWRpYVNhbXBsZUdTdHJlYW1lcihHUmVm
UHRyPEdzdFNhbXBsZT4mJiBzYW1wbGUsIGNvbnN0IEZsCiAgICAgICAgIG1fZHRzID0gY3JlYXRl
TWVkaWFUaW1lKEdTVF9CVUZGRVJfRFRTX09SX1BUUyhidWZmZXIpKTsKICAgICBpZiAoR1NUX0JV
RkZFUl9EVVJBVElPTl9JU19WQUxJRChidWZmZXIpKQogICAgICAgICBtX2R1cmF0aW9uID0gY3Jl
YXRlTWVkaWFUaW1lKEdTVF9CVUZGRVJfRFVSQVRJT04oYnVmZmVyKSk7CisgICAgZWxzZSB7Cisg
ICAgICAgIC8vIFVuZm9ydHVuYXRlbHksIHNvbWV0aW1lcyBzYW1wbGVzIGRvbid0IHByb3ZpZGUg
YSBkdXJhdGlvbi4gVGhpcyBjYW4gbmV2ZXIgaGFwcGVuIGluIE1QNCBiZWNhdXNlIG9mIHRoZSB3
YXkKKyAgICAgICAgLy8gdGhlIGZvcm1hdCBpcyBsYWlkIG91dCwgYnV0IGl0J3MgcHJldHR5IGNv
bW1vbiBpbiBXZWJNLgorICAgICAgICAvLyBUaGUgZ29vZCBwYXJ0IGlzIHRoYXQgZHVyYXRpb25z
IGRvbid0IG1hdHRlciBmb3IgcGxheWJhY2ssIGp1c3QgZm9yIGJ1ZmZlcmVkIHJhbmdlcyBhbmQg
Y29kZWQgZnJhbWUgZGVsZXRpb24uCisgICAgICAgIC8vIFdlIHdhbnQgdG8gcGljayBzb21ldGhp
bmcgc21hbGwgZW5vdWdoIHRvIG5vdCBjYXVzZSB1bndhbnRlZCBmcmFtZSBkZWxldGlvbiwgYnV0
IGJpZyBlbm91Z2ggdG8gbmV2ZXIgYmUKKyAgICAgICAgLy8gbWlzdGFrZW4gZm9yIGEgcm91bmRp
bmcgYXJ0aWZhY3QuCisgICAgICAgIG1fZHVyYXRpb24gPSBjcmVhdGVNZWRpYVRpbWUoMTY2NjY2
NjcpOyAvLyAxLzYwIHNlY29uZHMKKyAgICB9CiAKICAgICBtX3NpemUgPSBnc3RfYnVmZmVyX2dl
dF9zaXplKGJ1ZmZlcik7CiAgICAgbV9zYW1wbGUgPSBzYW1wbGU7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>