<?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>303001</bug_id>
          
          <creation_ts>2025-11-22 00:54:27 -0800</creation_ts>
          <short_desc>AudioVideoRenderer will constantly request for more data even if earlier request not serviced.</short_desc>
          <delta_ts>2025-11-22 21:56:13 -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 Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=303017</see_also>
          <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="Jean-Yves Avenard [:jya]">jean-yves.avenard</reporter>
          <assigned_to name="Jean-Yves Avenard [:jya]">jean-yves.avenard</assigned_to>
          <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>2160818</commentid>
    <comment_count>0</comment_count>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2025-11-22 00:54:27 -0800</bug_when>
    <thetext>When you call AudioVideoRenderer::requestMediaDataWhenReady()

the callback can be called, under some circumstances infinitely such as when debugging the process 

the API contract should be changed where the AudioVideoRenderer only calls once the callback, and remove the need to call `AudioVideoRenderer::stopRequestingMediaData` each time.

The API contract should be:
if AudioVideoRenderer::isReadyForMoreSamples returns false,
then you call AudioVideoRenderer::requestMediaDataWhenReady() once.

The AudioVideoRenderer will only call the callback once, and will not do so again until `AudioVideoRenderer::requestMediaDataWhenReady` is called again.

The AudioVideoRenderer API mimicked the AVSampleBufferDisplayLayer and AVSampleBufferAudioRenderer which requires you to call `stopRequestingMediaData` ; but when used over IPC, the request to cancel may not come quickly enough, and the AVSampleBufferAudioRenderer will call the callback repeatedly leading to massive memory usage as a new IPC message is created but never serviced (if the web process is suspended)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2160819</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2025-11-22 00:54:34 -0800</bug_when>
    <thetext>&lt;rdar://problem/165259808&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2160873</commentid>
    <comment_count>2</comment_count>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2025-11-22 14:02:22 -0800</bug_when>
    <thetext>Pull request: https://github.com/WebKit/WebKit/pull/54374</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2160902</commentid>
    <comment_count>3</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2025-11-22 21:56:12 -0800</bug_when>
    <thetext>Committed 303456@main (2a2382187dbc): &lt;https://commits.webkit.org/303456@main&gt;

Reviewed commits have been landed. Closing PR #54374 and removing active labels.</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>