Main Backend class interface.
This interface defines the main factory of the backend. The createObject function creates all the objects needed by the frontend.
The objectDescriptionIndexes and objectDescriptionProperties functions return information about available devices, effects and codecs.
An implementation could look like this:
QObject *Backend::createObject(BackendInterface::Class c, QObject *parent, const QList<QVariant> &args) { switch (c) { case MediaObjectClass: return new MediaObject(parent); case VolumeFaderEffectClass: return new VolumeFaderEffect(parent); case AudioOutputClass: return new AudioOutput(parent); case AudioDataOutputClass: return new AudioDataOutput(parent); case VisualizationClass: return new Visualization(parent); case VideoDataOutputClass: return new VideoDataOutput(parent); case EffectClass: return new Effect(args[0].toInt(), parent); case VideoWidgetClass: return new VideoWidget(qobject_cast<QWidget *>(parent)); } return 0; } QSet<int> Backend::objectDescriptionIndexes(ObjectDescriptionType type) const { QSet<int> set; switch(type) { case Phonon::AudioOutputDeviceType: // use AudioDeviceEnumerator to list ALSA and OSS devices set << 10000 << 10001; break; case Phonon::AudioCaptureDeviceType: set << 20000 << 20001; break; case Phonon::VideoOutputDeviceType: break; case Phonon::VideoCaptureDeviceType: set << 30000 << 30001; break; case Phonon::VisualizationType: case Phonon::AudioCodecType: case Phonon::VideoCodecType: case Phonon::ContainerFormatType: break; case Phonon::EffectType: set << 0x7F000001; break; } return set; } QHash<QByteArray, QVariant> Backend::objectDescriptionProperties(ObjectDescriptionType type, int index) const { QHash<QByteArray, QVariant> ret; switch (type) { case Phonon::AudioOutputDeviceType: switch (index) { case 10000: ret.insert("name", QLatin1String("internal Soundcard")); break; case 10001: ret.insert("name", QLatin1String("USB Headset")); ret.insert("icon", KIcon("usb-headset")); ret.insert("available", false); break; } break; case Phonon::AudioCaptureDeviceType: switch (index) { case 20000: ret.insert("name", QLatin1String("Soundcard")); ret.insert("description", QLatin1String("first description")); break; case 20001: ret.insert("name", QLatin1String("DV")); ret.insert("description", QLatin1String("second description")); break; } break; case Phonon::VideoOutputDeviceType: break; case Phonon::VideoCaptureDeviceType: switch (index) { case 30000: ret.insert("name", QLatin1String("USB Webcam")); ret.insert("description", QLatin1String("first description")); break; case 30001: ret.insert("name", QLatin1String("DV")); ret.insert("description", QLatin1String("second description")); break; } break; case Phonon::VisualizationType: break; case Phonon::AudioCodecType: break; case Phonon::VideoCodecType: break; case Phonon::ContainerFormatType: break; case Phonon::EffectType: switch (index) { case 0x7F000001: ret.insert("name", QLatin1String("Delay")); ret.insert("description", QLatin1String("Simple delay effect with time, feedback and level controls.")); break; } break; } return ret; }
Definition at line 168 of file backendinterface.h.
#include <Phonon/BackendInterface>
Public Types |
|
| enum |
Class { MediaObjectClass, VolumeFaderEffectClass, AudioOutputClass, AudioDataOutputClass, VisualizationClass, VideoDataOutputClass, EffectClass, VideoWidgetClass } |
|
Classes that the createObject function has to handle. More... |
|
Public Member Functions |
|
| virtual | ~BackendInterface () |
| virtual QObject * | createObject (Class c, QObject *parent, const QList< QVariant > &args=QList< QVariant >())=0 |
| Returns a new instance of the requested
class. |
|
| virtual QList< int > | objectDescriptionIndexes (ObjectDescriptionType type) const =0 |
Returns the unique identifiers for the
devices/effects/codecs of the given type. |
|
| virtual
QHash< QByteArray, QVariant > |
objectDescriptionProperties (ObjectDescriptionType type, int index) const =0 |
| Given a unique identifier that was returned
from objectDescriptionIndexes this function returns a hash mapping
property names to values. |
|
| virtual bool | startConnectionChange (QSet< QObject * >)=0 |
| When this function is called the nodes given
in the parameter list should not lose any signal data when
connections are changed. |
|
| virtual bool | connectNodes (QObject *, QObject *)=0 |
| Defines a signal connection between the two
given nodes. |
|
| virtual bool | disconnectNodes (QObject *, QObject *)=0 |
| Cuts a signal connection between the two
given nodes. |
|
| virtual bool | endConnectionChange (QSet< QObject * >)=0 |
| When this function is called the nodes given
in the parameter list may lose signal data when a port is not
connected. |
|
| virtual QStringList | availableMimeTypes () const =0 |
| gets all available mime types |
|
| enum Class |
Classes that the createObject function has to handle.
Definition at line 181 of file backendinterface.h.
| virtual ~BackendInterface | ( | ) | [inline, virtual] |
| virtual QObject* createObject | ( | Class | c, |
| QObject * | parent, | ||
| const QList< QVariant > & | args = QList< QVariant >() |
||
| ) | [pure virtual] |
Returns a new instance of the requested class.
| c | The requested class. |
| parent | The parent object. |
| args | Additional arguments (documented in Class). |
| virtual QList<int> objectDescriptionIndexes | ( | ObjectDescriptionType | type | ) | const [pure virtual] |
Returns the unique identifiers for the devices/effects/codecs of
the given type.
| type | see ObjectDescriptionType |
| virtual QHash<QByteArray, QVariant> objectDescriptionProperties | ( | ObjectDescriptionType | type, |
| int | index | ||
| ) | const [pure virtual] |
Given a unique identifier that was returned from objectDescriptionIndexes this function returns a hash mapping property names to values.
The property "name" must always be present. All other properties are optional.
List of possible properties:
name: The name of the
device/effect/codec/...description: A text explaining what this
device/effect/codec/... is/can doicon: An icon name (using the freedesktop
naming scheme) or a QIcon for this device/effect/codec/...available: A bool telling whether the
device is present or unplugged.| type | see ObjectDescriptionType |
| index | The unique identifier that is returned from objectDescriptionIndexes |
When this function is called the nodes given in the parameter list should not lose any signal data when connections are changed.
Defines a signal connection between the two given nodes.
Cuts a signal connection between the two given nodes.
When this function is called the nodes given in the parameter list may lose signal data when a port is not connected.
| virtual QStringList availableMimeTypes | ( | ) | const [pure virtual] |
gets all available mime types