AbstractMediaStream Class Reference

AbstractMediaStream Class Referenceabstract

#include <Phonon/AbstractMediaStream>

Class 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)
{
setStreamSize(getMediaStreamSize());
}
void PullStream::needData()
{
const QByteArray data = getMediaData();
if (data.isEmpty()) {
endOfData();
} else {
writeData(data);
}
}
Author
Matthias Kretz kretz.nosp@m.@kde.nosp@m..org

Definition at line 103 of file abstractmediastream.h.

+ Inheritance diagram for AbstractMediaStream:

Public Member Functions

virtual ~AbstractMediaStream ()
 
- Public Member Functions inherited from QObject
Q_INVOKABLE QObject (QObject *parent=0)
 
virtual ~QObject ()
 
virtual bool event (QEvent *)
 
virtual bool eventFilter (QObject *, QEvent *)
 
QString objectName () const
 
void setObjectName (const QString &name)
 
bool isWidgetType () const
 
bool signalsBlocked () const
 
bool blockSignals (bool b)
 
QThreadthread () const
 
void moveToThread (QThread *thread)
 
int startTimer (int interval)
 
void killTimer (int id)
 
template<typename T >
findChild (const QString &aName=QString()) const
 
template<typename T >
QList< T > findChildren (const QString &aName=QString()) const
 
template<typename T >
QList< T > findChildren (const QRegExp &re) const
 
const QObjectListchildren () const
 
void setParent (QObject *)
 
void installEventFilter (QObject *)
 
void removeEventFilter (QObject *)
 
bool connect (const QObject *sender, const char *signal, const char *member, Qt::ConnectionType type=Qt::AutoConnection) const
 
bool disconnect (const char *signal=0, const QObject *receiver=0, const char *member=0)
 
bool disconnect (const QObject *receiver, const char *member=0)
 
void dumpObjectTree ()
 
void dumpObjectInfo ()
 
bool setProperty (const char *name, const QVariant &value)
 
QVariant property (const char *name) const
 
QList< QByteArraydynamicPropertyNames () const
 
void setUserData (uint id, QObjectUserData *data)
 
QObjectUserDatauserData (uint id) const
 
QObjectparent () const
 
bool inherits (const char *classname) const
 

Protected Member Functions

 AbstractMediaStream (QObject *parent=0)
 Constructs an AbstractMediaStream object with a parent. More...
 
qint64 streamSize () const
 Returns the stream size that was set with setStreamSize. More...
 
void setStreamSize (qint64)
 Sets the size of the stream in number of bytes. More...
 
bool streamSeekable () const
 Returns whether your data stream is set as seekable. More...
 
void setStreamSeekable (bool)
 Sets whether your data stream is seekable. More...
 
void writeData (const QByteArray &data)
 Sends the media data to the backend for decoding. More...
 
void endOfData ()
 Tells the backend that the media data stream is at its end. More...
 
void error (Phonon::ErrorType errorType, const QString &errorString)
 If an I/O error occurs you should call this function to make MediaObject go into ErrorState. More...
 
virtual void reset ()=0
 Reimplement this function to reset the stream. More...
 
virtual void needData ()=0
 Reimplement this function to be notified when the backend needs data. More...
 
virtual void enoughData ()
 Reimplement this function to be notified when the backend has enough data and your stream object may take a break. More...
 
virtual void seekStream (qint64 offset)
 Reimplement this function if your stream is seekable. More...
 
 AbstractMediaStream (AbstractMediaStreamPrivate &dd, QObject *parent)
 
- Protected Member Functions inherited from QObject
QObjectsender () const
 
int senderSignalIndex () const
 
int receivers (const char *signal) const
 
virtual void timerEvent (QTimerEvent *)
 
virtual void childEvent (QChildEvent *)
 
virtual void customEvent (QEvent *)
 
virtual void connectNotify (const char *signal)
 
virtual void disconnectNotify (const char *signal)
 
 QObject (QObjectPrivate &dd, QObject *parent=0)
 

Protected Attributes

QScopedPointer< AbstractMediaStreamPrivate > d_ptr
 
- Protected Attributes inherited from QObject
QScopedPointer< QObjectDatad_ptr
 

Friends

class MediaObject
 
class MediaObjectPrivate
 
class StreamInterface
 

Additional Inherited Members

- Public Slots inherited from QObject
void deleteLater ()
 
- Signals inherited from QObject
void destroyed (QObject *=0)
 
- Static Public Member Functions inherited from QObject
static bool connect (const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType=Qt::AutoConnection)
 
static bool connect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method, Qt::ConnectionType type=Qt::AutoConnection)
 
static bool disconnect (const QObject *sender, const char *signal, const QObject *receiver, const char *member)
 
static bool disconnect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &member)
 
static uint registerUserData ()
 
- Static Protected Attributes inherited from QObject
static const QMetaObject staticQtMetaObject
 
- Properties inherited from QObject
QString objectName
 

Constructor & Destructor Documentation

virtual ~AbstractMediaStream ( )
virtual
AbstractMediaStream ( QObject parent = 0)
explicitprotected

Constructs an AbstractMediaStream object with a parent.

AbstractMediaStream ( AbstractMediaStreamPrivate &  dd,
QObject parent 
)
protected

Member Function Documentation

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 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.

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 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.
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.
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 reset ( )
protectedpure 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

.

virtual void needData ( )
protectedpure 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 enoughData ( )
protectedvirtual

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.

virtual void seekStream ( qint64  offset)
protectedvirtual

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.

Friends And Related Function Documentation

friend class MediaObject
friend

Definition at line 107 of file abstractmediastream.h.

friend class MediaObjectPrivate
friend

Definition at line 108 of file abstractmediastream.h.

friend class StreamInterface
friend

Definition at line 109 of file abstractmediastream.h.

Member Data Documentation

QScopedPointer<AbstractMediaStreamPrivate> d_ptr
protected

Definition at line 217 of file abstractmediastream.h.


The documentation for this class was generated from the following file: