<?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>168505</bug_id>
          
          <creation_ts>2017-02-17 04:35:31 -0800</creation_ts>
          <short_desc>[GStreamer] Fast replay on video hide/unhide on platforms with limited video buffer pools</short_desc>
          <delta_ts>2017-02-17 06:52:21 -0800</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>WebKit Local 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="Enrique Ocaña">eocanha</reporter>
          <assigned_to name="Enrique Ocaña">eocanha</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1278201</commentid>
    <comment_count>0</comment_count>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2017-02-17 04:35:31 -0800</bug_when>
    <thetext>Some platforms have limited video buffer pools. For instance, OMX on Raspberry Pi 2 when using EGL buffers and zero copy. On those platforms, the fact of returning all the video buffers to the pool is critical to avoid stalling the video pipeline waiting for available buffers.

When a video is hidden by setting &quot;display: none&quot;, a special early return codepath triggering an early return[1] is activated on MediaPlayerGStreamerBase::pushTextureToCompositor(). This causes that the texture in the video sample is never consumed and therefore never released. This causes a stall of the video stream in the aforementioned platforms, as the video pool runs out of buffers. At the same time, the audio stream doesn&apos;t suffer from that problem and the audio keeps being decoded and &quot;rendered&quot; at a normal rate.

When the video is shown again, the buffers are returned and the decoder tries to catch up, quickly producing all the pending samples and sending them for display to the video sink. As a result, the user sees the video &quot;on fast forward&quot; until the catching up is complete.

IMHO, the proper solution would be to consume the video buffer in some way even when the layer is hidden, so it&apos;s returned to the pool and the video stream keeps flowing.

I haven&apos;t been able to reproduce the issue on desktop Linux because the software decoder used on this platform uses the regular allocator, which can provide a virtually unlimited amount of new buffers. There&apos;s no buffer pool to exhaust.

[1] https://github.com/WebKit/webkit/blob/9fced9a00615b3ee7a5ff82485e92440a1f4d030/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp#L677</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278208</commentid>
    <comment_count>1</comment_count>
      <attachid>301915</attachid>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2017-02-17 05:36:38 -0800</bug_when>
    <thetext>Created attachment 301915
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278240</commentid>
    <comment_count>2</comment_count>
      <attachid>301915</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-17 06:52:18 -0800</bug_when>
    <thetext>Comment on attachment 301915
Patch

Clearing flags on attachment: 301915

Committed r212549: &lt;http://trac.webkit.org/changeset/212549&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278241</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-17 06:52:21 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>301915</attachid>
            <date>2017-02-17 05:36:38 -0800</date>
            <delta_ts>2017-02-17 06:52:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-168505-20170217133359.patch</filename>
            <type>text/plain</type>
            <size>2829</size>
            <attacher name="Enrique Ocaña">eocanha</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEyMjgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjdkZjRkZTdmZjFlOWM2
ODQzNzk5NWExZWEwNmFjODRkODlmYzMxNS4uNGZiYjY3OGM3YjEyYTg5OGQ4MDE1ZWYzNjA0MTg2
NTliOTE3NWI4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE3LTAyLTE3ICBFbnJp
cXVlIE9jYcOxYSBHb256w6FsZXogIDxlb2NhbmhhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dT
dHJlYW1lcl0gRmFzdCByZXBsYXkgb24gdmlkZW8gaGlkZS91bmhpZGUgb24gcGxhdGZvcm1zIHdp
dGggbGltaXRlZCB2aWRlbyBidWZmZXIgcG9vbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2ODUwNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRoZSBXZWJLaXQgY29kZSBpc24ndCBjb25zdW1pbmcgdGhl
IHZpZGVvIHNhbXBsZXMgd2hlbiB0aGUgdmlkZW8gbGF5ZXIgaXMgaGlkZGVuLAorICAgICAgICBz
byB0aGUgYnVmZmVycyBhcmVuJ3QgYmVpbmcgcmV0dXJuZWQgdG8gdGhlIHBvb2wgYW5kIHN0YXJ2
ZSB0aGUgZGVjb2RlciB3aGVuIHRoZQorICAgICAgICBidWZmZXIgcG9vbCBydW5zIG91dCBvZiBi
dWZmZXJzIChvbiBwbGF0Zm9ybXMgdXNpbmcgYSBidWZmZXIgcG9vbCBhbmQgYSBjdXN0b20KKyAg
ICAgICAgYWxsb2NhdG9yLCBzdWNoIGFzIE9NWCBvbiB0aGUgUmFzcGJlcnJ5IFBpIDIpLiBXaGVu
IHRoZSB2aWRlbyBsYXllciBpcyByZXN0b3JlZCwKKyAgICAgICAgdGhlIHBpcGVsaW5lIHRyaWVz
IHRvIGNhdGNoIHVwIGFuZCB0aGUgdXNlciBzZWVzIHRoZSB2aWRlbyAiZ29pbmcgZmFzdCBmb3J3
YXJkIi4KKworICAgICAgICBUaGUgYWRkZWQgY29kZSAiY29uc3VtZXMiIChyZW1vdmVzIGFuZCB1
bnJlZnMpIHRoZSBidWZmZXIgaW4gdGhhdCBjYXNlLiBIb3dldmVyLAorICAgICAgICB0aGUgc2Ft
cGxlIGlzbid0IGNvbXBsZXRlbHkgcmVtb3ZlZCBiZWNhdXNlIGl0IHN0aWxsIGhvbGRzIGltcG9y
dGFudCBpbmZvIChlZzoKKyAgICAgICAgY2FwcykgbmVlZGVkIGZvciB0aGUgcHJvcGVyIG9wZXJh
dGlvbiBvZiB0aGUgdmlkZW8gZWxlbWVudC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnB1c2hUZXh0dXJlVG9D
b21wb3NpdG9yKToKKwogMjAxNy0wMi0xMyAgQW50b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJFR1JFU1NJT046IFVwZGF0ZSB2b2x1bWUgYW5kIHNjcnViYmluZyBz
bGlkZXIgdG8gbWF0Y2ggSEkgZGVzaWducwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCmluZGV4IGE3ZWRmODNmYTU4NzBkNjdhMDIyYzFm
NzQ4Y2ZhODU1MWEzOTc4MjEuLjdlY2I0ZTg1NTg1M2VlMzI2ZDcwZWM4YWNlZmY1YmZkMzY1MGUx
MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
QmFzZS5jcHAKQEAgLTY3NCw4ICs2NzQsMTYgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJCYXNlOjpwdXNoVGV4dHVyZVRvQ29tcG9zaXRvcigpCiAKICAgICBMb2NrSG9sZGVyIGhv
bGRlcihtX3BsYXRmb3JtTGF5ZXJQcm94eS0+bG9jaygpKTsKIAotICAgIGlmICghbV9wbGF0Zm9y
bUxheWVyUHJveHktPmlzQWN0aXZlKCkpCisgICAgaWYgKCFtX3BsYXRmb3JtTGF5ZXJQcm94eS0+
aXNBY3RpdmUoKSkgeworICAgICAgICAvLyBDb25zdW1lIHRoZSBidWZmZXIgKHNvIGl0IGdldHMg
ZXZlbnR1YWxseSB1bnJlZmZlZCkgYnV0IGtlZXAgdGhlIHJlc3Qgb2YgdGhlIGluZm8uCisgICAg
ICAgIGNvbnN0IEdzdFN0cnVjdHVyZSogaW5mbyA9IGdzdF9zYW1wbGVfZ2V0X2luZm8obV9zYW1w
bGUuZ2V0KCkpOworICAgICAgICBHc3RTdHJ1Y3R1cmUqIGluZm9Db3B5ID0gbnVsbHB0cjsKKyAg
ICAgICAgaWYgKGluZm8pCisgICAgICAgICAgICBpbmZvQ29weSA9IGdzdF9zdHJ1Y3R1cmVfY29w
eShpbmZvKTsKKyAgICAgICAgbV9zYW1wbGUgPSBhZG9wdEdSZWYoZ3N0X3NhbXBsZV9uZXcobnVs
bHB0ciwgZ3N0X3NhbXBsZV9nZXRfY2FwcyhtX3NhbXBsZS5nZXQoKSksCisgICAgICAgICAgICBn
c3Rfc2FtcGxlX2dldF9zZWdtZW50KG1fc2FtcGxlLmdldCgpKSwgaW5mb0NvcHkpKTsKICAgICAg
ICAgcmV0dXJuOworICAgIH0KIAogI2lmIFVTRShHU1RSRUFNRVJfR0wpCiAgICAgc3RkOjp1bmlx
dWVfcHRyPEdzdFZpZGVvRnJhbWVIb2xkZXI+IGZyYW1lSG9sZGVyID0gc3RkOjptYWtlX3VuaXF1
ZTxHc3RWaWRlb0ZyYW1lSG9sZGVyPihtX3NhbXBsZS5nZXQoKSwgdGV4TWFwRmxhZ0Zyb21Pcmll
bnRhdGlvbihtX3ZpZGVvU291cmNlT3JpZW50YXRpb24pKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>