• Skip to content
  • Skip to link menu
KDE 4.0 API Reference
  • KDE API Reference
  • kdelibs
  • Sitemap
  • Contact Us
 

Phonon

  • Phonon
  • AbstractMediaStream
Protected Member Functions

AbstractMediaStream Class Reference
[Playback]

Base class for custom media data streams. More...

#include <Phonon/AbstractMediaStream>

Inheritance diagram for AbstractMediaStream:
Inheritance graph
[legend]

List of all members.

Protected Member Functions

 AbstractMediaStream (QObject *parent=0)
qint64 streamSize () const
void setStreamSize (qint64)
bool streamSeekable () const
void setStreamSeekable (bool)
void writeData (const QByteArray &data)
void endOfData ()
void error (Phonon::ErrorType errorType, const QString &errorString)
virtual void reset ()=0
virtual void needData ()=0
virtual void enoughData ()
virtual void seekStream (qint64 offset)

Detailed Description

Base class for custom media data streams.

Implement this class to provide a custom data stream to the backend. The class supports both, the push and the pull model.

Push:

 PushStream::PushStream(QObject *parent)
   : AbstractMediaStream(parent), m_timer(new QTimer(this))
 {
   setStreamSize(getMediaStreamSize());

   connect(m_timer, SIGNAL(timeout()), SLOT(moreData()));
   m_timer->setInterval(0);
 }

 void PushStream::moreData()
 {
   const QByteArray data = getMediaData();
   if (data.isEmpty()) {
     endOfData();
   } else {
     writeData(data);
   }
 }

 void PushStream::needData()
 {
   m_timer->start();
   moreData();
 }

 void PushStream::enoughData()
 {
   m_timer->stop();
 }

Pull:

 PullStream::PullStream(QObject *parent)
   : AbstractMediaStream(parent)
 {
   setStreamSize(getMediaStreamSize());
 }

 void PullStream::needData()
 {
   const QByteArray data = getMediaData();
   if (data.isEmpty()) {
     endOfData();
   } else {
     writeData(data);
   }
 }
Author:
Matthias Kretz <kretz@kde.org>

Constructor & Destructor Documentation

AbstractMediaStream ( QObject *  parent = 0  )  [explicit, protected]

Constructs an AbstractMediaStream object with a parent.


Member Function Documentation

void endOfData (  )  [protected]

Tells the backend that the media data stream is at its end.

Warning:
Don't call this function before the first needData() is emitted.
virtual void enoughData (  )  [protected, virtual]

Reimplement this function to be notified when the backend has enough data and your stream object may take a break.

This method is important for pushing data to the backend in order to not fill the backend buffer unnecessarily.

void error ( Phonon::ErrorType  errorType,
const QString &  errorString 
) [protected]

If an I/O error occurs you should call this function to make MediaObject go into ErrorState.

See also:
MediaObject::errorType()
MediaObject::errorString()
virtual void needData (  )  [protected, pure virtual]

Reimplement this function to be notified when the backend needs data.

When this function is called you should try to call writeData or endOfData before returning.

virtual void reset (  )  [protected, pure virtual]

Reimplement this function to reset the stream.

Subsequent calls to writeData should start from the first position of the data unless a seek is requested.

The function is necessary for the case where a non-seekable MediaStream is played more than once. For a seekable stream the implementation can simply call

 seekStream(0);

.

virtual void seekStream ( qint64  offset  )  [protected, virtual]

Reimplement this function if your stream is seekable.

When this function is called the next call to writeData has to be at the requested offset.

Warning:
Do not call the parent implementation.
void setStreamSeekable ( bool   )  [protected]

Sets whether your data stream is seekable.

Defaults to false.

If you set this to true you have to implement the seekStream function.

void setStreamSize ( qint64   )  [protected]

Sets the size of the stream in number of bytes.

A negative value means that the length of the stream cannot be known.

Defaults to 0.

This function has to be called. A backend will not call needData() until the stream size is set.

bool streamSeekable (  )  const [protected]

Returns whether your data stream is set as seekable.

Defaults to false.

qint64 streamSize (  )  const [protected]

Returns the stream size that was set with setStreamSize.

A negative value means that the length of the stream cannot be known.

Defaults to 0.

void writeData ( const QByteArray &  data  )  [protected]

Sends the media data to the backend for decoding.

Warning:
Don't call this function before the first needData() is emitted.

The documentation for this class was generated from the following file:
  • abstractmediastream.h

Phonon

Skip menu "Phonon"
  • Main Page
  • Modules
  • Namespace List
  • Class Hierarchy
  • Alphabetical List
  • Class List
  • Namespace Members
  • Class Members
  • Related Pages

kdelibs

Skip menu "kdelibs"
  • DNSSD
  • Interfaces
  •   KHexEdit
  •   KMediaPlayer
  •   KSpeech
  •   KTextEditor
  • Kate
  • kconf_update
  • KDE3Support
  •   KUnitTest
  • KDECore
  • KDED
  • KDEsu
  • KDEUI
  • KDocTools
  • KFile
  • KHTML
  • KImgIO
  • KInit
  • KIO
  • KIOSlave
  • KJS
  • KJSEmbed
  •   WTF
  • KNewStuff
  • KParts
  • Kross
  • KUtils
  • Nepomuk
  •   core
  • Phonon
  •   Backend
  • Solid
  • Sonnet
  • ThreadWeaver
Generated for kdelibs by doxygen 1.7.1
This website is maintained by Adriaan de Groot and Allen Winter.
KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal