<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <head> <title>Phonon.StreamInterface</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Style-Type" content="text/css" /> <link rel="stylesheet" type="text/css" href="../common/doxygen.css" /> <link rel="stylesheet" media="screen" type="text/css" title="KDE Colors" href="../common/kde.css" /> </head> <body> <div id="container"> <div id="header"> <div id="header_top"> <div> <div> <img alt ="" src="../common/top-kde.jpg"/> KDE 4.4 PyKDE API Reference </div> </div> </div> <div id="header_bottom"> <div id="location"> <ul> <li>KDE's Python API</li> </ul> </div> <div id="menu"> <ul> <li><a href="../modules.html">Overview</a></li> <li><a href="http://techbase.kde.org/Development/Languages/Python">PyKDE Home</a></li> <li><a href="http://kde.org/family/">Sitemap</a></li> <li><a href="http://kde.org/contact/">Contact Us</a></li> </ul> </div> </div> </div> <div id="body_wrapper"> <div id="body"> <div id="right"> <div class="content"> <div id="main"> <div class="clearer"> </div> <h1>StreamInterface Class Reference</h1> <code>from PyKDE4.phonon import *</code> <p> Namespace: Phonon.StreamInterface<br /> <h2>Detailed Description</h2> <dl class="abstract" compact><dt><b>Abstract class:</b></dt> <dd>This class can be used as a base class for new classes, but can not be instantiated directly.</dd></dl> <p>\class StreamInterface streaminterface.h Phonon/StreamInterface Backend interface to handle media streams (AbstractMediaStream). </p> <p> <dl class="author" compact><dt><b>Author:</b></dt><dd> Matthias Kretz <kretz@kde.org> </dd></dl> </p> <table border="0" cellpadding="0" cellspacing="0"><tr><td colspan="2"><br><h2>Methods</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="#StreamInterface">__init__</a> (self)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="#connectToSource">connectToSource</a> (self, <a href="../phonon/Phonon.MediaSource.html">Phonon.MediaSource</a> mediaSource)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="#endOfData">endOfData</a> (self)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="#enoughData">enoughData</a> (self)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="#needData">needData</a> (self)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="#reset">reset</a> (self)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="#seekStream">seekStream</a> (self, long seekTo)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="#setStreamSeekable">setStreamSeekable</a> (self, bool s)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="#setStreamSize">setStreamSize</a> (self, long newSize)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="#writeData">writeData</a> (self, <a href="http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/qbytearray.html">QByteArray</a> data)</td></tr> </table> <hr><h2>Method Documentation</h2><a class="anchor" name="StreamInterface"></a> <div class="memitem"> <div class="memproto"> <table class="memname"><tr> <td class="memname">__init__</td> <td>(</td> <td class="paramtype"> </td> <td class="paramname"><em>self</em> )</td> <td width="100%"> </td> </tr> </table> </div> <div class="memdoc"></div></div><a class="anchor" name="connectToSource"></a> <div class="memitem"> <div class="memproto"> <table class="memname"><tr> <td class="memname"> connectToSource</td> <td>(</td> <td class="paramtype"> <em>self</em>, </td> <td class="paramname"></td> </tr><tr> <td class="memname"></td> <td></td> <td class="paramtype"><a href="../phonon/Phonon.MediaSource.html">Phonon.MediaSource</a> </td> <td class="paramname"><em>mediaSource</em></td> </tr> <tr> <td></td> <td>)</td> <td></td> <td></td> <td width="100%"> </td> </tr></table> </div> <div class="memdoc"><p>Call this function from the constructor of your StreamInterface implementation (or as soon as you get the MediaSource object). This will connect your object to the AbstractMediaStream object. Only after the connection is done will the following functions have an effect. </p></div></div><a class="anchor" name="endOfData"></a> <div class="memitem"> <div class="memproto"> <table class="memname"><tr> <td class="memname"> endOfData</td> <td>(</td> <td class="paramtype"> </td> <td class="paramname"><em>self</em> )</td> <td width="100%"> </td> </tr> </table> </div> <div class="memdoc"><dl compact><dt><b>Abstract method:</b></dt><dd>This method is abstract and can be overridden but not called directly.</dd></dl><p>Called when no more media data is available and writeData will not be called anymore. </p></div></div><a class="anchor" name="enoughData"></a> <div class="memitem"> <div class="memproto"> <table class="memname"><tr> <td class="memname"> enoughData</td> <td>(</td> <td class="paramtype"> </td> <td class="paramname"><em>self</em> )</td> <td width="100%"> </td> </tr> </table> </div> <div class="memdoc"><p>Call this function to tell the AbstractMediaStream that you have enough data in your buffer and that it should pause calling writeData if possible. </p></div></div><a class="anchor" name="needData"></a> <div class="memitem"> <div class="memproto"> <table class="memname"><tr> <td class="memname"> needData</td> <td>(</td> <td class="paramtype"> </td> <td class="paramname"><em>self</em> )</td> <td width="100%"> </td> </tr> </table> </div> <div class="memdoc"><p>Call this function to tell the AbstractMediaStream that you need more data. The data will arrive through writeData. Don't rely on writeData getting called from needData, though some AbstractMediaStream implementations might do so. </p> <p> Depending on the buffering you need you either treat needData as a replacement for a read call like QIODevice.read, or you start calling needData whenever your buffer reaches a certain lower threshold. </p></div></div><a class="anchor" name="reset"></a> <div class="memitem"> <div class="memproto"> <table class="memname"><tr> <td class="memname"> reset</td> <td>(</td> <td class="paramtype"> </td> <td class="paramname"><em>self</em> )</td> <td width="100%"> </td> </tr> </table> </div> <div class="memdoc"><p>Resets the AbstractMediaStream. E.g. this can be useful for non-seekable streams to start over again. </p></div></div><a class="anchor" name="seekStream"></a> <div class="memitem"> <div class="memproto"> <table class="memname"><tr> <td class="memname"> seekStream</td> <td>(</td> <td class="paramtype"> <em>self</em>, </td> <td class="paramname"></td> </tr><tr> <td class="memname"></td> <td></td> <td class="paramtype">long </td> <td class="paramname"><em>seekTo</em></td> </tr> <tr> <td></td> <td>)</td> <td></td> <td></td> <td width="100%"> </td> </tr></table> </div> <div class="memdoc"><p>If the stream is seekable, calling this function will make the next call to writeData pass data that starts at the byte offset <b>seekTo.</b> </p></div></div><a class="anchor" name="setStreamSeekable"></a> <div class="memitem"> <div class="memproto"> <table class="memname"><tr> <td class="memname"> setStreamSeekable</td> <td>(</td> <td class="paramtype"> <em>self</em>, </td> <td class="paramname"></td> </tr><tr> <td class="memname"></td> <td></td> <td class="paramtype">bool </td> <td class="paramname"><em>s</em></td> </tr> <tr> <td></td> <td>)</td> <td></td> <td></td> <td width="100%"> </td> </tr></table> </div> <div class="memdoc"><dl compact><dt><b>Abstract method:</b></dt><dd>This method is abstract and can be overridden but not called directly.</dd></dl><p>Tells whether the stream is seekable. </p></div></div><a class="anchor" name="setStreamSize"></a> <div class="memitem"> <div class="memproto"> <table class="memname"><tr> <td class="memname"> setStreamSize</td> <td>(</td> <td class="paramtype"> <em>self</em>, </td> <td class="paramname"></td> </tr><tr> <td class="memname"></td> <td></td> <td class="paramtype">long </td> <td class="paramname"><em>newSize</em></td> </tr> <tr> <td></td> <td>)</td> <td></td> <td></td> <td width="100%"> </td> </tr></table> </div> <div class="memdoc"><dl compact><dt><b>Abstract method:</b></dt><dd>This method is abstract and can be overridden but not called directly.</dd></dl><p>Called at the start of the stream to tell how many bytes will be sent through writeData (if no seeks happen, of course). If this value is negative the stream size cannot be determined (might be a "theoretically infinite" stream - like webradio). </p></div></div><a class="anchor" name="writeData"></a> <div class="memitem"> <div class="memproto"> <table class="memname"><tr> <td class="memname"> writeData</td> <td>(</td> <td class="paramtype"> <em>self</em>, </td> <td class="paramname"></td> </tr><tr> <td class="memname"></td> <td></td> <td class="paramtype"><a href="http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/qbytearray.html">QByteArray</a> </td> <td class="paramname"><em>data</em></td> </tr> <tr> <td></td> <td>)</td> <td></td> <td></td> <td width="100%"> </td> </tr></table> </div> <div class="memdoc"><dl compact><dt><b>Abstract method:</b></dt><dd>This method is abstract and can be overridden but not called directly.</dd></dl><p>Called by the application to send a chunk of (encoded) media data. </p> <p> It is recommended to keep the QByteArray object until the data is consumed so that no memcopy is needed. </p></div></div> </div> </div> </div> <div id="left"> <div class="menu_box"> <div class="nav_list"> <ul> <li><a href="../allclasses.html">Full Index</a></li> </ul> </div> <a name="cp-menu" /><div class="menutitle"><div> <h2 id="cp-menu-project">Modules</h2> </div></div> <div class="nav_list"> <ul><li><a href="../akonadi/index.html">akonadi</a></li> <li><a href="../dnssd/index.html">dnssd</a></li> <li><a href="../kdecore/index.html">kdecore</a></li> <li><a href="../kdeui/index.html">kdeui</a></li> <li><a href="../khtml/index.html">khtml</a></li> <li><a href="../kio/index.html">kio</a></li> <li><a href="../knewstuff/index.html">knewstuff</a></li> <li><a href="../kparts/index.html">kparts</a></li> <li><a href="../kutils/index.html">kutils</a></li> <li><a href="../nepomuk/index.html">nepomuk</a></li> <li><a href="../phonon/index.html">phonon</a></li> <li><a href="../plasma/index.html">plasma</a></li> <li><a href="../polkitqt/index.html">polkitqt</a></li> <li><a href="../solid/index.html">solid</a></li> <li><a href="../soprano/index.html">soprano</a></li> </ul></div></div> </div> </div> <div class="clearer"/> </div> <div id="end_body"></div> </div> <div id="footer"><div id="footer_text"> This documentation is maintained by <a href="mailto:simon@simonzone.com">Simon Edwards</a>.<br /> KDE<sup>®</sup> and <a href="../images/kde_gear_black.png">the K Desktop Environment<sup>®</sup> logo</a> are registered trademarks of <a href="http://ev.kde.org/" title="Homepage of the KDE non-profit Organization">KDE e.V.</a> | <a href="http://www.kde.org/contact/impressum.php">Legal</a> </div></div> </body> </html>