/*+ −
This file is part of the KDE project+ −
Copyright (C) 2005-2007 Matthias Kretz <kretz@kde.org>+ −
Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).+ −
Contact: Nokia Corporation (qt-info@nokia.com)+ −
+ −
This library is free software; you can redistribute it and/or+ −
modify it under the terms of the GNU Library General Public+ −
License version 2 as published by the Free Software Foundation.+ −
+ −
This library is distributed in the hope that it will be useful,+ −
but WITHOUT ANY WARRANTY; without even the implied warranty of+ −
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU+ −
Library General Public License for more details.+ −
+ −
You should have received a copy of the GNU Library General Public License+ −
along with this library; see the file COPYING.LIB. If not, write to+ −
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,+ −
Boston, MA 02110-1301, USA.+ −
*/+ −
+ −
+ −
/*!+ −
\enum Phonon::DiscType+ −
Enum to identify the media discs supported by MediaObject.+ −
+ −
\value NoDisc+ −
No disc was selected. This is only useful as a return value from+ −
MediaSource::diskType().+ −
\value Cd Identifies Audio CDs.+ −
\value Dvd Identifies DVDs (not arbitrary data DVDs, only movie DVDs).+ −
\value Vcd Identifies Video CDs.+ −
+ −
\sa MediaSource, MediaObject+ −
*/+ −
+ −
/*!+ −
\enum Phonon::MetaData+ −
+ −
Provided as keys for Phonon::MediaObject::metaData(). The enum+ −
values matches strings defined in the Ogg Vorbis specification+ −
+ −
\value ArtistMetaData+ −
\value AlbumMetaData+ −
\value TitleMetaData+ −
\value DateMetaData+ −
\value GenreMetaData+ −
\value TracknumberMetaData+ −
\value DescriptionMetaData+ −
\value MusicBrainzDiscIdMetaData+ −
*/+ −
+ −
/*!+ −
\enum Phonon::State+ −
\since 4.4+ −
+ −
The state enum describes the different states a media object can+ −
take. Several functions of \l{Phonon::}{MediaObject} are+ −
asynchronous, so even if a you have requested a state change+ −
through a function call, e.g., through+ −
\l{Phonon::MediaObject::}{play()}, you cannot be sure that the+ −
change has taken place before you receive the+ −
\l{Phonon::MediaObject::}{stateChanged()} signal.+ −
+ −
A media object can at any time change into any state, regardless+ −
of the state it previously had. \omit In the+ −
\l{Phonon::}{MediaObject} class description explains the typical+ −
state changes in the life of a media object. \endomit+ −
+ −
\value LoadingState+ −
After construction it might take a while before the media object+ −
is ready to \l{Phonon::MediaObject::}{play()}. This state is+ −
commonly used by backends to initialize the \l{Phonon+ −
Overview}{media graph} and loading the source. When+ −
the object leaves the loading state, it will enter the+ −
StoppedState unless an error occurred or another state is+ −
requested through a function call, e.g.,+ −
\l{Phonon::}{MediaObject::play()}.+ −
+ −
\value StoppedState+ −
In the stopped state, the media object is ready to play its+ −
current media source. The current+ −
\l{MediaObject::seek()}{position} in the media stream is then 0.+ −
+ −
\value PlayingState+ −
The media object is playing back its media source.+ −
+ −
\value BufferingState+ −
The Player is waiting for data to be able to start or continue+ −
playing. This state is commonly used to wait for media data over a+ −
network connection.+ −
+ −
\value PausedState+ −
The media player has currently paused its playback, i.e., it+ −
stops playing but keeps the current playback position in the+ −
stream.+ −
+ −
\value ErrorState+ −
When a media object enters the error state a problem with the+ −
playback has occurred. The possible errors are grouped into+ −
two categories by Phonon::ErrorType, and the type can be+ −
queried through \l{Phonon::MediaObject::}{errorType()}. A+ −
\l{Phonon::}{FatalError} implies that the playback+ −
cannot continue, but one can still try with a new media+ −
source. With a \l{Phonon::}{NormalError} it might+ −
be possible to continue playback, and a media object may+ −
therefore change state from the ErrorState.+ −
+ −
\sa MediaObject+ −
*/+ −
+ −
/*!+ −
\enum Phonon::Category+ −
+ −
Sets the category your program should be listed in in the mixer.+ −
+ −
\value NoCategory+ −
Will make use of the default device.+ −
\value NotificationCategory+ −
If the sounds produced are notifications (ping, beep and such) you+ −
should use this category.+ −
\value MusicCategory+ −
If your application is a music player (like a jukebox or media player+ −
playing an audio file).+ −
\value VideoCategory+ −
If the sound is the audio channel of a video.+ −
\value CommunicationCategory+ −
If your applications produces sounds from communication with somebody+ −
else (VoIP, voice chat).+ −
\value GameCategory+ −
Sound produced by a computer game should go into this category.+ −
\value AccessibilityCategory+ −
Sounds produced for accessibility (e.g., Text-To-Speech)+ −
\omitvalue LastCategory+ −
Holds the largest value of categories.+ −
\omitvalue AccessibilityCategory+ −
+ −
A Jukebox will set this to Music, a VoIP program to Communication, a+ −
DVD player to video, and so on.+ −
+ −
\note These categories can also become useful for an application that+ −
controls the volumes automatically, like turning down the music when a call+ −
comes in, or turning down the notifications when the media player knows+ −
it's playing classical music.+ −
*/+ −
+ −
/*!+ −
\enum Phonon::ErrorType+ −
+ −
This enum describes the severity when an error has occurred during+ −
playback.+ −
+ −
After a media object has entered the \l{Phonon::}{ErrorState}, one+ −
can query the type of error from+ −
\l{Phonon::}{MediaObject::errorType()}. Note that you should query+ −
the error when receiving the+ −
\l{Phonon::}{MediaObject::stateChanged()} signal, because the+ −
error type will be lost if the media object leaves the error+ −
state. + −
+ −
\value NoError No error. MediaObject::errorType() returns this if+ −
MediaObject::state() != Phonon::ErrorState.+ −
+ −
\value NormalError An error has occurred with the playback of the current+ −
source. It might be possible to continue playback, for instance, if only the+ −
audio stream in a video cannot be played back. The media object will then+ −
leave the error state again.+ −
+ −
\value FatalError. Something important does not work. Your program cannot continue+ −
the playback of the current source, but it might be possible to try another.+ −
+ −
\sa MediaObject::errorType()+ −
*/+ −
+ −
/*!+ −
\fn QString Phonon::categoryToString(Category c)+ −
+ −
Returns a (translated) string to show to the user identifying the given+ −
Category (\a c).+ −
*/+ −
+ −
/*!+ −
\enum Phonon::ObjectDescriptionType+ −
\relates Phonon::ObjectDescription+ −
+ −
This enum defines the type of information that is contained in a+ −
\l{Phonon::}{ObjectDescription} object.+ −
+ −
\value AudioOutputDeviceType An audio output device (\l{Phonon::}{AudioOutputDevice}).+ −
This can be soundcards (with different drivers),+ −
sound servers, or other virtual outputs like playback on a different+ −
computer on the network.+ −
+ −
\value EffectType An audio effect (\l{Phonon::}{EffectDescription}).+ −
\omitvalue SubtitleType+ −
\omitvalue AudioCaptureDeviceType+ −
\omitvalue AudioChannelType+ −
*/+ −
+ −
/*!+ −
\typedef Phonon::AudioOutputDevice+ −
\relates Phonon::ObjectDescription+ −
+ −
This typedef of \l{Phonon::}{ObjectDescription} describes an audio output+ −
device, such as soundcards (with different drivers), sound servers, or other+ −
virtual outputs like playback on a different computer on the network.+ −
+ −
\omit+ −
For Hardware devices the backend should use libkaudiodevicelist+ −
(AudioDevice and AudioDeviceEnumerator) which will list removable+ −
devices even when they are unplugged and provide a unique identifier+ −
that can make backends use the same identifiers.+ −
\endomit+ −
+ −
A list of available devices is given by the backend with+ −
Backendcapabilities::availableAudioOutputDevices()+ −
+ −
\snippet doc/src/snippets/phononobjectdescription.cpp 1+ −
+ −
*/+ −
+ −
/*!+ −
\fn Phonon::phononVersion()+ −
\inmodule Phonon+ −
\since 4.5+ −
+ −
Returns the Phonon version.+ −
*/+ −
+ −
/*!+ −
\class Phonon::ObjectDescription+ −
\inmodule Phonon+ −
\inheaderfile Phonon/ObjectDescription+ −
\since 4.4+ −
\brief The ObjectDescription class provides information about Phonon objects.+ −
+ −
Phonon currently uses this class to describe audio effects and+ −
audio output devices - using the typedefs AudioOutputDevice and+ −
EffectDescription. The type of an ObjectDescription is also+ −
described through the \l{Phonon::}{ObjectDescriptionType} enum.+ −
Objects of the same \l{Phonon::ObjectDescriptionType}{type} are+ −
uniquely identified by an index().+ −
+ −
The class gives a description() and a name() of the object, both+ −
of which are strings appropriate for end users of a Phonon+ −
application. You can also check whether the device or effect+ −
described is \l{isValid()}{valid}. This does not guarantee that+ −
the device or effect functions as expected, but that the+ −
ObjectDescription describes an existing device or effect.+ −
+ −
Audio output devices and effect descriptions are used to select+ −
the audio output device to be used for playback and to create+ −
effects; we show examples of this in the snippet below. The+ −
available descriptions can be fetched with+ −
\l{Phonon::BackendCapabilities::}{availableAudioOutputDevices()}+ −
and \l{Phonon::BackendCapabilities::}{availableAudioEffects()}+ −
static functions in the Phonon::BackendCapabilities namespace+ −
+ −
\snippet doc/src/snippets/phononobjectdescription.cpp 0+ −
+ −
Other types of ObjectDescriptions might be possible in the future,+ −
e.g., descriptions of audio capture devices, such as microphones.+ −
+ −
\omit Not implemented yet.+ −
Need a new paragraph on that some descriptions 'belong+ −
together', such as chained audio effects.+ −
+ −
Some parts give the end user choices, e.g. what source to capture+ −
audio from. These choices are described by the name and+ −
description methods of this class and identified with the id+ −
method. Subclasses then define additional information like which+ −
audio and video choices belong together. \endomit+ −
+ −
\sa Phonon::AudioOutputDevice, Phonon::EffectDescription, {Capabilities Example}, {Phonon Module}+ −
*/+ −
+ −
/*!+ −
\fn Phonon::ObjectDescription::ObjectDescription()+ −
\brief constructs a new object description.+ −
\internal+ −
*/+ −
+ −
/*!+ −
\fn Phonon::ObjectDescription::ObjectDescription (int index, const QHash<QByteArray, QVariant> & properties)+ −
\internal+ −
*/+ −
+ −
/*!+ −
\fn Phonon::ObjectDescription::ObjectDescription(const QExplicitlySharedDataPointer<ObjectDescriptionData> &dd)+ −
\internal+ −
*/+ −
+ −
/*!+ −
\fn static inline ObjectDescription<T> Phonon::ObjectDescription::fromIndex(int index)+ −
\internal+ −
+ −
\omit Currently indices are not unique for all ObjectDescription types, making+ −
the behavior of this function undefined. \endomit+ −
+ −
Returns a new description object that describes the+ −
device/effect/codec/... with the given \a index.+ −
*/+ −
+ −
/*!+ −
\fn inline bool Phonon::ObjectDescription::operator==(const ObjectDescription &otherDescription) const+ −
+ −
Returns \c true if this ObjectDescription describes the same+ −
object as \a otherDescription; otherwise, returns \c false.+ −
*/+ −
+ −
/*!+ −
\fn inline bool Phonon::ObjectDescription::operator!=(const ObjectDescription &otherDescription) const+ −
Returns \c false if this ObjectDescription describes the same+ −
as \a otherDescription; otherwise, returns \c true.+ −
*/+ −
+ −
/*!+ −
\fn inline QString Phonon::ObjectDescription::name() const+ −
+ −
Returns a string appropriate for a user to select between+ −
object descriptions, e.g., from a QComboBox.+ −
+ −
\sa description()+ −
*/+ −
+ −
/*!+ −
\fn inline QString Phonon::ObjectDescription::description() const+ −
+ −
Returns a more extensive description than the name() function.+ −
+ −
For example, in the case of \l{Phonon::}{AudioOutputDevice}s, this+ −
text should make clear which sound source is described; this is+ −
sometimes hard to describe or understand from just the name.+ −
+ −
The text is appropriate to present to an end user in for example+ −
tool tips of items, with the name()'s as text, in a QComboBox.+ −
+ −
*/+ −
+ −
/*!+ −
\fn inline QVariant Phonon::ObjectDescription::property(const char *name) const+ −
+ −
Returns the property named \a name. A property can be used for+ −
extended information, such as the manufacturer of a sound card. The+ −
information will usually be given as text.+ −
+ −
If the property is not set an invalid QVariant is returned.+ −
+ −
Qt's backends do not use properties at the time of this writing.+ −
+ −
\sa propertyNames()+ −
*/+ −
+ −
/*!+ −
\fn inline QList<QByteArray> Phonon::ObjectDescription::propertyNames() const+ −
+ −
Properties can be used for extended information about a+ −
ObjectDescription, e.g., a manufacturer of a sound card. The+ −
information will usually be given text.+ −
+ −
This function returns all names that return valid data when+ −
property() is called.+ −
+ −
Currently, Qt backends do not use properties for their object+ −
descriptions.+ −
+ −
\sa property()+ −
*/+ −
+ −
/*!+ −
\fn inline bool Phonon::ObjectDescription::isValid() const+ −
+ −
Returns true if the device or effect described exists.+ −
+ −
An ObjectDescription that is invalid, will also have an+ −
index() of -1.+ −
+ −
\sa index()+ −
*/+ −
+ −
/*!+ −
\fn inline int Phonon::ObjectDescription::index() const+ −
+ −
Returns a unique identifier for this ObjectDescription. Used+ −
internally to distinguish between the descriptions.+ −
+ −
Notice that the identifiers are only unique to the type of+ −
description, e.g., \l{Phonon::}{AudioOutputDevice} or+ −
\l{Phonon::}{EffectDescription}.+ −
*/+ −
+ −
/*!+ −
\class Phonon::ObjectDescriptionPrivate+ −
\inmodule Phonon+ −
\since 4.4+ −
\internal+ −
+ −
*/+ −
+ −
/*!+ −
\class Phonon::StreamInterface+ −
\inmodule Phonon+ −
\since 4.4+ −
\brief Backend interface to handle media streams (AbstractMediaStream).+ −
\internal+ −
*/+ −
+ −
/*!+ −
\fn virtual Phonon::StreamInterface::~StreamInterface()+ −
*/+ −
+ −
/*!+ −
\fn virtual void Phonon::StreamInterface::writeData(const QByteArray &data) = 0+ −
\internal+ −
*/+ −
+ −
/*!+ −
\fn virtual void Phonon::StreamInterface::endOfData() = 0+ −
\internal+ −
*/+ −
+ −
/*!+ −
\fn virtual void Phonon::StreamInterface::setStreamSize(qint64 newSize) = 0+ −
\internal+ −
*/+ −
+ −
/*!+ −
\fn virtual void Phonon::StreamInterface::setStreamSeekable(bool s) = 0+ −
\internal+ −
*/+ −
+ −
/*!+ −
\fn void Phonon::StreamInterface::connectToSource(const MediaSource &mediaSource)+ −
\internal+ −
*/+ −
+ −
/*!+ −
\fn void Phonon::StreamInterface::needData()+ −
\internal+ −
*/+ −
+ −
/*!+ −
\fn void Phonon::StreamInterface::enoughData()+ −
\internal+ −
*/+ −
+ −
/*!+ −
\fn void Phonon::StreamInterface::seekStream(qint64)+ −
\internal+ −
*/+ −
+ −
/*!+ −
\fn void Phonon::StreamInterface::reset()+ −
\internal+ −
*/+ −
+ −
/*!+ −
\fn Phonon::StreamInterface::StreamInterface()+ −
\internal+ −
\omit+ −
For subclasses.+ −
\endomit+ −
*/+ −
+ −
/*!+ −
\class StreamInterfacePrivate+ −
\inmodule Phonon+ −
\internal+ −
*/+ −
+ −
/*!+ −
\class Phonon::AbstractVideoOutput+ −
\inmodule Phonon+ −
\internal+ −
\since 4.4+ −
\brief The AbstractVideoOutput class is the common base class for all video output classes.+ −
+ −
\sa VideoWidget+ −
*/+ −
+ −
/*!+ −
\namespace Phonon::Experimental+ −
\internal+ −
*/+ −
+ −
/*!+ −
\fn Phonon::AbstractVideoOutput::AbstractVideoOutput(AbstractVideoOutputPrivate &d)+ −
\internal+ −
+ −
Constructor that is called from derived classes.+ −
+ −
\param parent Standard QObject parent.+ −
*/+ −
+ −
/*!+ −
\class Phonon::AbstractVideoOutputPrivate+ −
\inmodule Phonon+ −
\internal+ −
\since 4.4+ −
*/+ −
+ −
/*!+ −
\class Phonon::VolumeFaderEffect+ −
\inmodule Phonon+ −
\internal+ −
\since 4.4+ −
+ −
This effect differs from gradually changing the output volume in that+ −
a dedicated effect can change the volume in the smallest possible+ −
steps while every other volume control will make more or less+ −
noticeable steps.+ −
+ −
\sa AudioOutput::volume()+ −
*/+ −
+ −
/*!+ −
\property Phonon::VolumeFaderEffect::volume+ −
+ −
This is the current volume of the output as voltage factor.+ −
Setting this property changes the volume immediately.+ −
+ −
1.0 means 100%, 0.5 means 50% voltage/25% power, 0.0 means 0%+ −
+ −
\sa volumeDecibel+ −
*/+ −
+ −
/*!+ −
\property Phonon::VolumeFaderEffect::volumeDecibel+ −
+ −
This is the current volume of the output in decibel.+ −
Setting this property changes the volume immediately.+ −
+ −
0 dB means no change in volume, -6dB means an attenuation of the+ −
voltage to 50% and an attenuation of the power to 25%, -inf dB means+ −
silence.+ −
+ −
\sa volume+ −
*/+ −
+ −
/*!+ −
\property Phonon::VolumeFaderEffect::fadeCurve+ −
+ −
This property holds the fade curve to be used for the fadeIn(), fadeOut()+ −
and fadeTo() slots.+ −
+ −
Defaults to Fade3Decibel.+ −
+ −
\sa FadeCurve+ −
*/+ −
+ −
/*!+ −
\enum Phonon::VolumeFaderEffect::FadeCurve+ −
Determines the curve of the volume change.+ −
+ −
\value Fade3Decibel Crossfade curve/fast fade out.+ −
This is the default fade curve.+ −
\value Fade6Decibel Linear fade out.+ −
\value Fade9Decibel Slow fade out.+ −
\value Fade12Decibel A more extreme version of the -9dB fade.+ −
+ −
\bold{Notes:}+ −
+ −
\c Fade3Decibel is often the best fade for a crossfade, as after half+ −
of the time the volume reached -3dB. This means that half the+ −
possible power (which is proportional to the square of the+ −
voltage) is reached. Summed, the maximum power of two audio+ −
signals fading with a -3dB curve will always be equal.+ −
+ −
For fading in or out the -3dB curve is too abrupt in the end.+ −
+ −
With a -6dB fade curve, a volume of -6dB is reached after half of+ −
the fading time. -6dB is equal to half of the voltage meaning+ −
that the voltage multiplier changes linearly from the start+ −
of the fade to the end.+ −
+ −
With the \c Fade9Decibel fade, a volume of -9dB is reached after+ −
half of the fade time, so the fade is fast in the beginning and+ −
slow at the end. This is a good fade for ending music.+ −
*/+ −
+ −
/*!+ −
\fn void Phonon::VolumeFaderEffect::fadeIn(int fadeTime)+ −
+ −
Tells the Fader to change the volume from the current volume to 100%+ −
in \a fadeTime milliseconds.+ −
+ −
Short for \c fadeTo(1.0, fadeTime).+ −
+ −
\param fadeTime the fade duration in milliseconds+ −
+ −
\sa fadeTo(), volume+ −
*/+ −
+ −
/*!+ −
\fn void Phonon::VolumeFaderEffect::fadeOut(int fadeTime)+ −
+ −
Tells the Fader to change the volume from the current volume to 0%+ −
in \a fadeTime milliseconds.+ −
Short for \c fadeTo(0.0, fadeTime).+ −
+ −
\param fadeTime the fade duration in milliseconds+ −
+ −
\sa fadeTo+ −
*/+ −
+ −
/*!+ −
\fn void Phonon::VolumeFaderEffect::fadeTo(float volume, int fadeTime)+ −
+ −
Tells the Fader to change the volume from the current value to+ −
\a volume in \a fadeTime milliseconds.+ −
+ −
\sa fadeIn(), fadeOut()+ −
*/+ −
+ −
/*!+ −
\class Phonon::VolumeFaderEffectPrivate+ −
\inmodule Phonon+ −
\since 4.4+ −
\internal+ −
*/+ −
+ −
/*!+ −
\class Phonon::VolumeFaderInterface+ −
\inmodule Phonon+ −
\since 4.4+ −
\internal+ −
*/+ −
+ −
/*!+ −
\fn virtual Phonon::VolumeFaderInterface::~VolumeFaderInterface()+ −
\internal+ −
*/+ −
+ −
/*!+ −
\fn virtual float Phonon::VolumeFaderInterface::volume() const+ −
\internal+ −
*/+ −
+ −
/*!+ −
\fn virtual void Phonon::VolumeFaderInterface::setVolume(float)+ −
\internal+ −
*/+ −
+ −
/*!+ −
\fn virtual Phonon::VolumeFaderEffect::FadeCurve Phonon::VolumeFaderInterface::fadeCurve() const+ −
\internal+ −
*/+ −
+ −
/*!+ −
\fn virtual void Phonon::VolumeFaderInterface::setFadeCurve(Phonon::VolumeFaderEffect::FadeCurve)+ −
\internal+ −
*/+ −
+ −
/*!+ −
\fn virtual void Phonon::VolumeFaderInterface::fadeTo(float, int)+ −
\internal+ −
*/+ −
+ −
/*!+ −
\class Phonon::AbstractMediaStream+ −
\inmodule Phonon+ −
\internal+ −
\since 4.4+ −
\brief The AbstractMediaStream class is the base class for custom media data streams.+ −
\inheaderfile Phonon/AbstractMediaStream+ −
+ −
This class is subclassed to provide custom data streams for+ −
\l{Phonon::}{MediaSource}s.+ −
+ −
The \l{Phonon::}{MediaSource} knows how to handle the most common+ −
media sources, such as files and CD. If you need to fetch+ −
multimedia from other sources, you can reimplement this class,+ −
which can be used by a \l{Phonon::}{MediaSource}.+ −
+ −
When a backend needs more data from the stream, needData() will be+ −
called. You must then use writeData() to write the data to the+ −
backend. You can either write one time and wait for a new+ −
needData() call, or continue to write data until you receive an+ −
enoughData() call. When the stream is at its end, call endOfData()+ −
instead of writeData().+ −
+ −
Before the custom stream is passed to a \l{Phonon::}{MediaSource},+ −
setStreamSize() needs to be called, and also setStreamSeekable()+ −
(if the stream is seekable). A good place to do this work is in+ −
the constructor. A seekable stream must also reimplement+ −
seekStream().+ −
+ −
We show two examples. The first writes data repeatedly until it+ −
receives the enoughData() call, while the second only writes once+ −
and waits for a new needData() call.+ −
+ −
Example where data is written repeatedly.+ −
+ −
\snippet doc/src/snippets/code/doc_src_phonon-api.qdoc 0+ −
+ −
Example where data is written once:+ −
+ −
\snippet doc/src/snippets/code/doc_src_phonon-api.qdoc 1+ −
+ −
\sa Phonon::MediaSource, Phonon::MediaObject + −
+ −
*/+ −
+ −
/*!+ −
\fn Phonon::AbstractMediaStream::AbstractMediaStream(QObject *parent = 0)+ −
\internal+ −
+ −
Constructs an AbstractMediaStream object with the given \a parent.+ −
+ −
*/+ −
+ −
/*!+ −
\fn qint64 Phonon::AbstractMediaStream::streamSize() const+ −
+ −
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.+ −
+ −
\sa setStreamSize()+ −
*/+ −
+ −
/*!+ −
\fn void Phonon::AbstractMediaStream::setStreamSize(qint64 size)+ −
+ −
Sets the \a 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.+ −
+ −
\sa streamSize()+ −
+ −
*/+ −
+ −
/*!+ −
\fn bool Phonon::AbstractMediaStream::streamSeekable() const+ −
+ −
Returns whether your data stream is set as seekable.+ −
+ −
Defaults to \c false.+ −
+ −
\sa setStreamSeekable()+ −
+ −
*/+ −
+ −
/*!+ −
\fn void Phonon::AbstractMediaStream::setStreamSeekable(bool s)+ −
+ −
Sets whether your data stream is seekable. \a s should be true if+ −
the stream is seekable; otherwise false.+ −
+ −
Defaults to \c false.+ −
+ −
If you set this to \c true you have to implement the seekStream()+ −
function.+ −
+ −
\sa streamSeekable()+ −
*/+ −
+ −
/*!+ −
\fn void Phonon::AbstractMediaStream::writeData(const QByteArray &data)+ −
+ −
Sends the media \a data to the backend for decoding.+ −
+ −
Use this function to send data to the backend after needData() has+ −
been called.+ −
+ −
If your stream is a push stream, data should be written until the+ −
enoughData() function is called. For a pull stream, write data+ −
once before the call to needData() function returns.+ −
+ −
If the data is depleted, call endOfData() instead of writeData().+ −
+ −
\warning Don't call this function before the first needData() is emitted.+ −
+ −
\sa needData(), endOfData()+ −
+ −
*/+ −
+ −
/*!+ −
\fn void Phonon::AbstractMediaStream::endOfData()+ −
+ −
Tells the backend that the media data stream is at its end.+ −
+ −
\warning Don't call this function before the first needData() is emitted.+ −
+ −
\sa writeData(), needData()+ −
*/+ −
+ −
/*!+ −
\fn void Phonon::AbstractMediaStream::error(Phonon::ErrorType errorType, const QString &errorString)+ −
+ −
If an I/O error occurs you should call this function to make+ −
MediaObject go into ErrorState. \c errorType classifies the error,+ −
while \a errorString is a textual description of the error suitable+ −
for users of Phonon applications.+ −
+ −
\sa MediaObject::errorType(), MediaObject::errorString()+ −
*/+ −
+ −
/*!+ −
\fn virtual void Phonon::AbstractMediaStream::reset() = 0+ −
+ −
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+ −
\snippet doc/src/snippets/code/doc_src_phonon-api.qdoc 2+ −
+ −
\sa writeData(), needData()+ −
*/+ −
+ −
/*!+ −
\fn virtual void Phonon::AbstractMediaStream::needData() = 0+ −
+ −
Reimplement this function to be notified when the backend needs data.+ −
+ −
When this function is called you should write data to the backend+ −
(See writeData()).+ −
+ −
\sa writeData(), endOfData(), enoughData()+ −
*/+ −
+ −
/*!+ −
\fn virtual void Phonon::AbstractMediaStream::enoughData()+ −
+ −
If your stream is a push stream, 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.+ −
+ −
\sa needData()+ −
*/+ −
+ −
/*!+ −
\fn virtual void Phonon::AbstractMediaStream::seekStream(qint64 offset)+ −
+ −
Reimplement this function if your stream is seekable.+ −
+ −
When this function is called the next call to writeData has to be at the+ −
requested \a offset.+ −
+ −
\warning Do not call the parent implementation.+ −
+ −
\sa setStreamSeekable(), streamSeekable(), needData()+ −
*/+ −
+ −
/*!+ −
\class Phonon::BackendInterface+ −
\inmodule Phonon+ −
\since 4.4+ −
\brief Main Backend class interface+ −
\internal+ −
+ −
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:+ −
\snippet snippets/phonon/samplebackend/main.cpp snippet+ −
+ −
*/+ −
+ −
/*!+ −
\fn virtual Phonon::BackendInterface::~BackendInterface()+ −
\internal+ −
+ −
Silence gcc's warning.+ −
*/+ −
+ −
/*!+ −
\enum Phonon::BackendInterface::Class+ −
\internal+ −
+ −
Classes that the createObject() function has to handle.+ −
+ −
\value MediaObjectClass Request to return a \c MediaObject object.+ −
\value VolumeFaderEffectClass Request to return a \c VolumeFaderEffect+ −
object.+ −
\value AudioOutputClass Request to return an \c AudioOutput object.+ −
\value AudioDataOutputClass Request to return an \c AudioDataOutput object.+ −
\value VisualizationClass Request to return a \c Visualization object.+ −
\value VideoDataOutputClass Request to return a \c VideoDataOutput object.+ −
\value EffectClass Request to return a \c Effect object.+ −
Takes an additional int that specifies the effect ID.+ −
\value VideoWidgetClass Request to return a \c VideoWidget object.+ −
*/+ −
+ −
/*!+ −
\fn virtual QObject *Phonon::BackendInterface::createObject(Class c, QObject *parent, const QList<QVariant> &args = QList<QVariant>()) = 0+ −
\internal+ −
+ −
Returns a new instance of the requested class.+ −
+ −
\param c The requested class.+ −
\param parent The parent object.+ −
\param args Additional arguments (documented in Class).+ −
*/+ −
+ −
+ −
/*!+ −
\fn virtual QList<int> Phonon::BackendInterface::objectDescriptionIndexes(ObjectDescriptionType type) const = 0+ −
\internal+ −
+ −
Returns the unique identifiers for the devices/effects/codecs of the given \a type.+ −
+ −
\param type see ObjectDescriptionType+ −
*/+ −
+ −
/*!+ −
\fn virtual QHash<QByteArray, QVariant> Phonon::BackendInterface::objectDescriptionProperties(ObjectDescriptionType type, int index) const = 0+ −
\internal+ −
+ −
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.+ −
+ −
\table+ −
\header \o Property \o Description+ −
\row \o name \o The name of the device/effect/codec/...+ −
\row \o description \o A text explaining what this device/effect/codec/... is/can do+ −
\row \o icon \o An icon name (using the freedesktop naming scheme) or a QIcon for this+ −
device/effect/codec/...+ −
\row \o available \o A bool telling whether the device is present or unplugged.+ −
\endtable+ −
+ −
\param type see ObjectDescriptionType+ −
\param index The unique identifier that is returned from objectDescriptionIndexes+ −
*/+ −
+ −
/*!+ −
\fn virtual bool Phonon::BackendInterface::startConnectionChange(QSet<QObject *>) = 0;+ −
\internal+ −
+ −
When this function is called the nodes given in the parameter list should+ −
not lose any signal data when connections are changed.+ −
*/+ −
+ −
/*!+ −
\fn virtual bool Phonon::BackendInterface::connectNodes(QObject *, QObject *) = 0+ −
\internal+ −
+ −
Defines a signal connection between the two given nodes.+ −
*/+ −
+ −
/*!+ −
\fn virtual bool Phonon::BackendInterface::disconnectNodes(QObject *, QObject *) = 0+ −
\internal+ −
+ −
Cuts a signal connection between the two given nodes.+ −
*/+ −
+ −
/*!+ −
\fn virtual bool Phonon::BackendInterface::endConnectionChange(QSet<QObject *>) = 0+ −
\internal+ −
+ −
When this function is called the nodes given in the parameter list may lose+ −
signal data when a port is not connected.+ −
*/+ −
+ −
/*!+ −
\fn virtual QStringList Phonon::BackendInterface::availableMimeTypes() const = 0+ −
\internal+ −
+ −
Returns all available MIME types.+ −
*/+ −
+ −
/*!+ −
\class Phonon::MediaSource+ −
\inmodule Phonon+ −
\inheaderfile Phonon/MediaSource+ −
\since 4.4+ −
\brief The MediaSource class provides multimedia data for media objects.+ −
+ −
The MediaSource class manages a source of multimedia content, such+ −
as a music or video file, of which data is given to a+ −
\l{Phonon::}{MediaObject}.+ −
+ −
The media source knows how fetch its data from several sources,+ −
e.g., from files, a QIODevice, or a CD. The possible source types+ −
are described by the \l{MediaSource::}{Type} enum. The type of the+ −
source is set by the media source itself, and is dependent on the+ −
constructor used to create it. Note that it is possible to provide+ −
data from any source by implementing a QIODevice.+ −
+ −
The class has several functions to acquire information about the+ −
source it manages, e.g., fileName() and url(). The return from+ −
these functions are dependent on the type() of the media source.+ −
+ −
Normally, a programmer does not need to be concerned with media+ −
sources. It's constructors are implicit, so one can, for instance,+ −
send an URL or filename directly to the constructors of the+ −
\l{Phonon::}{MediaObject}.+ −
+ −
\snippet doc/src/snippets/code/doc_src_phonon-api.qdoc 3+ −
+ −
A MediaSource object cannot be reused for another multimedia+ −
source. It is possible to play the same source again, and also+ −
stop and start a non-seekable media source, such as a radio+ −
stream, with the same MediaSource object.+ −
+ −
\section1 Qt Backends+ −
+ −
Currently, Qt's backends support files in local and remote+ −
locations. Support for other sources, such as CD/DVD, are planned+ −
for the future.+ −
+ −
\sa MediaObject, {Phonon Module}+ −
*/+ −
+ −
/*!+ −
\enum Phonon::MediaSource::Type+ −
+ −
Identifies the type of media described by the MediaSource object.+ −
+ −
\value Invalid The MediaSource object does not describe any valid source.+ −
\value LocalFile The MediaSource object describes a local file.+ −
\value Url The MediaSource object describes an URL, which can be either a+ −
local file or a file on the network.+ −
\value Disc The MediaSource object describes a disc, e.g., a CD.+ −
\value Stream The MediaSource object describes a data stream.+ −
This is the type used for \l{QIODevice}s. Note+ −
that a stream opened with a QUrl, will still be of the Url type.+ −
\value Empty The media source doesn't have a source.+ −
+ −
\sa MediaSource::type()+ −
*/+ −
+ −
/*!+ −
\fn Phonon::MediaSource::MediaSource()+ −
\internal+ −
+ −
Creates an invalid MediaSource object.+ −
+ −
\sa Invalid+ −
*/+ −
+ −
/*!+ −
\fn Phonon::MediaSource::MediaSource(const QString &fileName)+ −
+ −
Creates a MediaSource object for the file specified by \a+ −
fileName. You can also use this constructor with \l{The Qt+ −
Resource System}{Qt resources}+ −
+ −
\omit+ −
\param fileName file name of a local media file or a Qt resource that was compiled in.+ −
\endomit+ −
*/+ −
+ −
/*!+ −
\fn Phonon::MediaSource::MediaSource(const QUrl &url)+ −
+ −
Creates a MediaSource object for a the URL specified by \a url.+ −
+ −
If the multimedia content you would like to play back is on a+ −
remote network location, you should use this constructor; though,+ −
it also possible to specify an URL to a local file.+ −
+ −
\sa QUrl+ −
*/+ −
+ −
+ −
/*!+ −
\fn Phonon::MediaSource::MediaSource(Phonon::DiscType discType, const QString &deviceName = QString())+ −
+ −
Creates a MediaSource object for the type of disc specified by \a discType in the named+ −
device referred to by \a deviceName.+ −
+ −
\note \a deviceName is a platform dependent device name. It can be useful to specify this+ −
if the computer has more than one CD drive. On KDE, it is recommended to use the Solid+ −
hardware discovery framework to retrieve the device name in a portable way.+ −
*/+ −
+ −
/*!+ −
\fn Phonon::MediaSource::MediaSource(AbstractMediaStream *stream)+ −
\internal+ −
Creates a MediaSource object for a data stream.+ −
+ −
Your application can provide the media data by subclassing AbstractMediaStream and+ −
passing a pointer to that object. Phonon will never delete the \a stream.+ −
+ −
\param stream The AbstractMediaStream subclass to provide the media data.+ −
+ −
\sa setAutoDelete+ −
*/+ −
+ −
/*!+ −
\fn Phonon::MediaSource::MediaSource(QIODevice *ioDevice)+ −
+ −
Creates a MediaSource object for the QIODevice specified by \a ioDevice.+ −
+ −
This constructor can be very handy in the combination of+ −
QByteArray and QBuffer.+ −
+ −
If you need to fetch multimedia data from a source that is not+ −
supported by MediaSource, you should subclass QIODevice and use+ −
this MediaSource constructor. It is important that you reimplement+ −
QIODevice::isSequential(), as it is used by MediaSource to+ −
determine if the media source is seekable.+ −
+ −
\a ioDevice is an arbitrary readable QIODevice subclass. If the device is not opened+ −
MediaSource will open it as QIODevice::ReadOnly.+ −
+ −
\note Sequential devices can also be used, but MediaObject::isSeekable() will+ −
return false as a result.+ −
+ −
\warning On Windows, we only support \l{QIODevice}s containing the+ −
\c avi, \c mp3, or \c mpg formats. Use the constructor that takes+ −
a file name to open files (the Qt backend does not use a QFile+ −
internally).+ −
+ −
\sa setAutoDelete()+ −
*/+ −
+ −
/*!+ −
\fn Phonon::MediaSource::MediaSource(MediaSourcePrivate &)+ −
\internal+ −
*/+ −
+ −
/*!+ −
\fn Phonon::MediaSource::~MediaSource()+ −
+ −
Destroys the MediaSource object. You should never delete a+ −
MediaSource yourself, the MediaObject will handle this.+ −
+ −
*/+ −
+ −
/*!+ −
\fn Phonon::MediaSource::MediaSource(const MediaSource &other)+ −
+ −
Constructs a copy of the \a other media source.+ −
+ −
This constructor is fast thanks to explicit sharing.+ −
*/+ −
+ −
/*!+ −
\fn MediaSource &Phonon::MediaSource::operator=(const MediaSource &other)+ −
+ −
Assigns the \a other media source to this media source and returns a+ −
reference to it.+ −
+ −
This operation is fast thanks to explicit sharing.+ −
*/+ −
+ −
/*!+ −
\fn bool Phonon::MediaSource::operator==(const MediaSource &other) const+ −
+ −
Returns true if this media source is equal to the \a other media source;+ −
otherwise returns false.+ −
*/+ −
+ −
/*!+ −
\fn void Phonon::MediaSource::setAutoDelete(bool enable)+ −
+ −
If \a enable is true, the media source will take ownership of the+ −
object passed in the \l{Phonon::}{MediaSource}'s constructor+ −
object that was passed in the constructor; otherwise, the+ −
programmer is responsible for deletion of this object.+ −
+ −
This setting is false by default. If you enable it, you should+ −
only access the stream or device as long as you keep the media+ −
source object around. As long as you keep the media source+ −
wrapping the stream or device, the object will not get deleted.+ −
+ −
\sa autoDelete()+ −
*/+ −
+ −
/*!+ −
\fn bool Phonon::MediaSource::autoDelete() const+ −
+ −
Returns the setting of the auto-delete option. The default is+ −
false.+ −
+ −
\sa setAutoDelete()+ −
*/+ −
+ −
/*!+ −
\fn Type Phonon::MediaSource::type() const+ −
+ −
Returns the type of the MediaSource (depends on the constructor+ −
that was used).+ −
+ −
\sa Type+ −
*/+ −
+ −
/*!+ −
\fn QString Phonon::MediaSource::fileName() const+ −
+ −
Returns the file name of the MediaSource if type() ==+ −
LocalFile; otherwise, returns QString().+ −
+ −
\sa type()+ −
*/+ −
+ −
/*!+ −
\fn QUrl Phonon::MediaSource::url() const+ −
Returns the URL of the MediaSource if type() == URL or type() == LocalFile;+ −
otherwise returns QUrl().+ −
+ −
\sa type()+ −
*/+ −
+ −
/*!+ −
\fn Phonon::DiscType Phonon::MediaSource::discType() const+ −
Returns the disc type of the MediaSource if type() == Disc; otherwise+ −
returns NoDisc.+ −
+ −
\sa type()+ −
*/+ −
+ −
/*!+ −
\fn QString Phonon::MediaSource::deviceName() const+ −
+ −
Returns the device name of the MediaSource if type() == Disc; otherwise+ −
returns QString().+ −
+ −
\sa type()+ −
*/+ −
+ −
/*!+ −
\fn AbstractMediaStream *Phonon::MediaSource::stream() const+ −
\internal+ −
Returns the media stream of the MediaSource if type() == Stream; otherwise+ −
returns 0.+ −
QIODevices are handled as streams, too.+ −
*/+ −
+ −
/*!+ −
\class Phonon::MediaSourcePrivate+ −
\inmodule Phonon+ −
\since 4.4+ −
\internal+ −
*/+ −
+ −
/*!+ −
\class Phonon::SeekSlider+ −
\inmodule Phonon+ −
\inheaderfile Phonon/SeekSlider+ −
\since 4.4+ −
\brief The SeekSlider class provides a slider for seeking to positions in media streams.+ −
+ −
The SeekSlider connects to a \l{Phonon::}{MediaObject}, and+ −
controls the seek position in the object's media stream.+ −
+ −
The slider will connect to the necessary signals to keep track of+ −
the sliders maximum, minimum, and current values. It will also+ −
disable itself for non-seekable streams, and update the media+ −
object when the current value of the slider changes.+ −
+ −
Here follows a typical example of SeekSlider usage:+ −
+ −
\snippet doc/src/snippets/seekslider.cpp 0+ −
+ −
\sa Phonon::VolumeSlider, Phonon::VideoWidget, {Music Player Example}, {Phonon Module}+ −
+ −
*/+ −
+ −
/*!+ −
\property Phonon::SeekSlider::iconVisible+ −
\brief whether the icon next to the slider is visible+ −
+ −
By default the icon is visible if the platform provides an icon; else+ −
it's hidden.+ −
+ −
*/+ −
+ −
/*!+ −
\property Phonon::SeekSlider::tracking+ −
\brief whether slider tracking is enabled+ −
+ −
If tracking is enabled (the default), the media seeks+ −
while the slider is being dragged. If tracking is+ −
disabled, the media seeks only when the user+ −
releases the slider.+ −
*/+ −
+ −
/*!+ −
\property Phonon::SeekSlider::pageStep+ −
\brief the page step interval+ −
+ −
The larger of two natural steps that a slider provides and+ −
typically corresponds to the user pressing PageUp or PageDown.+ −
+ −
Defaults to 5 seconds.+ −
*/+ −
+ −
/*!+ −
\property Phonon::SeekSlider::singleStep+ −
\brief the single step interval+ −
+ −
The smaller of two natural steps that a slider provides and+ −
typically corresponds to the user pressing an arrow key.+ −
+ −
Defaults to 0.5 seconds.+ −
*/+ −
+ −
/*!+ −
\property Phonon::SeekSlider::orientation+ −
\brief the orientation of the slider+ −
+ −
The orientation must be Qt::Vertical or Qt::Horizontal (the default).+ −
*/+ −
+ −
/*!+ −
\property Phonon::SeekSlider::iconSize+ −
\brief the icon size used for the mute button/icon.+ −
+ −
The default size is defined by the GUI style.+ −
*/+ −
+ −
/*!+ −
\fn explicit Phonon::SeekSlider::SeekSlider(QWidget *parent = 0)+ −
+ −
Constructs a seek slider widget with the given \a parent.+ −
*/+ −
+ −
/*!+ −
\fn explicit Phonon::SeekSlider::SeekSlider(MediaObject *media, QWidget *parent = 0)+ −
+ −
Constructs a seek slider widget for the specified \a media with the+ −
given \a parent.+ −
*/+ −
+ −
/*!+ −
\fn Phonon::SeekSlider::~SeekSlider()+ −
Destroys the seek slider.+ −
*/+ −
+ −
/*!+ −
\fn Phonon::MediaObject *Phonon::SeekSlider::mediaObject() const+ −
+ −
Return the media object this SeekSlider controls.+ −
*/+ −
+ −
/*!+ −
\class Phonon::SeekSliderPrivate+ −
\inmodule Phonon+ −
\since 4.4+ −
\internal+ −
*/+ −
+ −
/*!+ −
\fn void Phonon::SeekSlider::setMediaObject(MediaObject *media)+ −
+ −
Sets the media object to be controlled by this slider to the \a media specified.+ −
*/+ −
+ −
/*!+ −
\class Phonon::VideoPlayer+ −
\inmodule Phonon+ −
\inheaderfile Phonon/VideoPlayer+ −
\since 4.4+ −
\brief The VideoPlayer widget is used to perform playback of video.+ −
+ −
With VideoPlayer you can get results quickly and easily. You can+ −
do the standard playback tasks like play(), pause(), and stop(),+ −
but also set a playback volume and seek - if the media and backend+ −
supports seeking.+ −
+ −
VideoPlayer is provided for convenience and removes the need to+ −
create a media graph with a \l{Phonon::}{MediaObject},+ −
\l{Phonon::}{AudioOutput}, and \l{Phonon::}{VideoWidget}. If+ −
you need functionality not supported by the player, you can build+ −
this \l{Building Graphs}{graph} yourself.+ −
+ −
Keep in mind that when the VideoPlayer instance is deleted the+ −
playback will stop.+ −
+ −
Note also that most of the functions in this class are+ −
asynchronous. For instance, a media source may not play+ −
immediately after you call the play() function.+ −
+ −
A play and forget code example:+ −
\snippet doc/src/snippets/code/doc_src_phonon-api.qdoc 4+ −
+ −
\sa {Phonon Module}, MediaObject+ −
*/+ −
+ −
/*!+ −
\fn Phonon::VideoPlayer::VideoPlayer(QWidget *parent = 0)+ −
+ −
Constructs a new video widget with a \a parent using+ −
Phonon::VideoCategory as its category.+ −
+ −
\param parent The QObject parent.+ −
*/+ −
+ −
/*!+ −
\fn Phonon::VideoPlayer::VideoPlayer(Phonon::Category category, QWidget *parent = 0)+ −
+ −
Constructs a new VideoPlayer instance with the specified \a+ −
parent.+ −
+ −
\a category is the category used for the audio output device.+ −
*/+ −
+ −
/*!+ −
\fn Phonon::VideoPlayer::~VideoPlayer()+ −
+ −
On destruction the playback is stopped, also the audio output is+ −
removed so that the desktop mixer will not show the application+ −
anymore. If you need a persistent audio output don't use+ −
VideoPlayer but MediaObject, VideoPath and VideoOutput.+ −
*/+ −
+ −
/*!+ −
\fn qint64 Phonon::VideoPlayer::totalTime() const+ −
+ −
Get the total time (in milliseconds) of the file currently being played.+ −
*/+ −
+ −
/*!+ −
\fn qint64 Phonon::VideoPlayer::currentTime() const+ −
+ −
Get the current time (in milliseconds) of the file currently being played.+ −
*/+ −
+ −
/*!+ −
\fn float Phonon::VideoPlayer::volume() const+ −
+ −
This is the current volume of the output as voltage factor.+ −
+ −
1.0 means 100%, 0.5 means 50% voltage/25% power, 0.0 means 0%+ −
*/+ −
+ −
/*!+ −
\fn bool Phonon::VideoPlayer::isPlaying() const+ −
+ −
Returns true if it is currently playing; otherwise returns false if it+ −
is currently stopped or paused+ −
*/+ −
+ −
/*!+ −
\fn bool Phonon::VideoPlayer::isPaused() const+ −
+ −
Returns true if it is currently paused; otherwise returns false if it+ −
is currently playing or stopped.+ −
*/+ −
+ −
/*!+ −
\fn void Phonon::VideoPlayer::load(const Phonon::MediaSource &source)+ −
+ −
Starts pre-loading the media data from the specified \a source and+ −
filling audio buffers in the backend.+ −
+ −
When there's already a media playing (or paused) it will be stopped+ −
(the finished signal will not be emitted).+ −
+ −
\sa MediaObject::setCurrentSource()+ −
*/+ −
+ −
/*!+ −
\fn void Phonon::VideoPlayer::play(const Phonon::MediaSource &source)+ −
+ −
Plays the media from the given \a source. Starts playback as fast as+ −
possible.+ −
This can take a considerable time depending on the URL and the+ −
backend.+ −
+ −
If you need low latency between calling play() and the sound actually+ −
starting to play on your output device you need to use MediaObject+ −
and be able to set the URL before calling play(). Note that+ −
\snippet doc/src/snippets/code/doc_src_phonon-api.qdoc 5+ −
doesn't make a difference: the application should be idle between the+ −
load and play calls so that the backend can start preloading the+ −
media and fill audio buffers.+ −
*/+ −
+ −
/*!+ −
\fn void Phonon::VideoPlayer::play()+ −
+ −
Continues playback of paused media. Restarts playback of a stopped+ −
(or newly loaded) media.+ −
+ −
\sa MediaObject::play(), play()+ −
*/+ −
+ −
/*!+ −
\fn void Phonon::VideoPlayer::pause()+ −
+ −
Pauses the playback.+ −
+ −
\sa MediaObject::pause()+ −
*/+ −
+ −
/*!+ −
\fn void Phonon::VideoPlayer::stop()+ −
+ −
Stops the playback.+ −
+ −
\sa MediaObject::stop()+ −
*/+ −
+ −
/*!+ −
\fn void Phonon::VideoPlayer::seek(qint64 ms)+ −
+ −
Seeks to the requested time. Note that the backend is free to+ −
ignore the seek request if the media source isn't seekable; you+ −
can check this by asking the media object of the VideoPlayer.+ −
+ −
\snippet doc/src/snippets/videomedia.cpp 0+ −
+ −
The \a ms parameter is the time in milliseconds from the start of+ −
the media.+ −
+ −
The call is asynchronous, so currentTime() can still be the old+ −
value right after this method was called. If all you need is a+ −
slider that shows the current position and allows the user to+ −
seek, use the class SeekSlider.+ −
+ −
\sa MediaObject::seek(), MediaObject::isSeekable(), mediaObject()+ −
*/+ −
+ −
/*!+ −
\fn void Phonon::VideoPlayer::setVolume(float volume)+ −
+ −
Sets the \a volume of the output as voltage factor.+ −
+ −
1.0 means 100%, 0.5 means 50% voltage/25% power, 0.0 means 0%+ −
*/+ −
+ −
/*!+ −
\fn MediaObject *Phonon::VideoPlayer::mediaObject() const+ −
+ −
Returns the media object being used by the player.+ −
+ −
The media object can be accessed directly instead of using the+ −
\l{VideoPlayer}s convenience functions, e.g., play() and stop().+ −
It is also possible to give the object to other Phonon widgets,+ −
e.g., a \l{Phonon::}{SeekSlider} or a \l{Phonon::}{VolumeSlider}.+ −
+ −
\sa Phonon::SeekSlider, Phonon::MediaObject+ −
*/+ −
+ −
/*!+ −
\fn AudioOutput *Phonon::VideoPlayer::audioOutput() const+ −
+ −
Returns the audio output object being used by the player.+ −
+ −
*/+ −
+ −
/*!+ −
\fn VideoWidget *Phonon::VideoPlayer::videoWidget() const+ −
+ −
Returns the video widget being used by the player.+ −
*/+ −
+ −
/*!+ −
\fn void Phonon::VideoPlayer::finished()+ −
+ −
This signal is emitted when the playback finished.+ −
+ −
*/+ −
+ −
/*!+ −
\class Phonon::VideoWidgetPrivate+ −
\inmodule Phonon+ −
\since 4.4+ −
\internal+ −
*/+ −
+ −
/*!+ −
\class Phonon::MediaObject+ −
\inmodule Phonon+ −
\inheaderfile Phonon/MediaObject+ −
\since 4.4+ −
\brief The MediaObject class provides an interface for media playback.+ −
+ −
+ −
The media object manages a \l{Phonon::}{MediaSource}, which+ −
supplies the media object with multimedia content, e.g., from a+ −
file. A playback in Phonon is always started by calling the+ −
\l{Phonon::MediaObject::}{play()} function.+ −
+ −
The state of play (play, pause, stop, seek) is controlled by the+ −
media object, and you can also query the current+ −
\l{Phonon::MediaObject::}{state()}. It keeps track of the playback+ −
position in the media stream, and emits the+ −
\l{Phonon::MediaObject::}{tick()} signal when the current position+ −
in the stream changes.+ −
+ −
Notice that most functions of this class are asynchronous, so you+ −
cannot rely on that a state is entered after a function call+ −
before you receive the \l{Phonon::MediaObject::}{stateChanged()}+ −
signal. The description of the \l{Phonon::}{State} enum gives a+ −
description of the different states.+ −
+ −
Before play() is called, the media object should be connected to+ −
\l{Sinks}{output nodes}, which outputs the media to the+ −
underlying hardware. The output nodes required are dependent on+ −
the contents of the multimedia file that is played back. Phonon+ −
has currently two output nodes: the \l{Phonon::}{AudioOutput} for+ −
audio content and \l{Phonon::}{VideoWidget} for video content. If+ −
a \l{Phonon::}{MediaSource} contains both audio and video, both+ −
nodes need to be connected to the media object.+ −
+ −
\snippet snippets/phonon.cpp 4+ −
\snippet snippets/phonon.cpp 5 + −
+ −
The media object can queue sources for playback. When it has+ −
finished to play one source, it will start playing the next in the+ −
queue; the new source is then removed from the queue. The+ −
queue can be altered at any time. + −
+ −
\snippet doc/src/snippets/code/doc_src_phonon-api.qdoc 7+ −
+ −
You can also make use of the+ −
\l{Phonon::MediaObject::}{aboutToFinish()} signal, which is+ −
guaranteed to be emitted in time for altering the queue.+ −
+ −
\snippet doc/src/snippets/code/doc_src_phonon-api.qdoc 8+ −
+ −
When playback is finishing, i.e., when a media source has been+ −
played to the end and the queue is empty, several signals are+ −
emitted. First, the media object will emit aboutToFinish() -+ −
shortly before the playback has finished - and then finished().+ −
The stateChanged() signal will also be emitted with+ −
\l{Phonon::}{PausedState}, which is the state the media object+ −
takes when the playback is finished. If you wish to enter another+ −
state, you can connect a slot to finished() and set a new state+ −
there.+ −
+ −
The media object resolves the meta information, such as title,+ −
artist, and album. The meta data is not resolved immediately after+ −
a new source is provided, but will be resolved before the object+ −
leaves the \l{Phonon::}{LoadingState}. The data is queried by+ −
string keys - which should follow the Ogg Vorbis specification+ −
\l http://xiph.org/vorbis/doc/v-comment.html - or by using the+ −
\l{Phonon::}{MetaData} enum. The data available will depend on the+ −
type and content of the individual media files. metaDataChanged()+ −
will be emitted when the media object has resolved new meta data.+ −
+ −
Errors encountered during playback and loading of media sources+ −
are reported by emitting a state changed signal with+ −
\l{Phonon::}{ErrorState}. The severity of the error can be queried+ −
by the \l{Phonon::}{ErrorType}. With a \l{Phonon::}{NormalError},+ −
it might be possible to continue the playback, for instance, if+ −
only audio playback fails for a media source which also has video.+ −
A \l{Phonon::}{FatalError} indicates that Phonon cannot continue+ −
playback of the current source, but it is possible to try with a+ −
different one. A user readable error message is given by+ −
errorString().+ −
+ −
\sa Phonon::MediaSource, Phonon::AudioOutput, VideoWidget,+ −
{Music Player Example}, {Phonon Overview}, Phonon::VideoPlayer,+ −
Phonon::createPlayer(), {Phonon Module}+ −
+ −
*/+ −
+ −
/*!+ −
\property Phonon::MediaObject::transitionTime+ −
\brief Defines the time between playback of two media sources+ −
in the media queue.+ −
+ −
A positive transition time defines a gap of silence between queued+ −
media sources.+ −
+ −
A transition time of 0 ms requests gapless playback (i.e., the+ −
next source in the media queue starts immediately after the+ −
playback of the current source finishes).+ −
+ −
A negative transition time defines a crossfade between the queued+ −
media sources.+ −
+ −
Defaults to 0 (gapless playback).+ −
+ −
\warning This feature might not work reliably with every+ −
backend.+ −
*/+ −
+ −
/*!+ −
\property Phonon::MediaObject::prefinishMark+ −
\brief the time when the prefinishMarkReached signal is emitted before playback ends.+ −
+ −
This property specifies the time in milliseconds the+ −
prefinishMarkReached() signal is emitted before the playback+ −
finishes. A value of \c 0 disables the signal. The signal is only+ −
emitted for the last source in the \l{queue()}{media queue}.+ −
+ −
Defaults to \c 0 (disabled).+ −
+ −
\warning For some media data the total time cannot be determined+ −
accurately, therefore the accuracy of the prefinishMarkReached signal+ −
can be bad sometimes. Still, it is better to use this method than to+ −
look at totalTime() and currentTime() to emulate the behavior+ −
because the backend might have more information available than your+ −
application does through totalTime() and currentTime().+ −
+ −
\sa prefinishMarkReached()+ −
*/+ −
+ −
/*!+ −
\property Phonon::MediaObject::tickInterval+ −
\brief The time interval in milliseconds between two ticks.+ −
+ −
The tick() signal is emitted continuously during playback.+ −
The tick interval is the time that elapses between the emission of two tick signals.+ −
If you set the interval to \c 0 the tick signal gets disabled.+ −
+ −
The tick() signal can, for instance, be used to update widgets+ −
that show the current position in the playback of a media source.+ −
+ −
Defaults to \c 0 (disabled).+ −
+ −
\warning The back-end is free to choose a different tick interval close+ −
to what you asked for. This means that the following code \c may fail:+ −
\snippet doc/src/snippets/code/doc_src_phonon-api.qdoc 9+ −
On the other hand the following is guaranteed:+ −
\snippet doc/src/snippets/code/doc_src_phonon-api.qdoc 10+ −
+ −
\sa tick()+ −
*/+ −
+ −
/*!+ −
\fn Phonon::MediaObject::~MediaObject()+ −
+ −
Destroys the MediaObject.+ −
*/+ −
+ −
/*!+ −
\fn State Phonon::MediaObject::state() const+ −
+ −
Returns the current Phonon::State of the object.+ −
+ −
\sa Phonon::State, stateChanged()+ −
*/+ −
+ −
/*!+ −
\fn bool Phonon::MediaObject::hasVideo() const+ −
+ −
Check whether the current media source includes a video stream.+ −
+ −
\warning This information is not resolved immediately after a+ −
media object gets a new source. Listen to the hasVideoChanged()+ −
signal instead.+ −
+ −
\snippet doc/src/snippets/code/doc_src_phonon-api.qdoc 11+ −
+ −
Returns \c true if the media contains video data; otherwise,+ −
returns \c false.+ −
+ −
\sa hasVideoChanged()+ −
*/+ −
+ −
/*!+ −
\fn bool Phonon::MediaObject::isSeekable() const+ −
+ −
Check whether it is possible to seek, i.e., change the+ −
playback position in the media stream.+ −
+ −
\warning This information is not solved immediately after the+ −
media object gets a new media source. The hasVideoChanged() signal+ −
is emitted after this information is available.+ −
+ −
\snippet doc/src/snippets/code/doc_src_phonon-api.qdoc 12+ −
+ −
Returns \c true if the current media may be seeked; otherwise,+ −
returns \c false.+ −
+ −
\sa seekableChanged()+ −
*/+ −
+ −
/*!+ −
\fn QStringList Phonon::MediaObject::metaData(const QString &key) const+ −
+ −
Returns the strings associated with the given \a key.+ −
+ −
Backends should use the keys specified in the Ogg Vorbis+ −
documentation: \l http://xiph.org/vorbis/doc/v-comment.html+ −
+ −
Therefore the following should work with every backend:+ −
+ −
Note that meta data is not resolved before the \c+ −
metaDataChanged() signal is emitted.+ −
+ −
A typical usage looks like this:+ −
+ −
\snippet doc/src/snippets/code/doc_src_phonon-api.qdoc 13+ −
*/+ −
+ −
/*!+ −
\fn QStringList Phonon::MediaObject::metaData(Phonon::MetaData key) const+ −
+ −
Returns the strings associated with the given \a key.+ −
+ −
Same as above except that the keys are defined in the+ −
Phonon::MetaData enum.+ −
+ −
\sa metaDataChanged()+ −
*/+ −
+ −
/*!+ −
\fn QMultiMap<QString, QString> Phonon::MediaObject::metaData() const+ −
+ −
Returns all meta data in a multi map. + −
+ −
\sa metaDataChanged()+ −
*/+ −
+ −
/*!+ −
\fn QString Phonon::MediaObject::errorString() const+ −
+ −
Returns a human-readable description of the last error that occurred.+ −
The strings given may vary between backends.+ −
+ −
The error description can be used to give a message to the user -+ −
and the developer - when the stateChanged() signal is emitted with+ −
\l{Phonon::}{ErrorState}.+ −
+ −
\section1 Qt Backends+ −
+ −
On Windows, Qt fetches its error messages from the DirectShow+ −
backend. This usually includes an error number, which can be+ −
looked up in the DirectShow documentation:+ −
\l{http://msdn.microsoft.com/archive/default.asp?url=/archive/en-us/dx81_c/directx_cpp/htm/errorandsuccesscodes.asp}.+ −
+ −
On Linux and Mac, the error strings are not fetched directly from+ −
the backend, but are created in the backend.+ −
+ −
\sa Phonon::ErrorState, stateChanged()+ −
*/+ −
+ −
/*!+ −
\fn ErrorType Phonon::MediaObject::errorType() const+ −
+ −
Tells your program what to do about the last error that occurred.+ −
Use this function after receiving a stateChanged() signal with+ −
\l{Phonon::}{ErrorState}.+ −
+ −
\sa Phonon::ErrorType, Phonon::ErrorState, stateChanged()+ −
*/+ −
+ −
/*!+ −
\fn MediaSource Phonon::MediaObject::currentSource() const+ −
+ −
Returns the current media source, i.e., the media source that is+ −
being played back. The current source is either set with+ −
setCurrentSource() or taken from the media queue() when a media+ −
source has finished playing.+ −
+ −
\sa setCurrentSource()+ −
*/+ −
+ −
/*!+ −
\fn void Phonon::MediaObject::setCurrentSource(const MediaSource &source)+ −
+ −
Set the media source the MediaObject should use.+ −
+ −
After the media object receives a new source, it will enter the+ −
\l{Phonon::}{LoadingState}. When it is ready to play, it+ −
enters the \l{Phonon::}{StoppedState} unless another state+ −
has been requested, e.g., by calling play().+ −
+ −
\a source is the MediaSource object to the media data. You can+ −
just as well use a QUrl or QString (for a local file) here.+ −
+ −
We show an example:+ −
+ −
\snippet doc/src/snippets/code/doc_src_phonon-api.qdoc 14+ −
+ −
\sa currentSource(), MediaSource+ −
*/+ −
+ −
/*!+ −
\fn QList<MediaSource> Phonon::MediaObject::queue() const+ −
+ −
Returns the queued media sources.+ −
+ −
This does list does not include the current source,+ −
returned by currentSource().+ −
+ −
\sa enqueue()+ −
*/+ −
+ −
/*!+ −
\fn void Phonon::MediaObject::setQueue(const QList<MediaSource> &sources)+ −
+ −
Set the \a sources to play when the current source has finished.+ −
+ −
This function will overwrite the current queue.+ −
+ −
\sa clearQueue(), enqueue()+ −
*/+ −
+ −
/*!+ −
\fn void Phonon::MediaObject::setQueue(const QList<QUrl> &urls)+ −
+ −
Set the \a urls to play when the current media has finished.+ −
+ −
This function overwrites the current queue.+ −
+ −
\sa clearQueue(), enqueue()+ −
*/+ −
+ −
/*!+ −
\fn void Phonon::MediaObject::enqueue(const MediaSource &source)+ −
+ −
Appends \a source to the queue.+ −
+ −
You can use this function to provide the next source after the+ −
aboutToFinish() signal has been emitted.+ −
+ −
\sa aboutToFinish(), setQueue(), clearQueue()+ −
*/+ −
+ −
/*!+ −
\fn void Phonon::MediaObject::enqueue(const QList<MediaSource> &sources)+ −
+ −
Appends multiple \a sources to the queue.+ −
+ −
\sa setQueue(), clearQueue()+ −
*/+ −
+ −
/*!+ −
\fn void Phonon::MediaObject::enqueue(const QList<QUrl> &urls)+ −
+ −
Appends the URLs in \a urls to the media source queue. + −
+ −
The function will create \l{MediaSource}s from the \l{QUrl}s, and+ −
append these to the queue.+ −
+ −
\sa setQueue(), clearQueue()+ −
*/+ −
+ −
/*!+ −
\fn void Phonon::MediaObject::clearQueue()+ −
+ −
Clears the queue of media sources.+ −
+ −
\sa queue(), enqueue()+ −
*/+ −
+ −
/*!+ −
\fn qint64 Phonon::MediaObject::currentTime() const+ −
+ −
Returns the current time (in milliseconds), i.e., position in the+ −
media stream, of the file currently being played.+ −
+ −
\sa tick(), totalTime(), remainingTime()+ −
*/+ −
+ −
/*!+ −
\fn qint64 Phonon::MediaObject::totalTime() const+ −
+ −
Get the total time (in milliseconds) of the file currently being played.+ −
+ −
Returns the total time in milliseconds.+ −
+ −
\warning The total time is not defined before the media object+ −
enters the \l{Phonon::}{LoadingState}.+ −
+ −
\sa totalTimeChanged()+ −
*/+ −
+ −
/*!+ −
\fn qint64 Phonon::MediaObject::remainingTime() const+ −
+ −
Get the remaining time (in milliseconds) of the file currently being played.+ −
+ −
Returns the remaining time in milliseconds.+ −
+ −
\sa totalTime(), currentTime(), totalTimeChanged()+ −
*/+ −
+ −
/*!+ −
\fn void Phonon::MediaObject::play()+ −
+ −
Requests playback of the media data to start.+ −
+ −
Playback starts when the stateChanged() signal is emitted with+ −
\l{Phonon::}{PlayingState}.+ −
+ −
If the media object is already in a+ −
\l{Phonon::}{PlayingState}, nothing happens.+ −
+ −
\sa stop(), pause(), stateChanged()+ −
*/+ −
+ −
/*!+ −
\fn void Phonon::MediaObject::pause()+ −
+ −
Requests playback to pause, and the media object to enter the+ −
\l{Phonon::}{PausedState}. If it was paused already, nothing+ −
changes.+ −
+ −
This function is asynchronous and the media might not be paused+ −
immediately.+ −
+ −
\sa play(), stop(), stateChanged()+ −
*/+ −
+ −
/*!+ −
\fn void Phonon::MediaObject::stop()+ −
+ −
Requests playback to stop, and the media object to enter the+ −
\l{Phonon::}{StoppedState}. If it was stopped before+ −
nothing changes.+ −
+ −
This function is asynchronous and the media might not be+ −
stopped immediately.+ −
+ −
\sa play(), pause(), stateChanged()+ −
*/+ −
+ −
/*!+ −
\fn void Phonon::MediaObject::seek(qint64 time)+ −
+ −
Requests a seek to the \a time indicated, specified in milliseconds.+ −
+ −
You can only seek if state() is PlayingState, BufferingState or PausedState.+ −
+ −
The call is asynchronous, so currentTime can still be the old+ −
value right after this method was called. If all you need is a+ −
slider that shows the current position and allows the user to+ −
seek, use the class SeekSlider.+ −
+ −
If the current source of the media object is not seekable, calls+ −
to this functions do nothing.+ −
+ −
\sa SeekSlider, tick()+ −
*/+ −
+ −
/*!+ −
\fn void Phonon::MediaObject::clear()+ −
+ −
Stops and removes all playing and enqueued media sources.+ −
+ −
\sa setCurrentSource()+ −
*/+ −
+ −
+ −
/*!+ −
\fn void Phonon::MediaObject::stateChanged(Phonon::State newstate, Phonon::State oldstate)+ −
+ −
This signal is emitted when the state of the MediaObject has changed.+ −
The \a oldstate and \a newstate parameters indicate the previous+ −
state and current state of the media object.+ −
+ −
If you are only interested in the new state of the media object, you can+ −
connect this signal to a slot that accepts only one State argument.+ −
*/+ −
+ −
/*!+ −
\fn void Phonon::MediaObject::tick(qint64 time)+ −
+ −
This signal is emitted in intervals defined by the+ −
\l{tickInterval} property. The current position of the media+ −
object in the stream is given by the \a time parameter. The \a+ −
time is specified in milliseconds.+ −
+ −
\sa tickInterval+ −
*/+ −
+ −
/*!+ −
\fn void Phonon::MediaObject::metaDataChanged()+ −
+ −
This signal is emitted when the media object has resolved new meta+ −
data. This will happen before the media object leaves the+ −
\l{Phonon::}{LoadingState} after a new source has been set.+ −
+ −
This signal is not emitted when the media object removes the+ −
current data, i.e., when a new source is set or an error has+ −
occurred. If you need to know this, you can listen for the+ −
\l{Phonon::}{ErrorState}, and connect to the+ −
\l{Phonon::MediaObject::}{currentSourceChanged()} signal.+ −
+ −
You can get the new meta data with the metaData methods.+ −
+ −
\sa metaData(), currentSourceChanged(), stateChanged(), Phonon::State+ −
*/+ −
+ −
/*!+ −
\fn void Phonon::MediaObject::seekableChanged(bool isSeekable)+ −
+ −
This signal is emitted when the media object's ability to seek in+ −
the media stream changes. \a isSeekable is true if it is possible+ −
to seek(); otherwise, it is false.+ −
+ −
Change in the ability to seek in the stream usually happens when+ −
the current source changes or when an error occurs.+ −
+ −
\omit Emitted whenever the return value of isSeekable()+ −
changes. \endomit+ −
+ −
Normally you'll check isSeekable() after setting a new media+ −
source, and then let this signal tell you when seeking is+ −
possible. That way you don't have to poll isSeekable().+ −
*/+ −
+ −
/*!+ −
\fn void Phonon::MediaObject::hasVideoChanged(bool hasVideo)+ −
+ −
Emitted whenever the return value of hasVideo() changes, i.e.,+ −
the media source being played back contains video.+ −
+ −
Normally you'll check hasVideo() first and then let this signal+ −
tell you whether video is available now or not. That way you+ −
don't have to poll hasVideo().+ −
+ −
\a hasVideo is true when the stream contains video and adding a+ −
VideoWidget will show a video, and false if there is no video data+ −
in the stream and adding a VideoWidget will show an empty (black)+ −
VideoWidget.+ −
*/+ −
+ −
/*!+ −
\fn void Phonon::MediaObject::bufferStatus(int percentFilled)+ −
+ −
Provides information about the status of the buffer.+ −
+ −
When a MediaObject is in the \l{Phonon::}{BufferingState}, it will+ −
send this signal regularly. \a percentFilled is a number between 0+ −
and 100 telling you how much the buffer is filled.+ −
+ −
You can use this signal to show a progress bar to the user when+ −
in BufferingState:+ −
+ −
\snippet doc/src/snippets/code/doc_src_phonon-api.qdoc 15+ −
+ −
Note that the \l{Phonon::}{BufferingState} is commonly used when+ −
waiting for data over a network connection, but this might not be+ −
true for all backends.+ −
*/+ −
+ −
/*!+ −
\fn void Phonon::MediaObject::finished()+ −
+ −
Emitted when the object has finished playback. It is not emitted+ −
if you call stop(), pause() or load(). It is emitted only when the+ −
current media source has finished playing and the media queue() is+ −
empty, or when a \l{Phonon::FatalError}{fatal error} occurs.+ −
+ −
\warning This signal is not emitted when the current source has+ −
finished and there's another source in the queue. It is only+ −
emitted when the queue is empty.+ −
+ −
\sa currentSourceChanged(), aboutToFinish(), prefinishMarkReached()+ −
*/+ −
+ −
/*!+ −
\fn void Phonon::MediaObject::currentSourceChanged(const Phonon::MediaSource &newSource)+ −
+ −
Emitted when the MediaObject fetches a new MediaSource from the+ −
queue() and before it enters the \l{Phonon::}{LoadingState} for+ −
the new source. The media object will take a new source from the+ −
queue() when it has finished the playback of the+ −
\l{currentSource()}{current source}.+ −
+ −
\a newSource is the source that starts to play at the time the+ −
signal is emitted.+ −
*/+ −
+ −
/*!+ −
\fn void Phonon::MediaObject::aboutToFinish()+ −
+ −
Emitted before the playback of the whole queue ends. When this+ −
signal is emitted you still have time to enqueue() a new+ −
MediaSource, so that playback continues.+ −
+ −
If you need a signal to be emitted at a specific time before+ −
playback is finished, you should use the prefinishMarkReached()+ −
signal instead.+ −
+ −
\sa enqueue(), prefinishMark, prefinishMarkReached()+ −
*/+ −
+ −
/*!+ −
\fn void Phonon::MediaObject::prefinishMarkReached(qint32 msecToEnd)+ −
+ −
Emitted when there are only \a msecToEnd milliseconds left+ −
of playback.+ −
+ −
\warning This signal is not emitted when there is another source+ −
in the queue. It is only emitted when the queue is empty.+ −
+ −
\sa setPrefinishMark(), prefinishMark(), aboutToFinish(), finished()+ −
*/+ −
+ −
/*!+ −
\fn void Phonon::MediaObject::totalTimeChanged(qint64 newTotalTime)+ −
+ −
This signal is emitted as soon as the total time of the media file is+ −
known or has changed. For most non-local media data the total+ −
time of the media can only be known after some time. At that time the+ −
totalTime function can not return useful information. You have+ −
to wait for this signal to know the real total time.+ −
+ −
\a newTotalTime is the length of the media file in milliseconds.+ −
+ −
\sa totalTime()+ −
*/+ −
+ −
/*!+ −
\fn MediaObject *Phonon::createPlayer(Phonon::Category category, const MediaSource &source = MediaSource())+ −
+ −
Convenience function to create a MediaObject and AudioOutput+ −
connected by a path. The \l{Phonon::}{MediaObject} return will+ −
have \a source set as its current source and the specified \a+ −
category.+ −
+ −
*/+ −
+ −
/*!+ −
\class Phonon::MediaObjectPrivate+ −
\inmodule Phonon+ −
\since 4.4+ −
\internal+ −
*/+ −
+ −
/*!+ −
\namespace Phonon::BackendCapabilities+ −
\inmodule Phonon+ −
\since 4.4+ −
\brief The BackendCapabilities namespace contains functions to describe the capabilities of the multimedia backend.+ −
+ −
*/+ −
+ −
/*!+ −
\class Phonon::BackendCapabilitiesPrivate+ −
\inmodule Phonon+ −
\since 4.4+ −
\internal+ −
*/+ −
+ −
/*!+ −
\class Phonon::BackendCapabilities::Notifier+ −
\since 4.4+ −
\inmodule Phonon+ −
\inheaderfile Phonon/BackendCapabilities+ −
+ −
Notifications about backend capabilities.+ −
*/+ −
+ −
/*!+ −
\fn void Phonon::BackendCapabilities::Notifier::capabilitiesChanged()+ −
+ −
This signal is emitted if the capabilities have changed. This can+ −
happen if the user has requested a backend change.+ −
*/+ −
+ −
/*!+ −
\fn void Phonon::BackendCapabilities::Notifier::availableAudioOutputDevicesChanged()+ −
+ −
This signal is emitted when audio output devices were plugged or+ −
unplugged.+ −
+ −
Check BackendCapabilities::availableAudioOutputDevices to get the+ −
current list of available devices.+ −
*/+ −
+ −
/*!+ −
\fn Notifier *Phonon::BackendCapabilities::notifier()+ −
+ −
Use this function to get a QObject pointer to connect to the capabilitiesChanged signal.+ −
+ −
\return a pointer to a QObject.+ −
+ −
The capabilitiesChanged signal is emitted if the capabilities have changed. This can+ −
happen if the user has requested a backend change.+ −
+ −
To connect to this signal do the following:+ −
\snippet doc/src/snippets/code/doc_src_phonon-api.qdoc 16+ −
+ −
\sa Notifier::capabilitiesChanged()+ −
*/+ −
+ −
/*!+ −
\fn QStringList Phonon::BackendCapabilities::availableMimeTypes()+ −
+ −
Returns a list of mime types that the Backend can decode.+ −
+ −
\sa isMimeTypeAvailable()+ −
*/+ −
+ −
/*!+ −
\fn bool Phonon::BackendCapabilities::isMimeTypeAvailable(const QString &mimeType)+ −
+ −
Often all you want to know is whether one given MIME type can be+ −
decoded by the backend. Use this method in favor of+ −
availableMimeTypes() as it can give you a negative answer without+ −
having a backend loaded.+ −
+ −
Returns true if the given \a mimeType is supported by the backend;+ −
otherwise, returns false.+ −
+ −
\sa availableMimeTypes()+ −
*/+ −
+ −
/*!+ −
\fn QList<AudioOutputDevice> Phonon::BackendCapabilities::availableAudioOutputDevices()+ −
+ −
Returns the audio output devices the backend supports.+ −
+ −
\return A list of AudioOutputDevice objects that give a name and+ −
description for every supported audio output device.+ −
*/+ −
+ −
/*!+ −
\fn QList<EffectDescription> Phonon::BackendCapabilities::availableAudioEffects()+ −
+ −
Returns descriptions for the audio effects the backend supports.+ −
+ −
\return A list of AudioEffectDescription objects that give a name and+ −
description for every supported audio effect.+ −
*/+ −
+ −
/*!+ −
\internal+ −
\class ObjectDescriptionModelData+ −
\internal+ −
\inmodule Phonon+ −
\brief Data class for models for ObjectDescription objects.+ −
*/+ −
+ −
/*!+ −
\typedef Phonon::EffectDescription+ −
\relates Phonon::ObjectDescription+ −
+ −
EffectDescription gives a description of an \l{Processors}{audio+ −
effect}. It is a typedef of the \l{Phonon::}{ObjectDescription}+ −
class. Please see its class description for details.+ −
+ −
EffectDescription is used to create audio \l{Phonon::}{Effect}s,+ −
which can be inserted into a media graph, altering an audio+ −
stream.+ −
+ −
\sa Phonon::ObjectDescription, {Capabilities Example}, {Media+ −
Player}+ −
+ −
*/+ −
+ −
/*!+ −
\class Phonon::ObjectDescriptionModel+ −
\inmodule Phonon+ −
\internal+ −
\since 4.4+ −
\brief The ObjectDescriptionModel class provides a model from+ −
a list of ObjectDescription objects.+ −
+ −
ObjectDescriptionModel is a read only model that supplies a list+ −
using ObjectDescription::name() for the text and+ −
ObjectDescription::description() for the tooltip. If set the properties+ −
"icon" and "available" are used to set the decoration and disable the+ −
item (disabled only visually, you can still select and drag it).+ −
+ −
It also provides the methods moveUp() and moveDown() to order the list.+ −
Additionally drag and drop is possible so that+ −
QAbstractItemView::InternalMove can be used.+ −
The resulting order of the ObjectDescription::index() values can then be+ −
retrieved using tupleIndexOrder().+ −
+ −
An example use case would be to give the user a QComboBox to select+ −
the output device:+ −
\snippet doc/src/snippets/code/doc_src_phonon-api.qdoc 17+ −
+ −
And to retrieve the selected AudioOutputDevice:+ −
\snippet doc/src/snippets/code/doc_src_phonon-api.qdoc 18+ −
+ −
*/+ −
+ −
/*!+ −
\fn inline int Phonon::ObjectDescriptionModel::rowCount(const QModelIndex &parent = QModelIndex()) const+ −
+ −
Returns the number of rows in the model. This value corresponds+ −
to the size of the list passed through setModelData.+ −
+ −
\param parent The optional \a parent argument is used in most models to specify+ −
the parent of the rows to be counted. Because this is a list if a+ −
valid parent is specified the result will always be 0.+ −
+ −
Reimplemented from QAbstractItemModel.+ −
+ −
\sa QAbstractItemModel::rowCount()+ −
*/+ −
+ −
/*!+ −
\fn inline QVariant Phonon::ObjectDescriptionModel::data(const QModelIndex &index, int role = Qt::DisplayRole) const+ −
+ −
Returns data from the item with the given \a index for the specified+ −
\a role.+ −
If the view requests an invalid index, an invalid variant is+ −
returned.+ −
+ −
Reimplemented from QAbstractItemModel.+ −
+ −
\sa QAbstractItemModel::data(), Qt::ItemDataRole+ −
*/+ −
+ −
/*!+ −
\fn inline Qt::ItemFlags Phonon::ObjectDescriptionModel::flags(const QModelIndex &index) const+ −
\internal+ −
+ −
Reimplemented to show unavailable devices as disabled (but still+ −
selectable). The \a index of the model index for which to return+ −
flags.+ −
+ −
*/+ −
+ −
/*!+ −
\fn inline QList<int> Phonon::ObjectDescriptionModel::tupleIndexOrder() const+ −
+ −
Returns a list of indexes in the same order as they are in the+ −
model. The indexes come from the ObjectDescription::index+ −
method.+ −
+ −
This is useful to let the user define a list of preference.+ −
*/+ −
+ −
/*!+ −
\fn inline int Phonon::ObjectDescriptionModel::tupleIndexAtPositionIndex(int positionIndex) const+ −
+ −
Returns the ObjectDescription::index for the tuple+ −
at the given position \a positionIndex. For example a+ −
QComboBox will give you the currentIndex as the+ −
position in the list. But to select the according+ −
AudioOutputDevice using AudioOutputDevice::fromIndex+ −
you can use this method.+ −
+ −
\param positionIndex The position in the list.+ −
*/+ −
+ −
/*!+ −
\class Phonon::ObjectDescriptionModelDataPrivate+ −
\inmodule Phonon+ −
\since 4.4+ −
\internal+ −
*/+ −
+ −
/*!+ −
\fn inline QMimeData *Phonon::ObjectDescriptionModel::mimeData(const QModelIndexList &indexes) const+ −
\internal+ −
+ −
Returns the MIME data that dropMimeData() can use to create new+ −
items.+ −
*/+ −
+ −
/*!+ −
\fn inline void Phonon::ObjectDescriptionModel::moveUp(const QModelIndex &index)+ −
+ −
Moves the item at the given \a index up. In the resulting list+ −
the items at index.row() and index.row() - 1 are swapped.+ −
+ −
Connected views are updated automatically.+ −
*/+ −
+ −
/*!+ −
\fn inline void Phonon::ObjectDescriptionModel::moveDown(const QModelIndex &index)+ −
+ −
Moves the item at the given \a index down. In the resulting list+ −
the items at index.row() and index.row() + 1 are swapped.+ −
+ −
Connected views are updated automatically.+ −
*/+ −
+ −
/*!+ −
\fn explicit inline Phonon::ObjectDescriptionModel::ObjectDescriptionModel(QObject *parent = 0)+ −
+ −
Constructs a ObjectDescription model with the+ −
given \a parent.+ −
*/+ −
+ −
/*!+ −
\fn explicit inline Phonon::ObjectDescriptionModel::ObjectDescriptionModel(const QList<ObjectDescription<type> > &data, QObject *parent = 0)+ −
+ −
Constructs a ObjectDescription model with the+ −
given \a parent and the given \a data.+ −
*/+ −
+ −
/*!+ −
\fn inline void Phonon::ObjectDescriptionModel::setModelData(const QList<ObjectDescription<type> > &data)+ −
+ −
Sets the model data using the list provided by \a data.+ −
+ −
All previous model data is cleared.+ −
*/+ −
+ −
/*!+ −
\fn inline QList<ObjectDescription<type> > Phonon::ObjectDescriptionModel::modelData() const+ −
+ −
Returns the model data.+ −
+ −
As the order of the list might have changed this can be different+ −
to what was set using setModelData().+ −
*/+ −
+ −
/*!+ −
\fn inline ObjectDescription<type> Phonon::ObjectDescriptionModel::modelData(const QModelIndex &index) const+ −
+ −
Returns one ObjectDescription of the model data for the given \a index.+ −
*/+ −
+ −
/*!+ −
\fn inline Qt::DropActions Phonon::ObjectDescriptionModel::supportedDropActions() const+ −
+ −
This model supports drag and drop to copy or move+ −
items.+ −
*/+ −
+ −
/*!+ −
\fn inline bool Phonon::ObjectDescriptionModel::dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent)+ −
+ −
Accept drops from other models of the same ObjectDescriptionType.+ −
+ −
The \a data is dropped at the given \a row and \a column; you+ −
also receive the \a parent model index.+ −
+ −
If a valid \a parent is given the dropped items will be inserted+ −
above that item.+ −
*/+ −
+ −
/*!+ −
\fn inline bool Phonon::ObjectDescriptionModel::removeRows(int row, int count, const QModelIndex &parent = QModelIndex())+ −
+ −
Removes count rows starting with the given row.+ −
+ −
If a valid \a parent is given no rows are removed since this is a+ −
list model.+ −
+ −
Returns true if the rows were successfully removed; otherwise returns false.+ −
*/+ −
+ −
/*!+ −
\fn inline QStringList Phonon::ObjectDescriptionModel::mimeTypes() const+ −
+ −
Returns a list of supported drag and drop MIME types. Currently+ −
it only supports one type used internally.+ −
*/+ −
+ −
/*!+ −
\class Phonon::EffectInterface+ −
\inmodule Phonon+ −
\since 4.4+ −
\internal+ −
*/+ −
+ −
/*!+ −
\class Phonon::Effect+ −
\inmodule Phonon+ −
\inheaderfile Phonon/Effect+ −
\since 4.4+ −
\brief The Effect class is used to transform audio streams.+ −
+ −
An effect is a media node which is inserted into a path between a+ −
\l{Phonon::}{MediaObject} and an audio output node, for instance,+ −
an \l{Phonon::}{AudioOutput}. The Effect transforms the media+ −
stream on that path.+ −
+ −
Examples may include simple modifiers, such as fading or pitch+ −
shifting, and more complex mathematical transformations. You can+ −
query the backend for available effects with+ −
BackendCapabilities::availableAudioEffects(). Note that the+ −
effects available is dependent on the underlying system+ −
(DirectDraw, GStreamer, or QuickTime).+ −
+ −
In order to use an effect, insert it into the path as follows:+ −
+ −
\snippet doc/src/snippets/code/doc_src_phonon-api.qdoc 19+ −
+ −
The effect will immediately begin applying it's transformations on+ −
the path. To stop it, remove the Effect from the path.+ −
+ −
To create an effect, you use the \l{Phonon::}{EffectDescription}+ −
class, which you get from+ −
\l{BackendCapabilities::}{availableAudioEffects()}. We give a code+ −
example below.+ −
+ −
\snippet doc/src/snippets/audioeffects.cpp 0+ −
+ −
An effect can have one or more parameters, which let you alter how+ −
the effect works, for instance, by specifying the depth of a+ −
reverb effect. See the EffectParameter class description for+ −
details.+ −
+ −
Phonon also provides EffectWidget, which lets the user modify the+ −
parameters of an effect an the fly; e.g., with combo boxes.+ −
+ −
\sa {Phonon Module}, EffectWidget+ −
*/+ −
+ −
/*!+ −
\fn explicit Phonon::Effect::Effect(const EffectDescription &description, QObject *parent = 0)+ −
+ −
Constructs a new effect object with the given \a description and \a parent object.+ −
+ −
The EffectDescription object determines the type of the effect.+ −
+ −
\sa {Phonon::BackendCapabilities::availableAudioEffects()}+ −
*/+ −
+ −
/*!+ −
\fn Phonon::Effect::Effect(EffectPrivate &dd, QObject *parent)+ −
\internal+ −
*/+ −
+ −
/*!+ −
\fn Phonon::Effect::~Effect()+ −
\internal+ −
*/+ −
+ −
/*!+ −
\fn QVariant Phonon::Effect::parameterValue(const EffectParameter ¶meter) const+ −
+ −
Returns the value of the given effect \a parameter. You can fetch+ −
the available parameters for an effect with parameters().+ −
+ −
\sa setParameterValue(), EffectParameter+ −
*/+ −
+ −
/*!+ −
\fn void Phonon::Effect::setParameterValue(const EffectParameter ¶meter, const QVariant &value)+ −
+ −
Sets the given effect \a parameter to the specified \a value.+ −
+ −
Parameters for an effect are returned by parameters(). You can+ −
check which QVariant::Type an EffectParameter takes with the+ −
EffectParameter::type() function.+ −
+ −
\sa parameterValue(), EffectParameter+ −
*/+ −
+ −
/*!+ −
\fn EffectDescription Phonon::Effect::description() const;+ −
+ −
Returns the description of this effect. This is the same+ −
description that was passed to the constructor. + −
*/+ −
+ −
/*!+ −
\fn QList<EffectParameter> Phonon::Effect::parameters() const;+ −
+ −
Returns a list of parameters that this effect provides to control+ −
its behavior.+ −
+ −
\sa EffectParameter, EffectWidget+ −
*/+ −
+ −
/*!+ −
\class Phonon::EffectPrivate+ −
\inmodule Phonon+ −
\since 4.4+ −
\internal+ −
*/+ −
+ −
/*!+ −
\class Phonon::AudioOutput+ −
\inmodule Phonon+ −
\inheaderfile Phonon/AudioOutput+ −
\since 4.4+ −
\brief The AudioOutput class is used to send data to audio output devices.+ −
+ −
The AudioOutput class plays sound over a sound device. The audio+ −
output needs to be connected to a \l{Phonon::}{MediaObject} using+ −
\l{Phonon::}{createPath()}. To start playback, you call+ −
\l{Phonon::MediaObject::}{play()} on the media object.+ −
+ −
\snippet snippets/phonon.cpp 2+ −
+ −
The class supports changing the volume(). It is also possible to+ −
mute the sound. + −
+ −
To find out what \l{Phonon::}{AudioOutputDevice}s are available+ −
for AudioOutput, you can call+ −
BackendCapabilities::availableAudioOutputDevices(). A default device is+ −
selected by the backend, but it is possible to set the device to+ −
be used with setOutputDevice(). The outputDeviceChanged() signal+ −
will be emitted if the device changes.+ −
+ −
If an error occurs with the playback, for instance, if no valid+ −
output device is found, the media object will receive a+ −
stateChanged() signal with the \l{Phonon::}{ErrorState}.+ −
+ −
Note that the default values of properties are dependent on the+ −
backend.+ −
+ −
\sa Phonon::VolumeSlider, {Music Player Example}, BackendCapabilities, {Phonon Module}+ −
*/+ −
+ −
/*!+ −
\property Phonon::AudioOutput::name+ −
+ −
This is the name that appears in Mixer applications that control+ −
the volume of this output.+ −
+ −
*/+ −
+ −
/*!+ −
\property Phonon::AudioOutput::volume+ −
+ −
This is the current loudness of the output. \omit The volume is a+ −
real value between 0.0 (minimum) and 1.0 (maximum). The volume+ −
follows the sound device used, with 1.0 being the maximum volume+ −
the device can produce. \endomit+ −
+ −
(it is using Stevens' law+ −
to calculate the change in voltage internally).+ −
+ −
\sa volumeDecibel+ −
*/+ −
+ −
/*!+ −
\property Phonon::AudioOutput::volumeDecibel+ −
+ −
This is the current volume of the output in decibel.+ −
+ −
0 dB means no change in volume, -6dB means an attenuation of the+ −
voltage to 50% and an attenuation of the power to 25%, -inf dB means+ −
silence.+ −
+ −
\sa volume+ −
*/+ −
+ −
/*!+ −
\property Phonon::AudioOutput::outputDevice+ −
This property holds the (hardware) destination for the output.+ −
+ −
The default device is determined by the \l{Phonon::}{Category} and the global+ −
configuration for that category. Normally you don't need+ −
to override this setting - letting the user change the global+ −
configuration is the right choice. You can still override the+ −
device though, if you have good reasons to do so.+ −
+ −
\sa outputDeviceChanged()+ −
*/+ −
+ −
/*!+ −
\property Phonon::AudioOutput::muted+ −
This property tells whether the output is muted.+ −
+ −
Muting the output has the same effect as calling setVolume(0.0).+ −
*/+ −
+ −
/*!+ −
\fn explicit Phonon::AudioOutput::AudioOutput(Phonon::Category category, QObject *parent = 0)+ −
+ −
Creates a new AudioOutput with the given \a parent that defines+ −
output to a physical device.+ −
+ −
The \a category can be used by mixer applications to group volume+ −
controls of applications into categories. That makes it easier for+ −
the user to identify the programs.+ −
The category is also used for the default output device that is+ −
configured centrally. As an example: often users want to have the+ −
audio signal of a VoIP application go to their USB headset while+ −
all other sounds should go to the internal soundcard.+ −
+ −
\sa Phonon::categoryToString(), outputDevice+ −
*/+ −
+ −
/*!+ −
\fn explicit Phonon::AudioOutput::AudioOutput(QObject *parent = 0)+ −
+ −
Creates a new AudioOutput that defines output to the system+ −
default device with the \{Phonon::Category::}{NoCategory} category+ −
+ −
\sa Phonon::categoryToString(), outputDevice+ −
*/+ −
+ −
/*!+ −
\fn Phonon::Category Phonon::AudioOutput::category() const+ −
+ −
Returns the category of this output.+ −
+ −
\sa Phonon::AudioOutput::AudioOutput()+ −
*/+ −
+ −
/*!+ −
\fn void Phonon::AudioOutput::volumeChanged(qreal newVolume)+ −
+ −
This signal is emitted whenever the volume has changed. As the+ −
volume can change without a call to setVolume (calls over dbus)+ −
this is important to keep a widget showing the current volume up+ −
to date.+ −
+ −
\a newVolume is the new volume level.+ −
+ −
\sa setVolume(), volume()+ −
*/+ −
+ −
/*!+ −
\fn void Phonon::AudioOutput::mutedChanged(bool muted)+ −
+ −
This signal is emitted when the muted property has changed. The \a muted+ −
value passed by the signal indicates the state of the muted property.+ −
As this property can change by IPC (DBus) calls a UI element showing+ −
the muted property should listen to this signal.+ −
*/+ −
+ −
/*!+ −
\fn void Phonon::AudioOutput::outputDeviceChanged(const Phonon::AudioOutputDevice &newAudioOutputDevice)+ −
+ −
This signal is emitted when the (hardware) device for the output+ −
has changed. \a newAudioOutputDevice is the new device.+ −
+ −
The change can happen either through setOutputDevice or if the+ −
global configuration for the used category has changed.+ −
+ −
\sa outputDevice+ −
*/+ −
+ −
/*!+ −
\class Phonon::AudioOutputPrivate+ −
\inmodule Phonon+ −
\since 4.4+ −
\internal+ −
*/+ −
+ −
/*!+ −
\class Phonon::EffectParameter+ −
\inmodule Phonon+ −
\inheaderfile Phonon/EffectParameter+ −
\since 4.4+ −
\brief The EffectParameter class describes one parameter of an effect.+ −
+ −
You fetch the parameters of an \l{Phonon::}{Effect} with+ −
\l{Phonon::}{Effect::parameters()}.+ −
+ −
\snippet doc/src/snippets/phononeffectparameter.cpp 0+ −
+ −
To describe itself, an effect parameter gives a name() and+ −
possibly description() (depending on the backend used). These are+ −
suited to present the effect parameter to the user of a Phonon+ −
application.+ −
+ −
Note that effects are created by the backend, and that+ −
their name and descriptions may vary.+ −
+ −
The value of an effect parameter is stored in a \l{QVariant},+ −
of which type() is usually \c int or \c double. + −
+ −
The value is retrieved with \l{Phonon::}{Effect::parameterValue()}+ −
and set with \l{Phonon::Effect::}{setParameterValue()} - both of+ −
which takes the EffectParameter as argument. Note that not all+ −
effect parameters support setting of their value. + −
+ −
You get the values a parameter can take with possibleValues(); an+ −
empty list is returned if the values are continuous.+ −
+ −
A parameter may also specify default(), minimum(), and maximum()+ −
values. Values are returned as \l{QVariant}s. If the parameter+ −
does not have the requested value, an \l{QVariant::Invalid}+ −
invalid QVariant is returned from these functions.+ −
+ −
The \l{Phonon::}{EffectWidget} provides a widget with which one+ −
can control the parameters of an \l{Phonon::}{Effect}.+ −
+ −
\snippet doc/src/snippets/phononeffectparameter.cpp 1+ −
+ −
\sa Effect, EffectWidget, {Capabilities Example}, {Phonon Module}+ −
*/+ −
+ −
/*!+ −
\fn Phonon::EffectParameter::EffectParameter()+ −
\internal+ −
+ −
Creates an invalid effect parameter.+ −
*/+ −
+ −
/*!+ −
\fn Phonon::EffectParameter::~EffectParameter()+ −
+ −
Destroys the effect parameter.+ −
*/+ −
+ −
/*!+ −
\fn Phonon::EffectParameter::EffectParameter(const EffectParameter &other)+ −
+ −
Constructs a copy of the \a other effect parameter.+ −
*/+ −
+ −
/*!+ −
\fn const QString &Phonon::EffectParameter::name() const+ −
+ −
The name of the parameter. Can be used as the label.+ −
+ −
\return A label for the parameter.+ −
*/+ −
+ −
/*!+ −
\fn const QString &Phonon::EffectParameter::description() const+ −
+ −
The parameter may come with a description (LADSPA doesn't have a+ −
field for this, so don't expect many effects to provide a+ −
description).+ −
+ −
The description can be used for a tooltip or WhatsThis help.+ −
+ −
\return A text describing the parameter.+ −
*/+ −
+ −
/*!+ −
\fn QVariant::Type Phonon::EffectParameter::type() const+ −
+ −
Returns the parameter type.+ −
+ −
Common types are QVariant::Int, QVariant::Double, QVariant::Bool and QVariant::String. When+ −
QVariant::String is returned you get the possible values from possibleValues.+ −
*/+ −
+ −
/*!+ −
\fn bool Phonon::EffectParameter::isLogarithmicControl() const+ −
+ −
Returns whether the parameter should be+ −
displayed using a logarithmic scale. This is particularly useful for+ −
frequencies and gains.+ −
*/+ −
+ −
/*!+ −
\fn QVariant Phonon::EffectParameter::minimumValue() const+ −
+ −
The minimum value to be used for the control to edit the parameter.+ −
+ −
If the returned QVariant is invalid the value is not bounded from+ −
below.+ −
*/+ −
+ −
/*!+ −
\fn QVariant Phonon::EffectParameter::maximumValue() const+ −
+ −
The maximum value to be used for the control to edit the parameter.+ −
+ −
If the returned QVariant is invalid the value is not bounded from+ −
above.+ −
*/+ −
+ −
/*!+ −
\fn QVariant Phonon::EffectParameter::defaultValue() const+ −
+ −
The default value.+ −
*/+ −
+ −
/*!+ −
\fn QVariantList Phonon::EffectParameter::possibleValues() const+ −
+ −
The possible values to be used for the control to edit the parameter.+ −
+ −
if the value of this parameter is to be picked from predefined values+ −
this returns the list (otherwise it returns an empty QVariantList).+ −
*/+ −
+ −
/*!+ −
\fn bool Phonon::EffectParameter::operator<(const EffectParameter &rhs) const+ −
+ −
\internal+ −
compares the ids of the parameters+ −
*/+ −
+ −
/*!+ −
\fn bool Phonon::EffectParameter::operator>(const EffectParameter &rhs) const+ −
+ −
\internal+ −
compares the ids of the parameters+ −
*/+ −
+ −
/*!+ −
\fn bool Phonon::EffectParameter::operator==(const EffectParameter &rhs) const+ −
+ −
\internal+ −
compares the ids of the parameters+ −
*/+ −
+ −
/*!+ −
\fn Phonon::EffectParameter &Phonon::EffectParameter::operator=(const EffectParameter &other)+ −
+ −
Assigns the \a other effect parameter to this parameter and returns+ −
a reference to this parameter.+ −
*/+ −
+ −
/*!+ −
\enum Phonon::EffectParameter::Hint+ −
+ −
Only for backend developers:+ −
+ −
Flags to set the return values of isToggleControl(),+ −
isLogarithmicControl(), isIntegerControl(), isBoundedBelow() and+ −
isBoundedAbove(). The values of the flags correspond to the values+ −
used for LADSPA effects.+ −
+ −
\value ToggledHint+ −
If this hint is set it means that+ −
the control has only two states: zero and non-zero+ −
(see isToggleControl()).+ −
+ −
\value LogarithmicHint+ −
LADSPA's SAMPLE_RATE hint needs to be translated by the backend+ −
to normal bounds, as the backend knows the sample rate - and the+ −
frontend doesn't (see isLogarithmicControl()).+ −
+ −
\value IntegerHint See isIntegerControl().+ −
*/+ −
+ −
/*!+ −
\fn Phonon::EffectParameter::EffectParameter(int parameterId,+ −
const QString &name, EffectParameter::Hints hints,+ −
const QVariant &defaultValue, const QVariant &min = QVariant(),+ −
const QVariant &max = QVariant(), const QVariantList &values = QVariantList(),+ −
const QString &description = QString())+ −
+ −
Only to be used by backend implementations:+ −
+ −
Creates a new effect parameter.+ −
+ −
\a parameterId This is a number to uniquely identify the+ −
parameter. The id is used for value() and setValue().+ −
+ −
\a name is the name/label for this parameter.+ −
+ −
\a hints sets the hints for the type of parameter.+ −
+ −
\a defaultValue The value that should be used as a default.+ −
+ −
\a min is the minimum value allowed for this parameter. You only+ −
need to set this if the BoundedBelowHint is set.+ −
+ −
\a max is the maximum value allowed for this parameter. You only+ −
need to set this if the BoundedAboveHint is set.+ −
+ −
The \a values parameter is the values that the effect parameter+ −
can take (only applies if non-continuous) + −
+ −
\a description is a descriptive text for the parameter+ −
(explaining what it controls) to be used as a tooltip or+ −
WhatsThis help.+ −
*/+ −
+ −
/*!+ −
\fn int Phonon::EffectParameter::id() const+ −
+ −
\internal+ −
+ −
Returns the parameter's identifier.+ −
*/+ −
+ −
/*!+ −
\typedef Phonon::AudioOutputInterface+ −
\inmodule Phonon+ −
\internal+ −
*/+ −
+ −
/*!+ −
\class Phonon::AudioOutputInterface40+ −
\inmodule Phonon+ −
\since 4.4+ −
\internal+ −
\brief Interface for AudioOutput objects+ −
+ −
*/+ −
+ −
/*!+ −
\fn virtual Phonon::AudioOutputInterface40::~AudioOutputInterface40()+ −
\internal+ −
*/+ −
+ −
/*!+ −
\fn virtual qreal Phonon::AudioOutputInterface40::volume() const = 0+ −
\internal+ −
*/+ −
+ −
/*!+ −
\fn virtual void Phonon::AudioOutputInterface40::setVolume(qreal) = 0+ −
\internal+ −
*/+ −
+ −
/*!+ −
\fn virtual int Phonon::AudioOutputInterface40::outputDevice() const = 0+ −
\internal+ −
*/+ −
+ −
/*!+ −
\fn virtual bool Phonon::AudioOutputInterface40::setOutputDevice(int) = 0+ −
\internal+ −
*/+ −
+ −
/*!+ −
\class Phonon::Path+ −
\inmodule Phonon+ −
\inheaderfile Phonon/Path+ −
\since 4.4+ −
\brief The Path class describes connections between media nodes.+ −
+ −
In a \l{Building Graphs}{media graph}, \l{Phonon::}{MediaNode}s+ −
are connected by Paths. The multimedia travels in streams over+ −
these paths.+ −
+ −
You create a path between two media nodes using the static+ −
Phonon::createPath() function, which takes two nodes as arguments.+ −
The first argument will send the media stream to the second.+ −
Please refer to the class description of the individual media+ −
nodes and the Phonon \l{Phonon Overview}{overview} to see which+ −
nodes can be connected to each other.+ −
+ −
Paths are also used to insert audio \l{Phonon::}{Effect}s between+ −
two media nodes. The effect will then alter the stream on the+ −
path. Notice that \l{Phonon::}{Effect}s also are media nodes, but+ −
that insertEffect() - instead of Phonon::createPath() - is used to+ −
insert them into the media graph.+ −
+ −
The following code example shows how to create a path between two+ −
media nodes and insert an effect on that path.+ −
+ −
\snippet doc/src/snippets/code/doc_src_phonon-api.qdoc 20+ −
+ −
\sa Phonon::MediaNode, Phonon::MediaObject, Phonon::AudioOutput,+ −
Phonon::VideoWidget, {Phonon Module}+ −
*/+ −
+ −
/*!+ −
\fn Phonon::Path::~Path();+ −
+ −
Destroys this reference to the Path. If the path was valid the connection is not broken+ −
as both the source and the sink MediaNodes still keep a reference to the Path.+ −
+ −
\sa disconnect()+ −
*/+ −
+ −
/*!+ −
\fn Phonon::Path::Path();+ −
+ −
Creates an invalid path.+ −
+ −
You can still make it a valid path by calling reconnect. It is+ −
recommended to use the Phonon::createPath() function to create+ −
paths.+ −
+ −
\sa Phonon::createPath(), isValid()+ −
*/+ −
+ −
/*!+ −
\fn Phonon::Path::Path(const Path &path);+ −
+ −
Constructs a copy of the other \a path specified.+ −
+ −
This constructor is fast thanks to explicit sharing.+ −
*/+ −
+ −
/*!+ −
\fn bool Phonon::Path::isValid() const;+ −
+ −
A path is considered valid if it is connected to two media nodes,+ −
in which case this function returns true. If it is connected to+ −
one or no media nodes, it is consider invalid, and this function+ −
will then return false.+ −
*/+ −
+ −
/*!+ −
\fn Effect *Phonon::Path::insertEffect(const EffectDescription &desc, Effect *insertBefore = 0);+ −
+ −
Creates and inserts an effect into the path.+ −
+ −
You may insert effects of the same class as often as you like,+ −
but if you insert the same object, the call will fail.+ −
+ −
\a desc is the EffectDescription object for the effect to be inserted.+ −
+ −
If you already inserted an effect you can+ −
tell with \a insertBefore in which order the data gets+ −
processed. If this is \c 0 the effect is appended at the end of+ −
the processing list. If the effect has not been inserted before+ −
the method will do nothing and return \c false.+ −
+ −
Returns a pointer to the effect object if it could be inserted+ −
at the specified position. If \c 0 is returned, the effect was not+ −
inserted.+ −
+ −
Below is a code example for inserting an effect into a path:+ −
+ −
\snippet doc/src/snippets/audioeffects.cpp 0+ −
+ −
\sa removeEffect(), effects()+ −
*/+ −
+ −
/*!+ −
\fn bool Phonon::Path::insertEffect(Effect *effect, Effect *insertBefore = 0);+ −
+ −
Inserts the given \a effect into the path before the effect specified by \a insertBefore+ −
and returns true if successful; otherwise returns false.+ −
+ −
If \a insertBefore is zero, the effect is appended to the processing list.+ −
+ −
You may insert effects of the same class as often as you like, but if you insert+ −
the same object, the call will fail.+ −
+ −
\a effect will be inserted right before \a insertBefore. If+ −
\a insertBefore is \c 0, the effect is appended at the end of the+ −
processing list. If the effect has not been inserted before the+ −
method will do nothing and return \c false.+ −
+ −
Returns whether the effect could be inserted at the specified+ −
position. If \c false is returned the effect was not inserted.+ −
+ −
\sa removeEffect(), effects()+ −
*/+ −
+ −
/*!+ −
\fn bool Phonon::Path::removeEffect(Effect *effect);+ −
+ −
Removes the given \a effect from the path and returns true; otherwise returns false.+ −
+ −
Removes an \a effect from the path.+ −
+ −
If the effect is deleted while it is still connected, the effect will be removed+ −
automatically.+ −
+ −
\omit+ −
\param effect The effect to be removed.+ −
+ −
\return Returns whether the call was successful. If it returns+ −
\c false the effect could not be found in the path, meaning it+ −
has not been inserted before.+ −
\endomit+ −
+ −
\sa insertEffect(), effects()+ −
*/+ −
+ −
/*!+ −
\fn QList<Effect *> Phonon::Path::effects() const;+ −
+ −
Returns a list of Effect objects that are currently+ −
used as effects. The order in the list determines the order the+ −
signal is sent through the effects.+ −
+ −
\return A list with all current effects.+ −
+ −
\sa insertEffect(), removeEffect()+ −
*/+ −
+ −
/*!+ −
\fn bool Phonon::Path::reconnect(MediaNode *source, MediaNode *sink);+ −
+ −
Changes the media nodes the path is connected to by connecting the path+ −
to the \a source and \a sink nodes specified. Returns true if successful;+ −
otherwise returns false.+ −
+ −
If unsuccessful, the path remains connected to the same nodes as before.+ −
+ −
\sa Phonon::createPath(), {Phonon Overview}+ −
*/+ −
+ −
/*!+ −
\fn bool Phonon::Path::disconnect();+ −
+ −
Tries to disconnect the path from the MediaNodes it is connected to, returning+ −
true if successful or false if unsuccessful.+ −
+ −
If successful, the path is invalidated: isValid() will returns false.+ −
*/+ −
+ −
/*!+ −
\fn Path &Phonon::Path::operator=(const Path &p);+ −
+ −
Assigns \a p to this Path and returns a reference to this Path.+ −
+ −
This operation is fast thanks to explicit sharing.+ −
*/+ −
+ −
/*!+ −
\fn bool Phonon::Path::operator==(const Path &p) const;+ −
+ −
Returns true if this Path is equal to \a p; otherwise returns false;+ −
*/+ −
+ −
/*!+ −
\fn bool Phonon::Path::operator!=(const Path &p) const;+ −
+ −
Returns true if this Path is not equal to \a p; otherwise returns false.+ −
*/+ −
+ −
/*!+ −
\fn MediaNode *Phonon::Path::source() const;+ −
+ −
Returns the source MediaNode used by the path.+ −
*/+ −
+ −
/*!+ −
\fn MediaNode *Phonon::Path::sink() const;+ −
+ −
Returns the sink MediaNode used by the path.+ −
*/+ −
+ −
/*!+ −
\fn Path Phonon::createPath(MediaNode *source, MediaNode *sink);+ −
+ −
\relates Phonon::Path+ −
Creates a new Path connecting the two MediaNodes \a source and \a sink.+ −
+ −
The implementation will automatically select the right format and media type. E.g. connecting a+ −
MediaObject and AudioOutput will create a Path object connecting the audio. This might be+ −
represented as PCM or perhaps even AC3 depending on the AudioOutput object.+ −
+ −
\param source The MediaNode to connect an output from+ −
\param sink The MediaNode to connect to.+ −
*/+ −
+ −
/*!+ −
\class Phonon::PathPrivate+ −
\inmodule Phonon+ −
\since 4.4+ −
\internal+ −
*/+ −
+ −
/*!+ −
\class Phonon::MediaObjectInterface+ −
\inmodule Phonon+ −
\since 4.4+ −
\internal+ −
\brief Backend interface for media sources.+ −
+ −
The backend implementation has to provide two signals, that are not defined+ −
in this interface:+ −
\list+ −
\o \target phonon_MediaObjectInterface_stateChanged+ −
void stateChanged(Phonon::State newstate, Phonon::State oldstate)+ −
+ −
Emitted when the state of the MediaObject has changed.+ −
In case you're not interested in the old state you can also+ −
connect to a slot that only has one State argument.+ −
+ −
\param newstate The state the Player is in now.+ −
\param oldstate The state the Player was in before.+ −
+ −
\o \target phonon_MediaObjectInterface_tick+ −
void tick(qint64 time)+ −
+ −
This signal gets emitted every tickInterval milliseconds.+ −
+ −
\param time The position of the media file in milliseconds.+ −
+ −
\sa setTickInterval()+ −
\sa tickInterval()+ −
\endlist+ −
+ −
\sa MediaObject+ −
*/+ −
+ −
/*!+ −
\fn virtual Phonon::MediaObjectInterface::~MediaObjectInterface()+ −
\internal+ −
*/+ −
+ −
/*!+ −
\fn virtual qint64 Phonon::MediaObjectInterface::remainingTime() const+ −
\internal+ −
*/+ −
+ −
/*!+ −
\fn virtual qint32 Phonon::MediaObjectInterface::prefinishMark() const = 0+ −
\internal+ −
*/+ −
+ −
/*!+ −
\fn virtual void Phonon::MediaObjectInterface::setPrefinishMark(qint32) = 0+ −
\internal+ −
*/+ −
+ −
/*!+ −
\fn virtual qint32 Phonon::MediaObjectInterface::transitionTime() const = 0+ −
\internal+ −
*/+ −
+ −
/*!+ −
\fn virtual void Phonon::MediaObjectInterface::setTransitionTime(qint32) = 0+ −
\internal+ −
*/+ −
+ −
/*!+ −
\fn virtual void Phonon::MediaObjectInterface::play() = 0+ −
\internal+ −
+ −
Requests the playback to start.+ −
+ −
This method is only called if the state transition to PlayingState is possible.+ −
+ −
The backend should react immediately+ −
by either going into PlayingState or BufferingState if the+ −
former is not possible.+ −
*/+ −
+ −
/*!+ −
\fn virtual void Phonon::MediaObjectInterface::pause() = 0+ −
\internal+ −
+ −
Requests the playback to pause.+ −
+ −
This method is only called if the state transition to PausedState is possible.+ −
+ −
The backend should react as fast as possible. Go to PausedState+ −
as soon as playback is paused.+ −
*/+ −
+ −
/*!+ −
\fn virtual void Phonon::MediaObjectInterface::stop() = 0+ −
\internal+ −
+ −
Requests the playback to be stopped.+ −
+ −
This method is only called if the state transition to StoppedState is possible.+ −
+ −
The backend should react as fast as possible. Go to StoppedState+ −
as soon as playback is stopped.+ −
+ −
A subsequent call to play() will start playback at the beginning of+ −
the media.+ −
*/+ −
+ −
/*!+ −
\fn virtual void Phonon::MediaObjectInterface::seek(qint64 milliseconds) = 0+ −
\internal+ −
+ −
Requests the playback to be seeked to the given time.+ −
+ −
The backend does not have to finish seeking while in this function+ −
(i.e. the backend does not need to block the thread until the seek is+ −
finished; even worse it might lead to deadlocks when using a+ −
ByteStream which gets its data from the thread this function would+ −
block).+ −
+ −
As soon as the seek is done the currentTime() function and+ −
the tick() signal will report it.+ −
+ −
\param milliseconds The time where playback should seek to in+ −
milliseconds.+ −
*/+ −
+ −
/*!+ −
\fn virtual qint32 Phonon::MediaObjectInterface::tickInterval() const = 0+ −
\internal+ −
+ −
Return the time interval in milliseconds between two ticks.+ −
+ −
Returns the tick interval that it was set to (might not+ −
be the same as you asked for).+ −
*/+ −
+ −
/*!+ −
\fn virtual void Phonon::MediaObjectInterface::setTickInterval(qint32 interval) = 0+ −
\internal+ −
+ −
Change the interval the tick signal is emitted. Set \a interval to 0 to+ −
disable the signal.+ −
+ −
\a interval tick interval in milliseconds+ −
+ −
Returns the tick interval that it was set to (might not be the same as you+ −
asked for).+ −
+ −
*/+ −
+ −
/*!+ −
\fn virtual bool Phonon::MediaObjectInterface::hasVideo() const = 0+ −
\internal+ −
+ −
Check whether the media data includes a video stream.+ −
+ −
Returns true if the media contains video data.+ −
*/+ −
+ −
/*!+ −
\fn virtual bool Phonon::MediaObjectInterface::isSeekable() const = 0+ −
\internal+ −
+ −
If the current media may be seeked this function returns true;+ −
otherwise, false.+ −
+ −
Returns whether the current media may be seeked.+ −
*/+ −
+ −
/*!+ −
\fn virtual qint64 Phonon::MediaObjectInterface::currentTime() const = 0+ −
\internal+ −
+ −
Get the current time (in milliseconds) of the file currently being played.+ −
*/+ −
+ −
/*!+ −
\fn virtual Phonon::State Phonon::MediaObjectInterface::state() const = 0+ −
\internal+ −
+ −
Get the current state.+ −
*/+ −
+ −
/*!+ −
\fn virtual QString Phonon::MediaObjectInterface::errorString() const = 0+ −
\internal+ −
+ −
A translated string describing the error.+ −
*/+ −
+ −
/*!+ −
\fn virtual Phonon::ErrorType Phonon::MediaObjectInterface::errorType() const = 0+ −
\internal+ −
+ −
Tells your program what to do about the error.+ −
+ −
\sa Phonon::ErrorType+ −
*/+ −
+ −
/*!+ −
\fn virtual qint64 Phonon::MediaObjectInterface::totalTime() const = 0+ −
\internal+ −
+ −
Returns the total time of the media in milliseconds.+ −
+ −
If the total time is not know return -1. Do not block until it is+ −
known, instead emit the totalTimeChanged signal as soon as the total+ −
time is known or changes.+ −
*/+ −
+ −
/*!+ −
\fn virtual MediaSource Phonon::MediaObjectInterface::source() const = 0+ −
\internal+ −
+ −
Returns the current source.+ −
*/+ −
+ −
/*!+ −
\fn virtual void Phonon::MediaObjectInterface::setSource(const MediaSource &) = 0+ −
\internal+ −
+ −
Sets the current source. When this function is called the MediaObject is+ −
expected to stop all current activity and start loading the new+ −
source (i.e. go into LoadingState).+ −
+ −
It is expected that the+ −
backend now starts preloading the media data, filling the audio+ −
and video buffers and making all media meta data available. It+ −
will also trigger the totalTimeChanged signal.+ −
+ −
If the backend does not know how to handle the source it needs to+ −
change state to Phonon::ErrorState. Don't bother about handling KIO+ −
URLs. It is enough to handle AbstractMediaStream sources correctly.+ −
+ −
\warning Keep the MediaSource object around as long as the backend+ −
uses the AbstractMediaStream returned by the MediaSource. In case+ −
that no other reference to the MediaSource exists and it is set to+ −
MediaSource::autoDelete, the AbstractMediaStream is deleted when the+ −
last MediaSource ref is deleted.+ −
*/+ −
+ −
/*!+ −
\fn virtual void Phonon::MediaObjectInterface::setNextSource(const MediaSource &source) = 0+ −
\internal+ −
+ −
Sets the next source to be used for transitions. When a next source+ −
is set playback should continue with the new source. In that case+ −
finished and prefinishMarkReached are not emitted.+ −
+ −
\param source The source to transition to (crossfade/gapless/gap). If+ −
\a source is an invalid MediaSource object then the queue is empty+ −
and the playback should stop normally.+ −
+ −
\warning Keep the MediaSource object around as long as the backend+ −
uses the AbstractMediaStream returned by the MediaSource. In case+ −
that no other reference to the MediaSource exists and it is set to+ −
MediaSource::autoDelete, the AbstractMediaStream is deleted when the+ −
last MediaSource ref is deleted.+ −
*/+ −
+ −
/*!+ −
\class Phonon::EffectWidget effectwidget.h Phonon/EffectWidget+ −
\inmodule Phonon+ −
\inheaderfile Phonon/EffectWidget+ −
\since 4.4+ −
\brief The EffectWidget class provides a widget to control the parameters of an Effect.+ −
+ −
The EffectWidget class provides a widget, with which an effects+ −
parameters can be controlled. The widget does not have an API,+ −
and is constructed with the \l{Phonon::}{Effect}, of which+ −
parameters should be controlled.+ −
+ −
\snippet doc/src/snippets/audioeffects.cpp 1+ −
+ −
The following image shows an example of an effect widget.+ −
+ −
\image effectwidget.png+ −
+ −
Note that some audio effects do not have parameters, and the+ −
widget will then not \l{QWidget::}{show()} at all.+ −
+ −
\sa Effect, BackendCapabilities, EffectDescription, {Phonon Module}+ −
*/+ −
+ −
/*!+ −
\class Phonon::AbstractAudioOutput+ −
\inmodule Phonon+ −
\internal+ −
\brief Provides a common base class for all audio outputs.+ −
+ −
\sa AudioOutput+ −
*/+ −
+ −
/*!+ −
\fn Phonon::AbstractAudioOutput::~AbstractAudioOutput()+ −
\internal+ −
*/+ −
+ −
/*!+ −
\class Phonon::AbstractAudioOutputPrivate+ −
\inmodule Phonon+ −
\since 4.4+ −
\internal+ −
*/+ −
+ −
/*!+ −
\class AudioOutputAdaptor+ −
\inmodule Phonon+ −
\brief Provides an adaptor class for interface org.kde.Phonon.AudioOutput+ −
\internal+ −
*/+ −
+ −
/*!+ −
\class Phonon::VolumeSlider+ −
\inmodule Phonon+ −
\inheaderfile Phonon/VolumeSlider+ −
\since 4.4+ −
\brief The VolumeSlider widget provides a slider that is used to control the volume of an audio output device.+ −
+ −
The slider also displays an icon indicating if the volume of the+ −
\l{Phonon::}{AudioOutput} it is connected to is muted. The icon+ −
can be removed with setMuteVisible().+ −
+ −
It is possible to set the \l{maximumVolume}{maximum} value of the+ −
slider. By default, the minimum and maximum values of the slider+ −
are 0.0 (no sound) to 1.0 (the maximum volume the audio output can+ −
produce).+ −
+ −
Here follows a code example:+ −
+ −
\snippet doc/src/snippets/volumeslider.cpp 0+ −
+ −
\omit mention how to change the style of the slider. \endomit+ −
+ −
\sa {Phonon Module}+ −
*/+ −
+ −
/*!+ −
\property Phonon::VolumeSlider::maximumVolume+ −
+ −
This property holds the maximum volume that can be set with this slider.+ −
+ −
By default the maximum value is 1.0 (100%).+ −
*/+ −
+ −
/*!+ −
\property Phonon::VolumeSlider::orientation+ −
This property holds the orientation of the slider.+ −
+ −
The orientation must be Qt::Vertical (the default) or Qt::Horizontal.+ −
*/+ −
+ −
/*!+ −
\property Phonon::VolumeSlider::tracking+ −
This property holds whether slider tracking is enabled.+ −
+ −
If tracking is enabled (the default), the volume changes+ −
while the slider is being dragged. If tracking is+ −
disabled, the volume changes only when the user+ −
releases the slider.+ −
*/+ −
+ −
/*!+ −
\property Phonon::VolumeSlider::pageStep+ −
This property holds the page step.+ −
+ −
The larger of two natural steps that a slider provides and+ −
typically corresponds to the user pressing PageUp or PageDown.+ −
+ −
Defaults to 5 (5% of the voltage).+ −
*/+ −
+ −
/*!+ −
\property Phonon::VolumeSlider::singleStep+ −
This property holds the single step.+ −
+ −
The smaller of two natural steps that a slider provides and+ −
typically corresponds to the user pressing an arrow key.+ −
+ −
Defaults to 1 (1% of the voltage).+ −
*/+ −
+ −
/*!+ −
\property Phonon::VolumeSlider::muteVisible+ −
This property holds whether the mute button/icon next to the slider is visible.+ −
+ −
By default the mute button/icon is visible.+ −
*/+ −
+ −
/*!+ −
\property Phonon::VolumeSlider::iconSize+ −
\brief the icon size used for the mute button/icon.+ −
+ −
The default size is defined by the GUI style.+ −
*/+ −
+ −
/*!+ −
\fn explicit Phonon::VolumeSlider::VolumeSlider(QWidget *parent = 0)+ −
Constructs a new volume slider with the given \a parent.+ −
*/+ −
+ −
/*!+ −
\fn explicit Phonon::VolumeSlider::VolumeSlider(AudioOutput *output, QWidget *parent = 0)+ −
Constructs a new volume slider with the given \a output object and \a parent.+ −
*/+ −
+ −
/*!+ −
\fn Phonon::VolumeSlider::~VolumeSlider()+ −
*/+ −
+ −
/*!+ −
\fn AudioOutput *Phonon::VolumeSlider::audioOutput() const+ −
*/+ −
+ −
/*!+ −
\fn void Phonon::VolumeSlider::setAudioOutput(Phonon::AudioOutput *output)+ −
+ −
Sets the audio output object to be controlled by this slider to the specified+ −
\a output object.+ −
*/+ −
+ −
/*!+ −
\class Phonon::VolumeSliderPrivate+ −
\inmodule Phonon+ −
\since 4.4+ −
\internal+ −
*/+ −
+ −
/*!+ −
\class Phonon::MediaController+ −
\inmodule Phonon+ −
\inheaderfile Phonon/MediaController+ −
\since 4.4+ −
\brief The MediaController class controls optional features of a media file/device.+ −
+ −
Some media sources have content that the \l{Phonon::}{MediaObject}+ −
does not provide control over, for instance, chapters in a DVD+ −
file. The functionality the media controller offers is+ −
dependent on the type of media source that is played back.+ −
Commonly, the media controller allows you to:+ −
+ −
\list+ −
\o Navigate between \bold chapters.+ −
\o Navigate between \bold titles.+ −
\o Select between \bold angles.+ −
\endlist + −
+ −
The \l{Phonon::MediaController::}{Feature} enum explains these+ −
terms in more detail, and their context in playback of CD and DVD. + −
+ −
The media controller keeps a \l{Phonon::}{MediaObject}, of which+ −
\l{Phonon::MediaObject::currentSource()}{media source} is played+ −
back. You can still call the media object's functions, e.g.,+ −
\l{Phonon::MediaObject::}{stop()}; this is all handled correctly+ −
by the media controller. You have the option of letting the media+ −
controller play all titles of a source in sequence by setting the+ −
\l{autoplayTitles()}{autoplay titles} option.+ −
+ −
To start a playback using a media object, you call+ −
\l{Phonon::MediaObject::}{play()} on the media object. To play a+ −
specific title, use setCurrentTitle() and then call+ −
\l{Phonon::MediaObject::}{play()}.+ −
+ −
\warning The Phonon::MediaController class is not yet supported by+ −
Qt backends.+ −
+ −
\sa {Phonon Module}+ −
*/+ −
+ −
/*!+ −
\fn int Phonon::MediaController::availableAudioChannels() const+ −
\internal+ −
*/+ −
+ −
/*!+ −
\fn void Phonon::MediaController::availableAudioChannelsChanged()+ −
\internal+ −
*/+ −
+ −
/*!+ −
\fn QList<SubtitleDescription> Phonon::MediaController::availableSubtitles() const+ −
\internal+ −
*/+ −
+ −
/*!+ −
\fn void Phonon::MediaController::availableSubtitlesChanged()+ −
\internal+ −
*/+ −
+ −
/*!+ −
\fn AudioChannelDescription Phonon::MediaController::currentAudioChannel() const+ −
\internal+ −
*/+ −
+ −
/*!+ −
\fn SubtitleDescription Phonon::MediaController::currentSubtitle() const+ −
\internal+ −
*/+ −
+ −
/*!+ −
\fn void Phonon::MediaController::setCurrentAudioChannel(const Phonon::AudioChannelDescription &stream)+ −
\internal+ −
*/+ −
+ −
/*!+ −
\fn void Phonon::MediaController::setCurrentSubtitle(const Phonon::SubtitleDescription &stream)+ −
\internal+ −
*/+ −
+ −
/*!+ −
\fn Phonon::BackendCapabilities::availableAudioCaptureDevices()+ −
\internal+ −
*/+ −
+ −
/*!+ −
\fn Phonon::BackendCapabilities::Notifier::availableAudioCaptureDevicesChanged()+ −
\internal+ −
*/+ −
+ −
/*!+ −
\enum Phonon::MediaController::Feature+ −
+ −
The values of this enum are interpreted differently depending on+ −
the type of media source, e.g., DVD or CD. We give examples for+ −
these sources.+ −
+ −
\value Angles In the VOB (DVD) format, it is possible to to give+ −
several video streams of the same scene, each of which displays+ −
the scene from a different angle. The DVD viewer can then change+ −
between these angles.+ −
+ −
\value Chapters In the VOB format, chapters are points in a+ −
single video stream that can be played and seeked to+ −
separately. + −
+ −
\value Titles On a CD, a title is a separate sound track. On DVD,+ −
a title is a separate VOB file.+ −
+ −
*/+ −
+ −
/*!+ −
\fn Phonon::MediaController::MediaController(MediaObject *parent)+ −
+ −
Constructs a new MediaController with the media object (\a parent)+ −
to be used by the media controller.+ −
+ −
\sa MediaObject, Feature+ −
*/+ −
+ −
/*!+ −
\fn Phonon::MediaController::~MediaController()+ −
*/+ −
+ −
/*!+ −
\fn Features Phonon::MediaController::supportedFeatures() const+ −
*/+ −
+ −
/*!+ −
\fn int Phonon::MediaController::availableAngles() const+ −
+ −
Returns the available angles that is available for the current+ −
media source.+ −
+ −
\sa Feature+ −
*/+ −
+ −
/*!+ −
\fn int Phonon::MediaController::currentAngle() const+ −
+ −
Returns the angle that is currently used.+ −
+ −
\sa Feature+ −
*/+ −
+ −
/*!+ −
\fn int Phonon::MediaController::availableChapters() const+ −
+ −
Returns the number of chapters the current media source+ −
contains.+ −
+ −
\sa Feature+ −
*/+ −
+ −
/*!+ −
\fn int Phonon::MediaController::currentChapter() const+ −
+ −
Returns the chapter that is currently being played back.+ −
+ −
\sa Feature+ −
*/+ −
+ −
/*!+ −
\fn int Phonon::MediaController::availableTitles() const+ −
+ −
Returns the number of titles that the current media source+ −
contains.+ −
+ −
\sa Feature+ −
*/+ −
+ −
/*!+ −
\fn int Phonon::MediaController::currentTitle() const+ −
+ −
Returns the title that is currently played back.+ −
+ −
The current title is 0 (the first) by default.+ −
+ −
\sa Feature+ −
*/+ −
+ −
/*!+ −
\fn bool Phonon::MediaController::autoplayTitles() const+ −
+ −
Returns true if titles will automatically be played when the media+ −
is played; otherwise returns false.+ −
+ −
The media controller will play the titles of the media source in+ −
sequence when the media object's \l{Phonon::MediaObject::}{play()}+ −
function is called. If the autoplay option is disabled, the media+ −
object will play the+ −
\l{Phonon::}{MediaController::currentTitle()}{current title} and then+ −
finish the playback.+ −
+ −
\sa setAutoplayTitles(), currentTitle()+ −
*/+ −
+ −
/*!+ −
\fn void Phonon::MediaController::setAutoplayTitles(bool enable)+ −
+ −
Sets the titles to play automatically when the media is played if+ −
\a enable is true; otherwise disables this option.+ −
+ −
The media controller will play the titles of the media source in+ −
sequence when the media object's \l{Phonon::MediaObject::}{play()}+ −
function is called. If the autoplay option is disabled, the media+ −
object will play the+ −
\l{Phonon::}{MediaController::currentTitle()}{current title} and then+ −
finish the playback.+ −
+ −
\sa autoplayTitles(), currentTitle()+ −
*/+ −
+ −
/*!+ −
\fn void Phonon::MediaController::setCurrentAngle(int angleNumber)+ −
+ −
Sets the current angle to the given \a angleNumber if the media+ −
file or device supports navigation by angle number.+ −
+ −
\sa Feature+ −
*/+ −
+ −
/*!+ −
\fn void Phonon::MediaController::setCurrentChapter(int chapterNumber)+ −
+ −
Sets the current chapter to the given \a chapterNumber if the media+ −
file or device supports navigation by chapter number.+ −
+ −
\sa Feature+ −
*/+ −
+ −
/*!+ −
\fn void Phonon::MediaController::setCurrentTitle(int titleNumber)+ −
+ −
Skips to the given title \a titleNumber.+ −
+ −
If it was playing before the title change it will start playback on the new title if+ −
autoplayTitles is enabled.+ −
+ −
\sa Feature+ −
*/+ −
+ −
/*!+ −
\fn void Phonon::MediaController::nextTitle()+ −
+ −
Skips to the next title.+ −
+ −
If it was playing before the title change it will start playback on the next title if+ −
autoplayTitles is enabled.+ −
+ −
\sa Feature+ −
*/+ −
+ −
/*!+ −
\fn void Phonon::MediaController::previousTitle()+ −
+ −
Skips to the previous title.+ −
+ −
If it was playing before the title change it will start playback on the previous title if+ −
autoplayTitles is enabled.+ −
+ −
\sa Feature+ −
*/+ −
+ −
/*!+ −
\fn void Phonon::MediaController::availableAnglesChanged(int availableAngles)+ −
+ −
This signal is emitted whenever the number of available angles changes.+ −
The new number of available angles is given by \a availableAngles.+ −
+ −
\sa Feature+ −
*/+ −
+ −
/*!+ −
\fn void Phonon::MediaController::angleChanged(int angleNumber)+ −
+ −
This signal is emitted whenever the current angle changes.+ −
The new angle number is given by \a angleNumber.+ −
+ −
\sa Feature+ −
*/+ −
+ −
/*!+ −
\fn void Phonon::MediaController::availableChaptersChanged(int availableChapters)+ −
+ −
This signal is emitted whenever the number of available chapters changes.+ −
The new number of available chapters is given by \a availableChapters.+ −
+ −
\sa Feature+ −
*/+ −
+ −
/*!+ −
\fn void Phonon::MediaController::chapterChanged(int chapterNumber)+ −
+ −
This signal is emitted whenever the current chapter changes.+ −
The new chapter number is given by \a chapterNumber.+ −
+ −
\sa Feature+ −
*/+ −
+ −
/*!+ −
\fn void Phonon::MediaController::availableTitlesChanged(int availableTitles)+ −
+ −
This signal is emitted whenever the number of available titles changes.+ −
The new number of available titles is given by \a availableTitles.+ −
+ −
\sa Feature+ −
*/+ −
+ −
/*!+ −
\fn void Phonon::MediaController::titleChanged(int titleNumber)+ −
+ −
This signal is emitted whenever the current title changes.+ −
The new title number is given by \a titleNumber.+ −
+ −
\sa Feature+ −
*/+ −
+ −
/*!+ −
\class Phonon::VideoWidget+ −
\inmodule Phonon+ −
\inheaderfile Phonon/VideoWidget+ −
\since 4.4+ −
\ingroup advanced+ −
\ingroup multimedia+ −
\brief The VideoWidget class provides a widget that is used to display video.+ −
+ −
The VideoWidget class renders the video of a media stream on a+ −
QWidget. It is connected to the \l{Phonon::}{MediaObject}, of+ −
which video stream it should render. You connect the two objects+ −
using the Phonon::createPath() function.+ −
+ −
The widget has some possibilities to manipulate the video+ −
stream. You can change the brightness(), hue(), saturation(),+ −
and contrast().+ −
+ −
Resizing of the video is handled automatically, but you can affect+ −
the way the video is resized with the aspectRatio and scaleMode+ −
properties. By default, the widget will use the aspect ratio of+ −
the video stream itself.+ −
+ −
The video widget takes the size of the video when it receives a new video+ −
stream (i.e., when a new MediaSource is set on the MediaObject to which it is+ −
connected). If you need to know the size of the video, you can call+ −
\l{QWidget::}{sizeHint()} after the video has been loaded (i.e., after the+ −
MediaObject leaves the \l{Phonon::}{LoadingState}).+ −
+ −
It is also possible to go to \l{fullScreen}{full screen} mode.+ −
+ −
A typical example of usage follows below:+ −
+ −
\snippet doc/src/snippets/code/doc_src_phonon-api.qdoc 21+ −
+ −
\sa {Phonon Module}+ −
*/+ −
+ −
/*!+ −
\fn Phonon::VideoWidget::VideoWidget(QWidget *parent = 0)+ −
+ −
Constructs a new video widget with the specified \a parent.+ −
*/+ −
+ −
/*!+ −
\fn Phonon::VideoWidget::VideoWidget(VideoWidgetPrivate &d, QWidget *parent)+ −
\internal+ −
+ −
Constructs a new video widget with the specified \a parent.+ −
*/+ −
+ −
/*!+ −
\fn bool Phonon::VideoWidget::event(QEvent *)+ −
\reimp+ −
*/+ −
+ −
/*!+ −
\fn void Phonon::VideoWidget::mouseMoveEvent(QMouseEvent *)+ −
\reimp+ −
*/+ −
+ −
/*!+ −
\enum Phonon::VideoWidget::ScaleMode+ −
+ −
The ScaleMode enum describes how to treat aspect ratio during+ −
resizing of video.+ −
+ −
\value FitInView The video will be fitted to fill the view+ −
keeping aspect ratio.+ −
\value ScaleAndCrop The video is scaled+ −
*/+ −
+ −
/*!+ −
\property Phonon::VideoWidget::fullScreen+ −
This property holds whether the video is shown using the complete+ −
screen.+ −
+ −
The property differs from QWidget::fullScreen in that it is+ −
writeable.+ −
+ −
By default the widget is not shown in fullScreen.+ −
+ −
\warning When switching to full screen mode using setFullScreen(),+ −
the widget onto which the video is rendered is shown as a+ −
top-level window. Key event forwarding is handled by VideoWidget,+ −
but if you need to handle other events, e.g., mouse events, you+ −
should handle fullscreen mode yourself.+ −
*/+ −
+ −
/*!+ −
\property Phonon::VideoWidget::aspectRatio+ −
Defaults to AspectRatioAuto.+ −
+ −
\sa AspectRatio+ −
*/+ −
+ −
/*!+ −
\property Phonon::VideoWidget::scaleMode+ −
+ −
If the size of the widget and the size of the video are not equal.+ −
The video will be zoomed to fit the widget. The smaller zoom+ −
(AddBarsScaleMode) adds black bars at the left/right or top/bottom to+ −
make all of the image visible (default). The bigger zoom (ExpandMode)+ −
fills the widget completely, keeping all information in one direction+ −
and leaving parts of the image outside of the widget in the other+ −
direction.+ −
*/+ −
+ −
/*!+ −
\property Phonon::VideoWidget::brightness+ −
+ −
This property holds brightness of the video.+ −
+ −
Default is 0. Acceptable values are in range of -1, 1.+ −
*/+ −
+ −
/*!+ −
\property Phonon::VideoWidget::contrast+ −
+ −
This property holds the contrast of the video.+ −
+ −
Default is 0. Acceptable values are in range of -1, 1.+ −
*/+ −
+ −
/*!+ −
\property Phonon::VideoWidget::hue+ −
+ −
This property holds the hue of the video.+ −
+ −
Default is 0. Acceptable values are in range of -1, 1.+ −
*/+ −
+ −
/*!+ −
\property Phonon::VideoWidget::saturation+ −
+ −
This property holds saturation of the video.+ −
+ −
Default is 0. Acceptable values are in range of -1, 1.+ −
*/+ −
+ −
/*!+ −
\enum Phonon::VideoWidget::AspectRatio+ −
+ −
Defines the width:height to be used for the video.+ −
+ −
\value AspectRatioAuto+ −
Let the decoder find the aspect ratio automatically from the+ −
media file (this is the default).+ −
+ −
\value AspectRatioWidget+ −
Fits the video into the widget making the aspect ratio depend+ −
solely on the size of the widget. This way the aspect ratio+ −
is freely resizeable by the user.+ −
+ −
\value AspectRatio4_3+ −
Make width/height == 4/3, which is the old TV size and+ −
monitor size (1024/768 == 4/3). (4:3)+ −
+ −
\value AspectRatio16_9+ −
Make width/height == 16/9, which is the size of most current+ −
media. (16:9)+ −
*/+ −
+ −
/*!+ −
\fn void Phonon::VideoWidget::exitFullScreen()+ −
+ −
Convenience slot, calling setFullScreen(false)+ −
*/+ −
+ −
+ −
/*!+ −
\fn void Phonon::VideoWidget::enterFullScreen()+ −
+ −
Convenience slot, calling setFullScreen(true)+ −
*/+ −
+ −
/*!+ −
\class Phonon::VideoWidgetInterface+ −
\inmodule Phonon+ −
\since 4.4+ −
\internal+ −
*/+ −
+ −
/*!+ −
\fn virtual Phonon::VideoWidgetInterface::~VideoWidgetInterface()+ −
*/+ −
+ −
/*!+ −
\fn virtual Phonon::VideoWidget::AspectRatio Phonon::VideoWidgetInterface::aspectRatio() const = 0+ −
\internal+ −
*/+ −
+ −
/*!+ −
\fn virtual void Phonon::VideoWidgetInterface::setAspectRatio(Phonon::VideoWidget::AspectRatio ratio) = 0+ −
\internal+ −
*/+ −
+ −
/*!+ −
\fn virtual qreal Phonon::VideoWidgetInterface::brightness() const = 0+ −
\internal+ −
*/+ −
+ −
/*!+ −
\fn virtual void Phonon::VideoWidgetInterface::setBrightness(qreal) = 0+ −
\internal+ −
*/+ −
+ −
/*!+ −
\fn virtual Phonon::VideoWidget::ScaleMode Phonon::VideoWidgetInterface::scaleMode() const = 0+ −
\internal+ −
*/+ −
+ −
/*!+ −
\fn virtual void Phonon::VideoWidgetInterface::setScaleMode(Phonon::VideoWidget::ScaleMode mode) = 0+ −
\internal+ −
*/+ −
+ −
/*!+ −
\fn virtual qreal Phonon::VideoWidgetInterface::contrast() const = 0+ −
\internal+ −
*/+ −
+ −
/*!+ −
\fn virtual void Phonon::VideoWidgetInterface::setContrast(qreal) = 0+ −
\internal+ −
*/+ −
+ −
/*!+ −
\fn virtual qreal Phonon::VideoWidgetInterface::hue() const = 0+ −
\internal+ −
*/+ −
+ −
/*!+ −
\fn virtual void Phonon::VideoWidgetInterface::setHue(qreal) = 0+ −
\internal+ −
*/+ −
+ −
/*!+ −
\fn virtual qreal Phonon::VideoWidgetInterface::saturation() const = 0+ −
\internal+ −
*/+ −
+ −
/*!+ −
\fn virtual void Phonon::VideoWidgetInterface::setSaturation(qreal) = 0+ −
\internal+ −
*/+ −
+ −
/*!+ −
\fn virtual QWidget *Phonon::VideoWidgetInterface::widget() = 0+ −
\internal+ −
*/+ −
+ −
/*!+ −
\class Phonon::PlatformPlugin+ −
\inmodule Phonon+ −
\since 4.4+ −
\internal+ −
*/+ −
+ −
/*!+ −
\fn virtual AbstractMediaStream *Phonon::PlatformPlugin::createMediaStream(const QUrl &url, QObject *parent) = 0+ −
+ −
Creates a AbstractMediaStream object with the given \a parent that provides the data+ −
for the given URL specified by \a url.+ −
\omit+ −
On KDE this uses KIO.+ −
\endomit+ −
*/+ −
+ −
/*!+ −
\fn virtual QIcon Phonon::PlatformPlugin::icon(const QString &name) const = 0+ −
+ −
Returns the icon for the given icon name.+ −
*/+ −
+ −
/*!+ −
\fn virtual void Phonon::PlatformPlugin::notification(const char *notificationName, const QString &text,+ −
const QStringList &actions, QObject *receiver, const char *actionSlot) const = 0+ −
+ −
Shows a notification pop-up with the given \a notificationName and \a text.+ −
Each action in the associated list of \a actions is connected to the \a actionSlot+ −
of the specified \a receiver object, which is expected to act on the actions as+ −
they are triggered by the user.+ −
*/+ −
+ −
/*!+ −
\fn virtual QString Phonon::PlatformPlugin::applicationName() const = 0+ −
+ −
Returns the name of the application. For most Qt application this is+ −
QCoreApplication::applicationName(), but for KDE this is overridden by KAboutData.+ −
*/+ −
+ −
+ −
/*!+ −
\fn virtual QObject *Phonon::PlatformPlugin::createBackend() = 0+ −
+ −
Creates a backend object. This way the platform can decide the backend preference.+ −
*/+ −
+ −
/*!+ −
\fn virtual QObject *Phonon::PlatformPlugin::createBackend(const QString &library, const QString &version) = 0+ −
+ −
Using the library loader of the platform, loads a given backend provided the+ −
specified \a library and \a version.+ −
*/+ −
+ −
/*!+ −
\fn virtual bool Phonon::PlatformPlugin::isMimeTypeAvailable(const QString &mimeType) const = 0+ −
+ −
Tries to check whether the default backend supports the MIME type specified by \a mimeType+ −
without loading the actual backend library.+ −
\omit+ −
On KDE this reads the MIME type list from the .desktop file of+ −
the backend.+ −
\endomit+ −
*/+ −
+ −
/*!+ −
\fn virtual void Phonon::PlatformPlugin::saveVolume(const QString &outputName, qreal volume) = 0+ −
+ −
Saves the volume for the given output.+ −
*/+ −
+ −
/*!+ −
\fn virtual qreal Phonon::PlatformPlugin::loadVolume(const QString &outputName) const = 0+ −
+ −
Loads the volume for the given output.+ −
*/+ −
+ −
/*!+ −
\class Phonon::MediaNode+ −
\inmodule Phonon+ −
\inheaderfile Phonon/MediaNode+ −
\since 4.4+ −
\brief The MediaNode class is the base class for all nodes in a media graph.+ −
+ −
In all phonon applications, one builds a media graph consisting of+ −
MediaNodes. The graph will take multimedia content, e.g., from a+ −
file, as input. After its nodes have processed the multimedia, the+ −
graph will output the media again, e.g., to a sound card.+ −
+ −
The multimedia content is streamed over \l{Phonon::}{Path}s+ −
between the nodes in the graph. You can query the paths that are+ −
connected to a media node with inputPaths() and outputPaths().+ −
+ −
You can check whether the node is implemented by the current+ −
backend by calling isValid(). This does not guarantee that an+ −
instance of the class works as expected, but that the backend has+ −
implemented functionality for the class.+ −
+ −
Currently, Phonon has four media nodes: \l{Phonon::}{MediaObject},+ −
\l{Phonon::}{AudioOutput}, \l{Phonon::}{VideoWidget}, and \l{Phonon::}{Effect}.+ −
Please refer to their class descriptions for details about their usage, and to+ −
find out which nodes can be connected to each other. See also \l{Building+ −
Graphs} in Phonon's \l{Phonon Overview}{overview} document. + −
+ −
Two nodes are connected to each other using the+ −
Phonon::createPath() or \l{Phonon::}{Path::insertEffect()}+ −
functions (only \l{Phonon::Effect}s use+ −
\l{Phonon::Path::}{insertEffect()}). We show a code example below,+ −
in which we build a media graph for video playback and then query+ −
its media nodes for their \l{Phonon::}{Path}s:+ −
+ −
\snippet doc/src/snippets/medianodesnippet.cpp 0 + −
+ −
When you create a Phonon application, you will likely build the+ −
graph yourself. This makes isValid() the most useful function of+ −
this class. The other two functions help navigate the graph, which+ −
you do not need to do as you created the nodes yourself.+ −
+ −
\sa {Phonon Overview}, Phonon::MediaObject,+ −
Phonon::AudioOutput, Phonon::VideoWidget, {Phonon Module}+ −
*/+ −
+ −
/*!+ −
\fn virtual Phonon::MediaNode::~MediaNode()+ −
+ −
Destroys the media node and any paths connecting it to other+ −
nodes. Any \l{Phonon::}{Effect}s connected to these paths will+ −
also be deleted.+ −
*/+ −
+ −
/*!+ −
\fn bool Phonon::MediaNode::isValid() const+ −
+ −
Returns true if the backend provides an implementation of this+ −
class; otherwise returns false.+ −
+ −
This does not guarantee that instances of the class works as+ −
expected, but that the backend has implemented the functionality+ −
for this class. For instance, Qt's GStreamer backend will return+ −
true for instances of the \l{Phonon::}{AudioOutput} class, even if+ −
there is a problem with GStreamer and it could not play sound. + −
+ −
*/+ −
+ −
/*!+ −
\fn QList<Path> Phonon::MediaNode::inputPaths() const+ −
+ −
Returns the paths that inputs multimedia to this media node.+ −
+ −
\sa outputPaths()+ −
*/+ −
+ −
/*!+ −
\fn QList<Path> Phonon::MediaNode::outputPaths() const+ −
+ −
Returns the paths to which this media node outputs media.+ −
+ −
\sa inputPaths()+ −
*/+ −
+ −
/*!+ −
\fn Phonon::MediaNode::MediaNode(MediaNodePrivate &dd)+ −
\internal+ −
*/+ −
+ −
/*!+ −
\class Phonon::GlobalConfig+ −
\inmodule Phonon+ −
\since 4.4+ −
\internal+ −
*/+ −
+ −
/*!+ −
\fn Phonon::GlobalConfig::GlobalConfig()+ −
\internal+ −
*/+ −
+ −
/*!+ −
\fn Phonon::GlobalConfig::~GlobalConfig()+ −
\internal+ −
*/+ −
+ −
/*!+ −
\fn QList<int> Phonon::GlobalConfig::audioOutputDeviceListFor(Phonon::Category category, int override = AdvancedDevicesFromSettings) const+ −
\internal+ −
*/+ −
+ −
/*!+ −
\fn int Phonon::GlobalConfig::audioOutputDeviceFor(Phonon::Category category, int override = AdvancedDevicesFromSettings) const+ −
\internal+ −
*/+ −
+ −
/*!+ −
\class Phonon::ObjectDescriptionData+ −
\inmodule Phonon+ −
\since 4.4+ −
\internal+ −
\brief Data class for objects describing devices or features of the backend.+ −
+ −
\sa Phonon::BackendCapabilities+ −
*/+ −
+ −
/*!+ −
\fn bool Phonon::ObjectDescriptionData::operator==(const ObjectDescriptionData &otherDescription) const+ −
+ −
Returns \c true if this ObjectDescription describes the same+ −
as \a otherDescription; otherwise returns \c false.+ −
*/+ −
+ −
/*!+ −
\fn QString Phonon::ObjectDescriptionData::name() const+ −
+ −
Returns the name of the capture source.+ −
+ −
\return A string that should be presented to the user to+ −
choose the capture source.+ −
*/+ −
+ −
/*!+ −
\fn QString Phonon::ObjectDescriptionData::description() const+ −
+ −
Returns a description of the capture source. This text should+ −
make clear what sound source this is, which is sometimes hard+ −
to describe or understand from just the name.+ −
+ −
\return A string describing the capture source.+ −
*/+ −
+ −
/*!+ −
\fn QVariant Phonon::ObjectDescriptionData::property(const char *name) const+ −
+ −
Returns a named property.+ −
+ −
If the property is not set an invalid value is returned.+ −
+ −
\sa propertyNames()+ −
*/+ −
+ −
/*!+ −
\fn QList<QByteArray> Phonon::ObjectDescriptionData::propertyNames() const+ −
+ −
Returns all names that return valid data when property() is called.+ −
+ −
\sa property()+ −
*/+ −
+ −
/*!+ −
\fn bool Phonon::ObjectDescriptionData::isValid() const+ −
+ −
Returns true if the Tuple is valid (index != -1); otherwise returns+ −
false.+ −
*/+ −
+ −
/*!+ −
\fn int Phonon::ObjectDescriptionData::index() const+ −
+ −
A unique identifier for this device/. Used internally+ −
to distinguish between the devices/.+ −
+ −
\return An integer that uniquely identifies every device.+ −
*/+ −
+ −
/*!+ −
\fn static ObjectDescriptionData *Phonon::ObjectDescriptionData::fromIndex(ObjectDescriptionType type, int index)+ −
\internal+ −
*/+ −
+ −
/*!+ −
\fn Phonon::ObjectDescriptionData::~ObjectDescriptionData()+ −
\internal+ −
*/+ −
+ −
/*!+ −
\fn Phonon::ObjectDescriptionData::ObjectDescriptionData(ObjectDescriptionPrivate * = 0)+ −
\internal+ −
*/+ −
+ −
/*!+ −
\class Phonon::AddonInterface+ −
\inmodule Phonon+ −
\since 4.4+ −
\internal+ −
\brief Interface for Menu, Chapter, Angle and Title/Track control.+ −
*/+ −
+ −
/*!+ −
\fn virtual Phonon::AddonInterface::~AddonInterface()+ −
\internal+ −
*/+ −
+ −
/*!+ −
\enum Phonon::AddonInterface::Interface+ −
+ −
This enum describes the type of interface represented by an AddonInterface object.+ −
+ −
\value NavigationInterface+ −
\value ChapterInterface+ −
\value AngleInterface+ −
\value TitleInterface+ −
*/+ −
+ −
/*!+ −
\enum Phonon::AddonInterface::NavigationCommand+ −
\internal+ −
\value Menu1Button+ −
*/+ −
+ −
/*!+ −
\enum Phonon::AddonInterface::ChapterCommand+ −
\internal+ −
\value availableChapters+ −
\value chapter+ −
\value setChapter+ −
*/+ −
+ −
/*!+ −
\enum Phonon::AddonInterface::AngleCommand+ −
\internal+ −
\value availableAngles+ −
\value angle+ −
\value setAngle+ −
*/+ −
+ −
/*!+ −
\enum Phonon::AddonInterface::TitleCommand+ −
\internal+ −
\value availableTitles+ −
\value title+ −
\value setTitle+ −
\value autoplayTitles+ −
\value setAutoplayTitles+ −
*/+ −
+ −
/*!+ −
\fn virtual bool Phonon::AddonInterface::hasInterface(Interface iface) const = 0+ −
\internal+ −
*/+ −
+ −
/*!+ −
\fn virtual QVariant Phonon::AddonInterface::interfaceCall(Interface iface, int command,+ −
const QList<QVariant> &arguments) = 0+ −
\internal+ −
*/+ −
+ −
/*!+ −
\class Phonon::MediaNodePrivate+ −
\inmodule Phonon+ −
\since 4.4+ −
\internal+ −
*/+ −
+ −
/*!+ −
\namespace Phonon::Factory+ −
\inmodule Phonon+ −
\internal+ −
*/+ −
+ −
/*!+ −
\fn Sender *Phonon::Factory::sender()+ −
+ −
Returns a pointer to the object emitting the signals.+ −
+ −
\sa Sender::backendChanged()+ −
*/+ −
+ −
/*!+ −
\fn QObject *Phonon::Factory::createMediaObject(QObject *parent = 0)+ −
+ −
Create a new backend object for a MediaObject.+ −
+ −
\return a pointer to the MediaObject the backend provides.+ −
*/+ −
+ −
/*!+ −
\fn QObject *Phonon::Factory::createEffect(int effectId, QObject *parent = 0)+ −
+ −
Create a new backend object for a Effect.+ −
+ −
\return a pointer to the Effect the backend provides.+ −
*/+ −
+ −
/*!+ −
\fn QObject *Phonon::Factory::createVolumeFaderEffect(QObject *parent = 0)+ −
+ −
Create a new backend object for a VolumeFaderEffect.+ −
+ −
\return a pointer to the VolumeFaderEffect the backend provides.+ −
*/+ −
+ −
/*!+ −
\fn QObject *Phonon::Factory::createAudioOutput(QObject *parent = 0)+ −
+ −
Create a new backend object for a AudioOutput.+ −
+ −
\return a pointer to the AudioOutput the backend provides.+ −
*/+ −
+ −
/*!+ −
\fn QObject *Phonon::Factory::createVideoWidget(QObject *parent = 0)+ −
+ −
Create a new backend object for a VideoWidget.+ −
+ −
\return a pointer to the VideoWidget the backend provides.+ −
*/+ −
+ −
/*!+ −
\fn QObject *Phonon::Factory::backend(bool createWhenNull = true)+ −
+ −
\return a pointer to the backend interface.+ −
*/+ −
+ −
/*!+ −
\fn QString Phonon::Factory::identifier()+ −
+ −
Unique identifier for the Backend. Can be used in configuration files+ −
for example.+ −
*/+ −
+ −
+ −
/*!+ −
\fn QString Phonon::Factory::backendName()+ −
+ −
Get the name of the Backend.+ −
\omit+ −
It's the name from the .desktop file.+ −
\endomit+ −
*/+ −
+ −
/*!+ −
\fn QString Phonon::Factory::backendComment()+ −
+ −
Get the comment of the Backend.+ −
\omit+ −
It's the comment from the .desktop file.+ −
\endomit+ −
*/+ −
+ −
/*!+ −
\fn QString Phonon::Factory::backendVersion()+ −
+ −
Get the version of the Backend.+ −
\omit+ −
It's the version from the .desktop file.+ −
\endomit+ −
+ −
The version is especially interesting if there are several versions+ −
available for binary incompatible versions of the backend's media+ −
framework.+ −
*/+ −
+ −
/*!+ −
\fn QString Phonon::Factory::backendIcon()+ −
+ −
Get the icon (name) of the Backend.+ −
\omit+ −
It's the icon from the .desktop file.+ −
\endomit+ −
*/+ −
+ −
/*!+ −
\fn QString Phonon::Factory::backendWebsite()+ −
+ −
Get the website of the Backend.+ −
\omit+ −
It's the website from the .desktop file.+ −
\endomit+ −
*/+ −
+ −
/*!+ −
\fn QObject *Phonon::Factory::registerQObject(QObject *object)+ −
+ −
Registers the given backend \a object with the factory.+ −
*/+ −
+ −
/*!+ −
\fn bool Phonon::Factory::isMimeTypeAvailable(const QString &mimeType)+ −
*/+ −
+ −
/*!+ −
\fn void Phonon::Factory::registerFrontendObject(MediaNodePrivate *)+ −
\internal+ −
*/+ −
+ −
/*!+ −
\fn void Phonon::Factory::deregisterFrontendObject(MediaNodePrivate *)+ −
\internal+ −
*/+ −
+ −
/*!+ −
\fn void Phonon::Factory::setBackend(QObject *)+ −
*/+ −
+ −
/*!+ −
\fn PlatformPlugin *Phonon::Factory::platformPlugin()+ −
*/+ −
+ −
/*!+ −
/*!+ −
\class Phonon::AbstractMediaStreamPrivate+ −
\inmodule Phonon+ −
\since 4.4+ −
\internal+ −
*/+ −
+ −
/*!+ −
\class Phonon::FrontendInterfacePrivate+ −
\inmodule Phonon+ −
\since 4.4+ −
\internal+ −
*/+ −
+ −
/*!+ −
\class Phonon::EffectWidgetPrivate+ −
\inmodule Phonon+ −
\since 4.4+ −
\internal+ −
*/+ −
+ −
/*!+ −
\class Phonon::IODeviceStream+ −
\inmodule Phonon+ −
\since 4.4+ −
\internal+ −
*/+ −
+ −
/*!+ −
\fn explicit Phonon::IODeviceStream::IODeviceStream(QIODevice *ioDevice, QObject *parent = 0)+ −
\internal+ −
+ −
Creates a new IODeviceStream with the given \a ioDevice and \a+ −
parent.+ −
+ −
*/+ −
+ −
/*!+ −
\fn Phonon::IODeviceStream::~IODeviceStream()+ −
\internal+ −
*/+ −
+ −
/*!+ −
\fn void Phonon::IODeviceStream::reset()+ −
\internal+ −
*/+ −
+ −
/*!+ −
\fn void Phonon::IODeviceStream::needData()+ −
\internal+ −
*/+ −
+ −
/*!+ −
\fn void Phonon::IODeviceStream::seekStream(qint64)+ −
\internal+ −
*/+ −
+ −
/*!+ −
\namespace Phonon::Platform+ −
\inmodule Phonon+ −
\internal+ −
*/+ −
+ −
/*!+ −
\typedef Phonon::EffectDescriptionModel+ −
\inmodule Phonon+ −
\brief provides a item view model containing available audio effects.+ −
+ −
*/+ −
+ −
/*!+ −
\typedef Phonon::SubtitleDescription+ −
\inmodule Phonon+ −
\internal+ −
*/+ −
+ −
/*!+ −
\typedef Phonon::SubtitleDescriptionModel+ −
\inmodule Phonon+ −
\internal+ −
*/+ −
+ −
/*!+ −
\typedef Phonon::AudioChannelDescription+ −
\inmodule Phonon+ −
\internal+ −
*/+ −
+ −
/*!+ −
\typedef Phonon::AudioChannelDescriptionModel+ −
\inmodule Phonon+ −
\internal+ −
*/+ −
+ −
/*!+ −
\typedef Phonon::AudioCaptureDevice+ −
\inmodule Phonon+ −
\internal+ −
*/+ −
+ −
/*!+ −
\typedef Phonon::AudioCaptureDeviceModel+ −
\inmodule Phonon+ −
\internal+ −
*/+ −
+ −
/*!+ −
\typedef Phonon::CleanUpFunction+ −
\inmodule Phonon+ −
\internal+ −
*/+ −
+ −
/*!+ −
\typedef Phonon::QObjectPair+ −
\inmodule Phonon+ −
\since 4.4+ −
\internal+ −
+ −
*/+ −
+ −
/*!+ −
\typedef Phonon::AudioOutputDeviceModel+ −
\inmodule Phonon+ −
\brief provides an item view model containing available audio output devices.+ −
+ −
*/+ −
+ −
/*!+ −
\fn uint Phonon::qHash(const Phonon::EffectParameter ¶m)+ −
\internal+ −
+ −
*/+ −
+ −
/*!+ −
\fn Phonon::CleanUpGlobalStatic::~CleanUpGlobalStatic()+ −
\internal+ −
*/+ −
+ −
/*!+ −
\class Phonon::ConstIface+ −
\inmodule Phonon+ −
\since 4.4+ −
\internal+ −
*/+ −
+ −
/*!+ −
\class Phonon::CleanUpGlobalStatic+ −
\inmodule Phonon+ −
\since 4.4+ −
\internal+ −
*/+ −
+ −
/*!+ −
\class Phonon::EffectParameterPrivate+ −
\inmodule Phonon+ −
\since 4.4+ −
\internal+ −
+ −
*/+ −
+ −
/*!+ −
\class Phonon::QSettingsGroup+ −
\inmodule Phonon+ −
\since 4.4+ −
\internal+ −
+ −
*/+ −
+ −
/*!+ −
\class Phonon::MediaNodeDestructionHandler+ −
\inmodule Phonon+ −
\since 4.4+ −
\internal+ −
+ −
*/+ −
+ −
/*!+ −
\fn Phonon::MediaNodeDestructionHandler::~MediaNodeDestructionHandler()+ −
\internal+ −
Called from Base::~Base if this object was registered+ −
using BasePrivate::addDestructionHandler().+ −
*/+ −
+ −
/*!+ −
\fn Phonon::MediaNodeDestructionHandler::phononObjectDestroyed(MediaNodePrivate *)+ −
\internal+ −
*/+ −
+ −
/*!+ −
\fn explicit Phonon::EffectWidget::EffectWidget(Effect *effect, QWidget *parent = 0)+ −
\internal+ −
+ −
Constructs a new EffectWidget for the specified \a effect and with+ −
the specified \a parent.+ −
*/+ −
+ −
/*!+ −
\fn Phonon::EffectWidget::~EffectWidget()+ −
\internal+ −
*/+ −
+ −
/*!+ −
\fn QDebug Phonon::operator<<(QDebug s, const ObjectDescription<T> &o)+ −
\internal+ −
*/+ −
+ −
/*!+ −
\class Phonon::ListModelHelper+ −
\inmodule Phonon+ −
\since 4.4+ −
\internal+ −
*/+ −
+ −
/*!+ −
\class AudioOutputInterface42+ −
\inmodule Phonon+ −
\since 4.4+ −
\internal+ −
*/+ −
+ −