BackendInterface Class Reference


Detailed Description

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;
 }
Author:
Matthias Kretz <kretz@kde.org>

Definition at line 168 of file backendinterface.h.

#include <Phonon/BackendInterface>

List of all members.

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

Member Enumeration Documentation

enum Class

Classes that the createObject function has to handle.

Enumerator:
MediaObjectClass 

Request to return a MediaObject object.

VolumeFaderEffectClass 

Request to return a VolumeFaderEffect object.

AudioOutputClass 

Request to return a AudioOutput object.

AudioDataOutputClass 

Request to return a AudioDataOutput object.

VisualizationClass 

Request to return a Visualization object.

VideoDataOutputClass 

Request to return a VideoDataOutput object.

EffectClass 

Request to return a Effect object.

Takes an additional int that specifies the effect Id.

VideoWidgetClass 

Request to return a VideoWidget object.

Definition at line 181 of file backendinterface.h.


Constructor & Destructor Documentation

virtual ~BackendInterface ( ) [inline, virtual]

Silence gcc's warning.

Definition at line 176 of file backendinterface.h.

{}

Member Function Documentation

virtual QObject* createObject ( Class  c,
QObject parent,
const QList< QVariant > &  args = QListQVariant >() 
) [pure virtual]

Returns a new instance of the requested class.

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

Parameters:
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 do
  • icon: 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.
Parameters:
type see ObjectDescriptionType
index The unique identifier that is returned from objectDescriptionIndexes
virtual bool startConnectionChange ( QSet< QObject * >  ) [pure virtual]

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  
) [pure virtual]

Defines a signal connection between the two given nodes.

virtual bool disconnectNodes ( QObject ,
QObject  
) [pure virtual]

Cuts a signal connection between the two given nodes.

virtual bool endConnectionChange ( QSet< QObject * >  ) [pure virtual]

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


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

BackendInterface BackendInterface BackendInterface BackendInterface BackendInterface BackendInterface BackendInterface BackendInterface BackendInterface BackendInterface
BackendInterface BackendInterface BackendInterface BackendInterface BackendInterface BackendInterface BackendInterface BackendInterface BackendInterface BackendInterface