doc/src/classes/phonon-api.qdoc
branchRCL_3
changeset 7 3f74d0d4af4c
child 13 c0432d11811c
equal deleted inserted replaced
6:dee5afe5301f 7:3f74d0d4af4c
       
     1 /*
       
     2     This file is part of the KDE project
       
     3     Copyright (C) 2005-2007 Matthias Kretz <kretz@kde.org>
       
     4     Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
       
     5     Contact: Nokia Corporation (qt-info@nokia.com)
       
     6 
       
     7     This library is free software; you can redistribute it and/or
       
     8     modify it under the terms of the GNU Library General Public
       
     9     License version 2 as published by the Free Software Foundation.
       
    10 
       
    11     This library is distributed in the hope that it will be useful,
       
    12     but WITHOUT ANY WARRANTY; without even the implied warranty of
       
    13     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
       
    14     Library General Public License for more details.
       
    15 
       
    16     You should have received a copy of the GNU Library General Public License
       
    17     along with this library; see the file COPYING.LIB.  If not, write to
       
    18     the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
       
    19     Boston, MA 02110-1301, USA.
       
    20 */
       
    21 
       
    22 
       
    23 /*!
       
    24     \enum Phonon::DiscType
       
    25     Enum to identify the media discs supported by MediaObject.
       
    26 
       
    27     \value NoDisc
       
    28     No disc was selected. This is only useful as a return value from
       
    29     MediaSource::diskType().
       
    30     \value Cd Identifies Audio CDs.
       
    31     \value Dvd Identifies DVDs (not arbitrary data DVDs, only movie DVDs).
       
    32     \value Vcd Identifies Video CDs.
       
    33 
       
    34     \sa MediaSource, MediaObject
       
    35 */
       
    36 
       
    37 /*!
       
    38     \enum Phonon::MetaData
       
    39 
       
    40     Provided as keys for Phonon::MediaObject::metaData(). The enum
       
    41     values matches strings defined in the Ogg Vorbis specification
       
    42 
       
    43     \value ArtistMetaData
       
    44     \value AlbumMetaData
       
    45     \value TitleMetaData
       
    46     \value DateMetaData
       
    47     \value GenreMetaData
       
    48     \value TracknumberMetaData
       
    49     \value DescriptionMetaData
       
    50     \value MusicBrainzDiscIdMetaData
       
    51 */
       
    52 
       
    53 /*!
       
    54     \enum Phonon::State
       
    55     \since 4.4
       
    56 
       
    57     The state enum describes the different states a media object can
       
    58     take. Several functions of \l{Phonon::}{MediaObject} are
       
    59     asynchronous, so even if a you have requested a state change
       
    60     through a function call, e.g., through
       
    61     \l{Phonon::MediaObject::}{play()}, you cannot be sure that the
       
    62     change has taken place before you receive the
       
    63     \l{Phonon::MediaObject::}{stateChanged()} signal.
       
    64 
       
    65     A media object can at any time change into any state, regardless
       
    66     of the state it previously had. \omit In the
       
    67     \l{Phonon::}{MediaObject} class description explains the typical
       
    68     state changes in the life of a media object. \endomit
       
    69 
       
    70     \value LoadingState
       
    71     After construction it might take a while before the media object
       
    72     is ready to \l{Phonon::MediaObject::}{play()}. This state is
       
    73     commonly used by backends to initialize the \l{Phonon
       
    74     Overview}{media graph} and loading the source. When
       
    75     the object leaves the loading state, it will enter the
       
    76     StoppedState unless an error occurred or another state is
       
    77     requested through a function call, e.g.,
       
    78     \l{Phonon::}{MediaObject::play()}.
       
    79 
       
    80     \value StoppedState
       
    81     In the stopped state, the media object is ready to play its
       
    82     current media source. The current
       
    83     \l{MediaObject::seek()}{position} in the media stream is then 0.
       
    84 
       
    85     \value PlayingState
       
    86     The media object is playing back its media source.
       
    87 
       
    88     \value BufferingState
       
    89     The Player is waiting for data to be able to start or continue
       
    90     playing. This state is commonly used to wait for media data over a
       
    91     network connection.
       
    92 
       
    93     \value PausedState
       
    94     The media player has currently paused its playback, i.e., it
       
    95     stops playing but keeps the current playback position in the
       
    96     stream.
       
    97 
       
    98     \value ErrorState
       
    99     When a media object enters the error state a problem with the
       
   100     playback has occurred. The possible errors are grouped into
       
   101     two categories by Phonon::ErrorType, and the type can be
       
   102     queried through \l{Phonon::MediaObject::}{errorType()}. A
       
   103     \l{Phonon::}{FatalError} implies that the playback
       
   104     cannot continue, but one can still try with a new media
       
   105     source. With a \l{Phonon::}{NormalError} it might
       
   106     be possible to continue playback, and a media object may
       
   107     therefore change state from the ErrorState.
       
   108 
       
   109     \sa MediaObject
       
   110 */
       
   111 
       
   112 /*!
       
   113     \enum Phonon::Category
       
   114 
       
   115     Sets the category your program should be listed in in the mixer.
       
   116 
       
   117     \value NoCategory
       
   118     Will make use of the default device.
       
   119     \value NotificationCategory
       
   120     If the sounds produced are notifications (ping, beep and such) you
       
   121     should use this category.
       
   122     \value MusicCategory
       
   123     If your application is a music player (like a jukebox or media player
       
   124     playing an audio file).
       
   125     \value VideoCategory
       
   126     If the sound is the audio channel of a video.
       
   127     \value CommunicationCategory
       
   128     If your applications produces sounds from communication with somebody
       
   129     else (VoIP, voice chat).
       
   130     \value GameCategory
       
   131     Sound produced by a computer game should go into this category.
       
   132     \value AccessibilityCategory
       
   133     Sounds produced for accessibility (e.g., Text-To-Speech)
       
   134     \omitvalue LastCategory
       
   135     Holds the largest value of categories.
       
   136     \omitvalue AccessibilityCategory
       
   137 
       
   138     A Jukebox will set this to Music, a VoIP program to Communication, a
       
   139     DVD player to video, and so on.
       
   140 
       
   141     \note These categories can also become useful for an application that
       
   142     controls the volumes automatically, like turning down the music when a call
       
   143     comes in, or turning down the notifications when the media player knows
       
   144     it's playing classical music.
       
   145 */
       
   146 
       
   147 /*!
       
   148     \enum Phonon::ErrorType
       
   149 
       
   150     This enum describes the severity when an error has occurred during
       
   151     playback.
       
   152 
       
   153     After a media object has entered the \l{Phonon::}{ErrorState}, one
       
   154     can query the type of error from
       
   155     \l{Phonon::}{MediaObject::errorType()}. Note that you should query
       
   156     the error when receiving the
       
   157     \l{Phonon::}{MediaObject::stateChanged()} signal, because the
       
   158     error type will be lost if the media object leaves the error
       
   159     state.    
       
   160 
       
   161     \value NoError No error. MediaObject::errorType() returns this if
       
   162     MediaObject::state() != Phonon::ErrorState.
       
   163 
       
   164     \value NormalError An error has occurred with the playback of the current
       
   165     source. It might be possible to continue playback, for instance, if only the
       
   166     audio stream in a video cannot be played back. The media object will then
       
   167     leave the error state again.
       
   168 
       
   169     \value FatalError. Something important does not work. Your program cannot continue
       
   170     the playback of the current source, but it might be possible to try another.
       
   171 
       
   172     \sa MediaObject::errorType()
       
   173 */
       
   174 
       
   175 /*!
       
   176     \fn QString Phonon::categoryToString(Category c)
       
   177 
       
   178     Returns a (translated) string to show to the user identifying the given
       
   179     Category (\a c).
       
   180 */
       
   181 
       
   182 /*!
       
   183     \enum Phonon::ObjectDescriptionType
       
   184     \relates Phonon::ObjectDescription
       
   185 
       
   186     This enum defines the type of information that is contained in a
       
   187     \l{Phonon::}{ObjectDescription} object.
       
   188 
       
   189     \value AudioOutputDeviceType An audio output device (\l{Phonon::}{AudioOutputDevice}).
       
   190     This can be soundcards (with different drivers),
       
   191     sound servers, or other virtual outputs like playback on a different
       
   192     computer on the network.
       
   193 
       
   194     \value EffectType An audio effect (\l{Phonon::}{EffectDescription}).
       
   195     \omitvalue SubtitleType
       
   196     \omitvalue AudioCaptureDeviceType
       
   197     \omitvalue AudioChannelType
       
   198 */
       
   199 
       
   200 /*!
       
   201     \typedef Phonon::AudioOutputDevice
       
   202     \relates Phonon::ObjectDescription
       
   203 
       
   204     This typedef of \l{Phonon::}{ObjectDescription} describes an audio output
       
   205     device, such as soundcards (with different drivers), sound servers, or other
       
   206     virtual outputs like playback on a different computer on the network.
       
   207 
       
   208     \omit
       
   209     For Hardware devices the backend should use libkaudiodevicelist
       
   210     (AudioDevice and AudioDeviceEnumerator) which will list removable
       
   211     devices even when they are unplugged and provide a unique identifier
       
   212     that can make backends use the same identifiers.
       
   213     \endomit
       
   214 
       
   215     A list of available devices is given by the backend with
       
   216     Backendcapabilities::availableAudioOutputDevices()
       
   217 
       
   218     \snippet doc/src/snippets/phononobjectdescription.cpp 1
       
   219 
       
   220 */
       
   221 
       
   222 /*!
       
   223     \fn Phonon::phononVersion()
       
   224     \inmodule Phonon
       
   225     \since 4.5
       
   226 
       
   227     Returns the Phonon version.
       
   228 */
       
   229 
       
   230 /*!
       
   231     \class Phonon::ObjectDescription
       
   232     \inmodule Phonon
       
   233     \inheaderfile Phonon/ObjectDescription
       
   234     \since 4.4
       
   235     \brief The ObjectDescription class provides information about Phonon objects.
       
   236 
       
   237     Phonon currently uses this class to describe audio effects and
       
   238     audio output devices - using the typedefs AudioOutputDevice and
       
   239     EffectDescription. The type of an ObjectDescription is also
       
   240     described through the \l{Phonon::}{ObjectDescriptionType} enum.
       
   241     Objects of the same \l{Phonon::ObjectDescriptionType}{type} are
       
   242     uniquely identified by an index().
       
   243 
       
   244     The class gives a description() and a name() of the object, both
       
   245     of which are strings appropriate for end users of a Phonon
       
   246     application. You can also check whether the device or effect
       
   247     described is \l{isValid()}{valid}. This does not guarantee that
       
   248     the device or effect functions as expected, but that the
       
   249     ObjectDescription describes an existing device or effect.
       
   250 
       
   251     Audio output devices and effect descriptions are used to select
       
   252     the audio output device to be used for playback and to create
       
   253     effects; we show examples of this in the snippet below. The
       
   254     available descriptions can be fetched with
       
   255     \l{Phonon::BackendCapabilities::}{availableAudioOutputDevices()}
       
   256     and \l{Phonon::BackendCapabilities::}{availableAudioEffects()}
       
   257     static functions in the Phonon::BackendCapabilities namespace
       
   258 
       
   259     \snippet doc/src/snippets/phononobjectdescription.cpp 0
       
   260 
       
   261     Other types of ObjectDescriptions might be possible in the future,
       
   262     e.g., descriptions of audio capture devices, such as microphones.
       
   263 
       
   264     \omit Not implemented yet.
       
   265     Need a new paragraph on that some descriptions 'belong
       
   266     together', such as chained audio effects.
       
   267 
       
   268     Some parts give the end user choices, e.g. what source to capture
       
   269     audio from. These choices are described by the name and
       
   270     description methods of this class and identified with the id
       
   271     method. Subclasses then define additional information like which
       
   272     audio and video choices belong together.  \endomit
       
   273 
       
   274     \sa Phonon::AudioOutputDevice, Phonon::EffectDescription, {Capabilities Example}, {Phonon Module}
       
   275 */
       
   276 
       
   277 /*!
       
   278     \fn Phonon::ObjectDescription::ObjectDescription()
       
   279     \brief constructs a new object description.
       
   280     \internal
       
   281 */
       
   282 
       
   283 /*!
       
   284     \fn Phonon::ObjectDescription::ObjectDescription (int index, const QHash<QByteArray, QVariant> & properties)
       
   285     \internal
       
   286 */
       
   287 
       
   288 /*!
       
   289     \fn Phonon::ObjectDescription::ObjectDescription(const QExplicitlySharedDataPointer<ObjectDescriptionData> &dd)
       
   290     \internal
       
   291 */
       
   292 
       
   293 /*!
       
   294     \fn static inline ObjectDescription<T> Phonon::ObjectDescription::fromIndex(int index)
       
   295     \internal
       
   296 
       
   297     \omit Currently indices are not unique for all ObjectDescription types, making
       
   298     the behavior of this function undefined. \endomit
       
   299 
       
   300     Returns a new description object that describes the
       
   301     device/effect/codec/...  with the given \a index.
       
   302 */
       
   303 
       
   304 /*!
       
   305     \fn inline bool Phonon::ObjectDescription::operator==(const ObjectDescription &otherDescription) const
       
   306 
       
   307     Returns \c true if this ObjectDescription describes the same
       
   308     object as \a otherDescription; otherwise, returns \c false.
       
   309 */
       
   310 
       
   311 /*!
       
   312     \fn inline bool Phonon::ObjectDescription::operator!=(const ObjectDescription &otherDescription) const
       
   313     Returns \c false if this ObjectDescription describes the same
       
   314     as \a otherDescription; otherwise, returns \c true.
       
   315 */
       
   316 
       
   317 /*!
       
   318     \fn inline QString Phonon::ObjectDescription::name() const
       
   319 
       
   320     Returns a string appropriate for a user to select between
       
   321     object descriptions, e.g., from a QComboBox.
       
   322 
       
   323     \sa description()
       
   324 */
       
   325 
       
   326 /*!
       
   327     \fn inline QString Phonon::ObjectDescription::description() const
       
   328 
       
   329     Returns a more extensive description than the name() function.
       
   330 
       
   331     For example, in the case of \l{Phonon::}{AudioOutputDevice}s, this
       
   332     text should make clear which sound source is described; this is
       
   333     sometimes hard to describe or understand from just the name.
       
   334 
       
   335     The text is appropriate to present to an end user in for example
       
   336     tool tips of items, with the name()'s as text, in a QComboBox.
       
   337 
       
   338 */
       
   339 
       
   340 /*!
       
   341     \fn inline QVariant Phonon::ObjectDescription::property(const char *name) const
       
   342 
       
   343     Returns the property named \a name. A property can be used for
       
   344     extended information, such as the manufacturer of a sound card. The
       
   345     information will usually be given as text.
       
   346 
       
   347     If the property is not set an invalid QVariant is returned.
       
   348 
       
   349     Qt's backends do not use properties at the time of this writing.
       
   350 
       
   351     \sa propertyNames()
       
   352 */
       
   353 
       
   354 /*!
       
   355     \fn inline QList<QByteArray> Phonon::ObjectDescription::propertyNames() const
       
   356 
       
   357     Properties can be used for extended information about a
       
   358     ObjectDescription, e.g., a manufacturer of a sound card. The
       
   359     information will usually be given text.
       
   360 
       
   361     This function returns all names that return valid data when
       
   362     property() is called.
       
   363 
       
   364     Currently, Qt backends do not use properties for their object
       
   365     descriptions.
       
   366 
       
   367     \sa property()
       
   368 */
       
   369 
       
   370 /*!
       
   371     \fn inline bool Phonon::ObjectDescription::isValid() const
       
   372 
       
   373     Returns true if the device or effect described exists.
       
   374 
       
   375     An ObjectDescription that is invalid, will also have an
       
   376     index() of -1.
       
   377 
       
   378     \sa index()
       
   379 */
       
   380 
       
   381 /*!
       
   382     \fn inline int Phonon::ObjectDescription::index() const
       
   383 
       
   384     Returns a unique identifier for this ObjectDescription. Used
       
   385     internally to distinguish between the descriptions.
       
   386 
       
   387     Notice that the identifiers are only unique to the type of
       
   388     description, e.g., \l{Phonon::}{AudioOutputDevice} or
       
   389     \l{Phonon::}{EffectDescription}.
       
   390 */
       
   391 
       
   392 /*!
       
   393     \class Phonon::ObjectDescriptionPrivate
       
   394     \inmodule Phonon
       
   395     \since 4.4
       
   396     \internal
       
   397 
       
   398 */
       
   399 
       
   400 /*!
       
   401     \class Phonon::StreamInterface
       
   402     \inmodule Phonon
       
   403     \since 4.4
       
   404     \brief Backend interface to handle media streams (AbstractMediaStream).
       
   405     \internal
       
   406 */
       
   407 
       
   408 /*!
       
   409     \fn virtual Phonon::StreamInterface::~StreamInterface()
       
   410 */
       
   411 
       
   412 /*!
       
   413     \fn virtual void Phonon::StreamInterface::writeData(const QByteArray &data) = 0
       
   414     \internal
       
   415 */
       
   416 
       
   417 /*!
       
   418     \fn virtual void Phonon::StreamInterface::endOfData() = 0
       
   419     \internal
       
   420 */
       
   421 
       
   422 /*!
       
   423     \fn virtual void Phonon::StreamInterface::setStreamSize(qint64 newSize) = 0
       
   424     \internal
       
   425 */
       
   426 
       
   427 /*!
       
   428     \fn virtual void Phonon::StreamInterface::setStreamSeekable(bool s) = 0
       
   429     \internal
       
   430 */
       
   431 
       
   432 /*!
       
   433     \fn void Phonon::StreamInterface::connectToSource(const MediaSource &mediaSource)
       
   434     \internal
       
   435 */
       
   436 
       
   437 /*!
       
   438     \fn void Phonon::StreamInterface::needData()
       
   439     \internal
       
   440 */
       
   441 
       
   442 /*!
       
   443     \fn void Phonon::StreamInterface::enoughData()
       
   444     \internal
       
   445 */
       
   446 
       
   447 /*!
       
   448     \fn void Phonon::StreamInterface::seekStream(qint64)
       
   449     \internal
       
   450 */
       
   451 
       
   452 /*!
       
   453     \fn void Phonon::StreamInterface::reset()
       
   454     \internal
       
   455 */
       
   456 
       
   457 /*!
       
   458     \fn Phonon::StreamInterface::StreamInterface()
       
   459     \internal
       
   460     \omit
       
   461     For subclasses.
       
   462     \endomit
       
   463 */
       
   464 
       
   465 /*!
       
   466     \class StreamInterfacePrivate
       
   467     \inmodule Phonon
       
   468     \internal
       
   469 */
       
   470 
       
   471 /*!
       
   472     \class Phonon::AbstractVideoOutput
       
   473     \inmodule Phonon
       
   474     \internal
       
   475     \since 4.4
       
   476     \brief The AbstractVideoOutput class is the common base class for all video output classes.
       
   477 
       
   478     \sa VideoWidget
       
   479 */
       
   480 
       
   481 /*!
       
   482     \namespace Phonon::Experimental
       
   483     \internal
       
   484 */
       
   485 
       
   486 /*!
       
   487     \fn Phonon::AbstractVideoOutput::AbstractVideoOutput(AbstractVideoOutputPrivate &d)
       
   488     \internal
       
   489 
       
   490     Constructor that is called from derived classes.
       
   491 
       
   492     \param parent Standard QObject parent.
       
   493 */
       
   494 
       
   495 /*!
       
   496     \class Phonon::AbstractVideoOutputPrivate
       
   497     \inmodule Phonon
       
   498     \internal
       
   499     \since 4.4
       
   500 */
       
   501 
       
   502 /*!
       
   503     \class Phonon::VolumeFaderEffect
       
   504     \inmodule Phonon
       
   505     \internal
       
   506     \since 4.4
       
   507 
       
   508     This effect differs from gradually changing the output volume in that
       
   509     a dedicated effect can change the volume in the smallest possible
       
   510     steps while every other volume control will make more or less
       
   511     noticeable steps.
       
   512 
       
   513     \sa AudioOutput::volume()
       
   514 */
       
   515 
       
   516 /*!
       
   517     \property Phonon::VolumeFaderEffect::volume
       
   518 
       
   519     This is the current volume of the output as voltage factor.
       
   520     Setting this property changes the volume immediately.
       
   521 
       
   522     1.0 means 100%, 0.5 means 50% voltage/25% power, 0.0 means 0%
       
   523 
       
   524     \sa volumeDecibel
       
   525 */
       
   526 
       
   527 /*!
       
   528     \property Phonon::VolumeFaderEffect::volumeDecibel
       
   529 
       
   530     This is the current volume of the output in decibel.
       
   531     Setting this property changes the volume immediately.
       
   532 
       
   533     0 dB means no change in volume, -6dB means an attenuation of the
       
   534     voltage to 50% and an attenuation of the power to 25%, -inf dB means
       
   535     silence.
       
   536 
       
   537     \sa volume
       
   538 */
       
   539 
       
   540 /*!
       
   541     \property Phonon::VolumeFaderEffect::fadeCurve
       
   542 
       
   543     This property holds the fade curve to be used for the fadeIn(), fadeOut()
       
   544     and fadeTo() slots.
       
   545 
       
   546     Defaults to Fade3Decibel.
       
   547 
       
   548     \sa FadeCurve
       
   549 */
       
   550 
       
   551 /*!
       
   552     \enum Phonon::VolumeFaderEffect::FadeCurve
       
   553     Determines the curve of the volume change.
       
   554 
       
   555     \value Fade3Decibel Crossfade curve/fast fade out.
       
   556     This is the default fade curve.
       
   557     \value Fade6Decibel Linear fade out.
       
   558     \value Fade9Decibel Slow fade out.
       
   559     \value Fade12Decibel A more extreme version of the -9dB fade.
       
   560 
       
   561     \bold{Notes:}
       
   562 
       
   563     \c Fade3Decibel is often the best fade for a crossfade, as after half
       
   564     of the time the volume reached -3dB. This means that half the
       
   565     possible power (which is proportional to the square of the
       
   566     voltage) is reached. Summed, the maximum power of two audio
       
   567     signals fading with a -3dB curve will always be equal.
       
   568 
       
   569     For fading in or out the -3dB curve is too abrupt in the end.
       
   570 
       
   571     With a -6dB fade curve, a volume of -6dB is reached after half of
       
   572     the fading time. -6dB is equal to half of the voltage meaning
       
   573     that the voltage multiplier changes linearly from the start
       
   574     of the fade to the end.
       
   575 
       
   576     With the \c Fade9Decibel fade, a volume of -9dB is reached after
       
   577     half of the fade time, so the fade is fast in the beginning and
       
   578     slow at the end. This is a good fade for ending music.
       
   579 */
       
   580 
       
   581 /*!
       
   582     \fn void Phonon::VolumeFaderEffect::fadeIn(int fadeTime)
       
   583 
       
   584     Tells the Fader to change the volume from the current volume to 100%
       
   585     in \a fadeTime milliseconds.
       
   586 
       
   587     Short for \c fadeTo(1.0, fadeTime).
       
   588 
       
   589     \param fadeTime the fade duration in milliseconds
       
   590 
       
   591     \sa fadeTo(), volume
       
   592 */
       
   593 
       
   594 /*!
       
   595     \fn void Phonon::VolumeFaderEffect::fadeOut(int fadeTime)
       
   596 
       
   597     Tells the Fader to change the volume from the current volume to 0%
       
   598     in \a fadeTime milliseconds.
       
   599     Short for \c fadeTo(0.0, fadeTime).
       
   600 
       
   601     \param fadeTime the fade duration in milliseconds
       
   602 
       
   603     \sa fadeTo
       
   604 */
       
   605 
       
   606 /*!
       
   607     \fn void Phonon::VolumeFaderEffect::fadeTo(float volume, int fadeTime)
       
   608 
       
   609     Tells the Fader to change the volume from the current value to
       
   610     \a volume in \a fadeTime milliseconds.
       
   611 
       
   612     \sa fadeIn(), fadeOut()
       
   613 */
       
   614 
       
   615 /*!
       
   616     \class Phonon::VolumeFaderEffectPrivate
       
   617     \inmodule Phonon
       
   618     \since 4.4
       
   619     \internal
       
   620 */
       
   621 
       
   622 /*!
       
   623     \class Phonon::VolumeFaderInterface
       
   624     \inmodule Phonon
       
   625     \since 4.4
       
   626     \internal
       
   627 */
       
   628 
       
   629 /*!
       
   630     \fn virtual Phonon::VolumeFaderInterface::~VolumeFaderInterface()
       
   631     \internal
       
   632 */
       
   633 
       
   634 /*!
       
   635     \fn virtual float Phonon::VolumeFaderInterface::volume() const
       
   636     \internal
       
   637 */
       
   638 
       
   639 /*!
       
   640     \fn virtual void Phonon::VolumeFaderInterface::setVolume(float)
       
   641     \internal
       
   642 */
       
   643 
       
   644 /*!
       
   645     \fn virtual Phonon::VolumeFaderEffect::FadeCurve Phonon::VolumeFaderInterface::fadeCurve() const
       
   646     \internal
       
   647 */
       
   648 
       
   649 /*!
       
   650     \fn virtual void Phonon::VolumeFaderInterface::setFadeCurve(Phonon::VolumeFaderEffect::FadeCurve)
       
   651     \internal
       
   652 */
       
   653 
       
   654 /*!
       
   655     \fn virtual void Phonon::VolumeFaderInterface::fadeTo(float, int)
       
   656     \internal
       
   657 */
       
   658 
       
   659 /*!
       
   660     \class Phonon::AbstractMediaStream
       
   661     \inmodule Phonon
       
   662     \internal
       
   663     \since 4.4
       
   664     \brief The AbstractMediaStream class is the base class for custom media data streams.
       
   665     \inheaderfile Phonon/AbstractMediaStream
       
   666 
       
   667     This class is subclassed to provide custom data streams for
       
   668     \l{Phonon::}{MediaSource}s.
       
   669 
       
   670     The \l{Phonon::}{MediaSource} knows how to handle the most common
       
   671     media sources, such as files and CD. If you need to fetch
       
   672     multimedia from other sources, you can reimplement this class,
       
   673     which can be used by a \l{Phonon::}{MediaSource}.
       
   674 
       
   675     When a backend needs more data from the stream, needData() will be
       
   676     called. You must then use writeData() to write the data to the
       
   677     backend. You can either write one time and wait for a new
       
   678     needData() call, or continue to write data until you receive an
       
   679     enoughData() call. When the stream is at its end, call endOfData()
       
   680     instead of writeData().
       
   681 
       
   682     Before the custom stream is passed to a \l{Phonon::}{MediaSource},
       
   683     setStreamSize() needs to be called, and also setStreamSeekable()
       
   684     (if the stream is seekable). A good place to do this work is in
       
   685     the constructor. A seekable stream must also reimplement
       
   686     seekStream().
       
   687 
       
   688     We show two examples. The first writes data repeatedly until it
       
   689     receives the enoughData() call, while the second only writes once
       
   690     and waits for a new needData() call.
       
   691 
       
   692     Example where data is written repeatedly.
       
   693 
       
   694     \snippet doc/src/snippets/code/doc_src_phonon-api.qdoc 0
       
   695 
       
   696     Example where data is written once:
       
   697 
       
   698     \snippet doc/src/snippets/code/doc_src_phonon-api.qdoc 1
       
   699 
       
   700     \sa Phonon::MediaSource, Phonon::MediaObject 
       
   701 
       
   702 */
       
   703 
       
   704 /*!
       
   705     \fn Phonon::AbstractMediaStream::AbstractMediaStream(QObject *parent = 0)
       
   706     \internal
       
   707 
       
   708     Constructs an AbstractMediaStream object with the given \a parent.
       
   709 
       
   710 */
       
   711 
       
   712 /*!
       
   713     \fn qint64 Phonon::AbstractMediaStream::streamSize() const
       
   714 
       
   715     Returns the stream size that was set with setStreamSize().
       
   716 
       
   717     A negative value means that the length of the stream cannot be known.
       
   718 
       
   719     Defaults to 0.
       
   720 
       
   721     \sa setStreamSize()
       
   722 */
       
   723 
       
   724 /*!
       
   725     \fn void Phonon::AbstractMediaStream::setStreamSize(qint64 size)
       
   726 
       
   727     Sets the \a size of the stream in number of bytes.
       
   728 
       
   729     A negative value means that the length of the stream cannot be known.
       
   730 
       
   731     Defaults to 0.
       
   732 
       
   733     This function has to be called. A backend will not call needData()
       
   734     until the stream size is set.
       
   735 
       
   736     \sa streamSize()
       
   737 
       
   738 */
       
   739 
       
   740 /*!
       
   741     \fn bool Phonon::AbstractMediaStream::streamSeekable() const
       
   742 
       
   743     Returns whether your data stream is set as seekable.
       
   744 
       
   745     Defaults to \c false.
       
   746 
       
   747     \sa setStreamSeekable()
       
   748 
       
   749 */
       
   750 
       
   751 /*!
       
   752     \fn void Phonon::AbstractMediaStream::setStreamSeekable(bool s)
       
   753 
       
   754     Sets whether your data stream is seekable. \a s should be true if
       
   755     the stream is seekable; otherwise false.
       
   756 
       
   757     Defaults to \c false.
       
   758 
       
   759     If you set this to \c true you have to implement the seekStream()
       
   760     function.
       
   761 
       
   762     \sa streamSeekable()
       
   763 */
       
   764 
       
   765 /*!
       
   766     \fn void Phonon::AbstractMediaStream::writeData(const QByteArray &data)
       
   767 
       
   768     Sends the media \a data to the backend for decoding.
       
   769 
       
   770     Use this function to send data to the backend after needData() has
       
   771     been called.
       
   772 
       
   773     If your stream is a push stream, data should be written until the
       
   774     enoughData() function is called. For a pull stream, write data
       
   775     once before the call to needData() function returns.
       
   776 
       
   777     If the data is depleted, call endOfData() instead of writeData().
       
   778 
       
   779     \warning Don't call this function before the first needData() is emitted.
       
   780 
       
   781     \sa needData(), endOfData()
       
   782 
       
   783 */
       
   784 
       
   785 /*!
       
   786     \fn void Phonon::AbstractMediaStream::endOfData()
       
   787 
       
   788     Tells the backend that the media data stream is at its end.
       
   789 
       
   790     \warning Don't call this function before the first needData() is emitted.
       
   791 
       
   792     \sa writeData(), needData()
       
   793 */
       
   794 
       
   795 /*!
       
   796     \fn void Phonon::AbstractMediaStream::error(Phonon::ErrorType errorType, const QString &errorString)
       
   797 
       
   798     If an I/O error occurs you should call this function to make
       
   799     MediaObject go into ErrorState. \c errorType classifies the error,
       
   800     while \a errorString is a textual description of the error suitable
       
   801     for users of Phonon applications.
       
   802 
       
   803     \sa MediaObject::errorType(), MediaObject::errorString()
       
   804 */
       
   805 
       
   806 /*!
       
   807     \fn virtual void Phonon::AbstractMediaStream::reset() = 0
       
   808 
       
   809     Reimplement this function to reset the stream. Subsequent calls to writeData should start
       
   810     from the first position of the data unless a seek is requested.
       
   811 
       
   812     The function is necessary for the case where a non-seekable MediaStream is
       
   813     played more than once. For a seekable stream the implementation can simply call
       
   814     \snippet doc/src/snippets/code/doc_src_phonon-api.qdoc 2
       
   815 
       
   816     \sa writeData(), needData()
       
   817 */
       
   818 
       
   819 /*!
       
   820     \fn virtual void Phonon::AbstractMediaStream::needData() = 0
       
   821 
       
   822     Reimplement this function to be notified when the backend needs data.
       
   823 
       
   824     When this function is called you should write data to the backend
       
   825     (See writeData()).
       
   826 
       
   827     \sa writeData(), endOfData(), enoughData()
       
   828 */
       
   829 
       
   830 /*!
       
   831     \fn virtual void Phonon::AbstractMediaStream::enoughData()
       
   832 
       
   833     If your stream is a push stream, reimplement this function to be
       
   834     notified when the backend has enough data and your stream object
       
   835     may take a break.
       
   836 
       
   837     This method is important for pushing data to the backend in order
       
   838     to not fill the backend buffer unnecessarily.
       
   839 
       
   840     \sa needData()
       
   841 */
       
   842 
       
   843 /*!
       
   844     \fn virtual void Phonon::AbstractMediaStream::seekStream(qint64 offset)
       
   845 
       
   846     Reimplement this function if your stream is seekable.
       
   847 
       
   848     When this function is called the next call to writeData has to be at the
       
   849     requested \a offset.
       
   850 
       
   851     \warning Do not call the parent implementation.
       
   852 
       
   853     \sa setStreamSeekable(), streamSeekable(), needData()
       
   854 */
       
   855 
       
   856 /*!
       
   857     \class Phonon::BackendInterface
       
   858     \inmodule Phonon
       
   859     \since 4.4
       
   860     \brief Main Backend class interface
       
   861     \internal
       
   862 
       
   863     This interface defines the main factory of the backend. The createObject() function creates all the
       
   864     objects needed by the frontend.
       
   865 
       
   866     The objectDescriptionIndexes and objectDescriptionProperties functions return information about
       
   867     available devices, effects and codecs.
       
   868 
       
   869     An implementation could look like this:
       
   870     \snippet snippets/phonon/samplebackend/main.cpp snippet
       
   871 
       
   872 */
       
   873 
       
   874 /*!
       
   875     \fn virtual Phonon::BackendInterface::~BackendInterface()
       
   876     \internal
       
   877 
       
   878     Silence gcc's warning.
       
   879 */
       
   880 
       
   881 /*!
       
   882     \enum Phonon::BackendInterface::Class
       
   883     \internal
       
   884 
       
   885     Classes that the createObject() function has to handle.
       
   886 
       
   887     \value MediaObjectClass Request to return a \c MediaObject object.
       
   888     \value VolumeFaderEffectClass Request to return a \c VolumeFaderEffect
       
   889     object.
       
   890     \value AudioOutputClass Request to return an \c AudioOutput object.
       
   891     \value AudioDataOutputClass Request to return an \c AudioDataOutput object.
       
   892     \value VisualizationClass Request to return a \c Visualization object.
       
   893     \value VideoDataOutputClass Request to return a \c VideoDataOutput object.
       
   894     \value EffectClass Request to return a \c Effect object.
       
   895     Takes an additional int that specifies the effect ID.
       
   896     \value VideoWidgetClass Request to return a \c VideoWidget object.
       
   897 */
       
   898 
       
   899 /*!
       
   900     \fn virtual QObject *Phonon::BackendInterface::createObject(Class c, QObject *parent, const QList<QVariant> &args = QList<QVariant>()) = 0
       
   901     \internal
       
   902 
       
   903     Returns a new instance of the requested class.
       
   904 
       
   905     \param c The requested class.
       
   906     \param parent The parent object.
       
   907     \param args Additional arguments (documented in Class).
       
   908 */
       
   909 
       
   910 
       
   911 /*!
       
   912     \fn virtual QList<int> Phonon::BackendInterface::objectDescriptionIndexes(ObjectDescriptionType type) const = 0
       
   913     \internal
       
   914 
       
   915     Returns the unique identifiers for the devices/effects/codecs of the given \a type.
       
   916 
       
   917     \param type see ObjectDescriptionType
       
   918 */
       
   919 
       
   920 /*!
       
   921     \fn virtual QHash<QByteArray, QVariant> Phonon::BackendInterface::objectDescriptionProperties(ObjectDescriptionType type, int index) const = 0
       
   922     \internal
       
   923 
       
   924     Given a unique identifier that was returned from objectDescriptionIndexes this function
       
   925     returns a hash mapping property names to values.
       
   926 
       
   927     The property "name" must always be present. All other properties are optional.
       
   928 
       
   929     \table
       
   930     \header \o Property \o Description
       
   931     \row \o name \o The name of the device/effect/codec/...
       
   932     \row \o description \o A text explaining what this device/effect/codec/... is/can do
       
   933     \row \o icon \o An icon name (using the freedesktop naming scheme) or a QIcon for this
       
   934     device/effect/codec/...
       
   935     \row \o available \o A bool telling whether the device is present or unplugged.
       
   936     \endtable
       
   937 
       
   938     \param type see ObjectDescriptionType
       
   939     \param index The unique identifier that is returned from objectDescriptionIndexes
       
   940 */
       
   941 
       
   942 /*!
       
   943     \fn virtual bool Phonon::BackendInterface::startConnectionChange(QSet<QObject *>) = 0;
       
   944     \internal
       
   945 
       
   946     When this function is called the nodes given in the parameter list should
       
   947     not lose any signal data when connections are changed.
       
   948 */
       
   949 
       
   950 /*!
       
   951     \fn virtual bool Phonon::BackendInterface::connectNodes(QObject *, QObject *) = 0
       
   952     \internal
       
   953 
       
   954     Defines a signal connection between the two given nodes.
       
   955 */
       
   956 
       
   957 /*!
       
   958     \fn virtual bool Phonon::BackendInterface::disconnectNodes(QObject *, QObject *) = 0
       
   959     \internal
       
   960 
       
   961     Cuts a signal connection between the two given nodes.
       
   962 */
       
   963 
       
   964 /*!
       
   965     \fn virtual bool Phonon::BackendInterface::endConnectionChange(QSet<QObject *>) = 0
       
   966     \internal
       
   967 
       
   968     When this function is called the nodes given in the parameter list may lose
       
   969     signal data when a port is not connected.
       
   970 */
       
   971 
       
   972 /*!
       
   973     \fn virtual QStringList Phonon::BackendInterface::availableMimeTypes() const = 0
       
   974     \internal
       
   975 
       
   976     Returns all available MIME types.
       
   977 */
       
   978 
       
   979 /*!
       
   980     \class Phonon::MediaSource
       
   981     \inmodule Phonon
       
   982     \inheaderfile Phonon/MediaSource
       
   983     \since 4.4
       
   984     \brief The MediaSource class provides multimedia data for media objects.
       
   985 
       
   986     The MediaSource class manages a source of multimedia content, such
       
   987     as a music or video file, of which data is given to a
       
   988     \l{Phonon::}{MediaObject}.
       
   989 
       
   990     The media source knows how fetch its data from several sources,
       
   991     e.g., from files, a QIODevice, or a CD. The possible source types
       
   992     are described by the \l{MediaSource::}{Type} enum. The type of the
       
   993     source is set by the media source itself, and is dependent on the
       
   994     constructor used to create it. Note that it is possible to provide
       
   995     data from any source by implementing a QIODevice.
       
   996 
       
   997     The class has several functions to acquire information about the
       
   998     source it manages, e.g., fileName() and url(). The return from
       
   999     these functions are dependent on the type() of the media source.
       
  1000 
       
  1001     Normally, a programmer does not need to be concerned with media
       
  1002     sources. It's constructors are implicit, so one can, for instance,
       
  1003     send an URL or filename directly to the constructors of the
       
  1004     \l{Phonon::}{MediaObject}.
       
  1005 
       
  1006     \snippet doc/src/snippets/code/doc_src_phonon-api.qdoc 3
       
  1007 
       
  1008     A MediaSource object cannot be reused for another multimedia
       
  1009     source. It is possible to play the same source again, and also
       
  1010     stop and start a non-seekable media source, such as a radio
       
  1011     stream, with the same MediaSource object.
       
  1012 
       
  1013     \section1 Qt Backends
       
  1014 
       
  1015     Currently, Qt's backends support files in local and remote
       
  1016     locations. Support for other sources, such as CD/DVD, are planned
       
  1017     for the future.
       
  1018 
       
  1019     \sa MediaObject, {Phonon Module}
       
  1020 */
       
  1021 
       
  1022 /*!
       
  1023     \enum Phonon::MediaSource::Type
       
  1024 
       
  1025     Identifies the type of media described by the MediaSource object.
       
  1026 
       
  1027     \value Invalid The MediaSource object does not describe any valid source.
       
  1028     \value LocalFile The MediaSource object describes a local file.
       
  1029     \value Url The MediaSource object describes an URL, which can be either a
       
  1030     local file or a file on the network.
       
  1031     \value Disc The MediaSource object describes a disc, e.g., a CD.
       
  1032     \value Stream The MediaSource object describes a data stream.
       
  1033                   This is the type used for \l{QIODevice}s. Note
       
  1034                   that a stream opened with a QUrl, will still be of the Url type.
       
  1035     \value Empty The media source doesn't have a source.
       
  1036 
       
  1037     \sa MediaSource::type()
       
  1038 */
       
  1039 
       
  1040 /*!
       
  1041     \fn Phonon::MediaSource::MediaSource()
       
  1042     \internal
       
  1043 
       
  1044     Creates an invalid MediaSource object.
       
  1045 
       
  1046     \sa Invalid
       
  1047 */
       
  1048 
       
  1049 /*!
       
  1050     \fn Phonon::MediaSource::MediaSource(const QString &fileName)
       
  1051 
       
  1052     Creates a MediaSource object for the file specified by \a
       
  1053     fileName.  You can also use this constructor with \l{The Qt
       
  1054     Resource System}{Qt resources}
       
  1055 
       
  1056     \omit
       
  1057     \param fileName file name of a local media file or a Qt resource that was compiled in.
       
  1058     \endomit
       
  1059 */
       
  1060 
       
  1061 /*!
       
  1062     \fn Phonon::MediaSource::MediaSource(const QUrl &url)
       
  1063 
       
  1064     Creates a MediaSource object for a the URL specified by \a url.
       
  1065     
       
  1066     If the multimedia content you would like to play back is on a
       
  1067     remote network location, you should use this constructor; though,
       
  1068     it also possible to specify an URL to a local file.
       
  1069 
       
  1070     \sa QUrl
       
  1071 */
       
  1072 
       
  1073 
       
  1074 /*!
       
  1075     \fn Phonon::MediaSource::MediaSource(Phonon::DiscType discType, const QString &deviceName = QString())
       
  1076 
       
  1077     Creates a MediaSource object for the type of disc specified by \a discType in the named
       
  1078     device referred to by \a deviceName.
       
  1079 
       
  1080     \note \a deviceName is a platform dependent device name. It can be useful to specify this
       
  1081     if the computer has more than one CD drive. On KDE, it is recommended to use the Solid
       
  1082     hardware discovery framework to retrieve the device name in a portable way.
       
  1083 */
       
  1084 
       
  1085 /*!
       
  1086     \fn Phonon::MediaSource::MediaSource(AbstractMediaStream *stream)
       
  1087     \internal
       
  1088     Creates a MediaSource object for a data stream.
       
  1089 
       
  1090     Your application can provide the media data by subclassing AbstractMediaStream and
       
  1091     passing a pointer to that object. Phonon will never delete the \a stream.
       
  1092 
       
  1093     \param stream The AbstractMediaStream subclass to provide the media data.
       
  1094 
       
  1095     \sa setAutoDelete
       
  1096 */
       
  1097 
       
  1098 /*!
       
  1099     \fn Phonon::MediaSource::MediaSource(QIODevice *ioDevice)
       
  1100 
       
  1101     Creates a MediaSource object for the QIODevice specified by \a ioDevice.
       
  1102 
       
  1103     This constructor can be very handy in the combination of
       
  1104     QByteArray and QBuffer.
       
  1105 
       
  1106     If you need to fetch multimedia data from a source that is not
       
  1107     supported by MediaSource, you should subclass QIODevice and use
       
  1108     this MediaSource constructor. It is important that you reimplement
       
  1109     QIODevice::isSequential(), as it is used by MediaSource to
       
  1110     determine if the media source is seekable.
       
  1111 
       
  1112     \a ioDevice is an arbitrary readable QIODevice subclass. If the device is not opened
       
  1113     MediaSource will open it as QIODevice::ReadOnly.
       
  1114 
       
  1115     \note Sequential devices can also be used, but MediaObject::isSeekable() will
       
  1116     return false as a result.
       
  1117 
       
  1118     \warning On Windows, we only support \l{QIODevice}s containing the
       
  1119     \c avi, \c mp3, or \c mpg formats. Use the constructor that takes
       
  1120     a file name to open files (the Qt backend does not use a QFile
       
  1121     internally).
       
  1122 
       
  1123     \sa setAutoDelete()
       
  1124 */
       
  1125 
       
  1126 /*!
       
  1127     \fn Phonon::MediaSource::MediaSource(MediaSourcePrivate &)
       
  1128     \internal
       
  1129 */
       
  1130 
       
  1131 /*!
       
  1132     \fn Phonon::MediaSource::~MediaSource()
       
  1133 
       
  1134     Destroys the MediaSource object. You should never delete a
       
  1135     MediaSource yourself, the MediaObject will handle this.
       
  1136 
       
  1137 */
       
  1138 
       
  1139 /*!
       
  1140     \fn Phonon::MediaSource::MediaSource(const MediaSource &other)
       
  1141 
       
  1142     Constructs a copy of the \a other media source.
       
  1143 
       
  1144     This constructor is fast thanks to explicit sharing.
       
  1145 */
       
  1146 
       
  1147 /*!
       
  1148     \fn MediaSource &Phonon::MediaSource::operator=(const MediaSource &other)
       
  1149 
       
  1150     Assigns the \a other media source to this media source and returns a
       
  1151     reference to it.
       
  1152 
       
  1153     This operation is fast thanks to explicit sharing.
       
  1154 */
       
  1155 
       
  1156 /*!
       
  1157     \fn bool Phonon::MediaSource::operator==(const MediaSource &other) const
       
  1158 
       
  1159     Returns true if this media source is equal to the \a other media source;
       
  1160     otherwise returns false.
       
  1161 */
       
  1162 
       
  1163 /*!
       
  1164     \fn void Phonon::MediaSource::setAutoDelete(bool enable)
       
  1165 
       
  1166     If \a enable is true, the media source will take ownership of the
       
  1167     object passed in the \l{Phonon::}{MediaSource}'s constructor
       
  1168     object that was passed in the constructor; otherwise, the
       
  1169     programmer is responsible for deletion of this object.
       
  1170 
       
  1171     This setting is false by default. If you enable it, you should
       
  1172     only access the stream or device as long as you keep the media
       
  1173     source object around. As long as you keep the media source
       
  1174     wrapping the stream or device, the object will not get deleted.
       
  1175 
       
  1176     \sa autoDelete()
       
  1177 */
       
  1178 
       
  1179 /*!
       
  1180     \fn bool Phonon::MediaSource::autoDelete() const
       
  1181 
       
  1182     Returns the setting of the auto-delete option. The default is
       
  1183     false.
       
  1184 
       
  1185     \sa setAutoDelete()
       
  1186 */
       
  1187 
       
  1188 /*!
       
  1189     \fn Type Phonon::MediaSource::type() const
       
  1190 
       
  1191     Returns the type of the MediaSource (depends on the constructor
       
  1192     that was used).
       
  1193 
       
  1194     \sa Type
       
  1195 */
       
  1196 
       
  1197 /*!
       
  1198     \fn QString Phonon::MediaSource::fileName() const
       
  1199 
       
  1200     Returns the file name of the MediaSource if type() ==
       
  1201     LocalFile; otherwise, returns QString().
       
  1202 
       
  1203     \sa type()
       
  1204 */
       
  1205 
       
  1206 /*!
       
  1207     \fn QUrl Phonon::MediaSource::url() const
       
  1208     Returns the URL of the MediaSource if type() == URL or type() == LocalFile;
       
  1209     otherwise returns QUrl().
       
  1210 
       
  1211     \sa type()
       
  1212 */
       
  1213 
       
  1214 /*!
       
  1215     \fn Phonon::DiscType Phonon::MediaSource::discType() const
       
  1216     Returns the disc type of the MediaSource if type() == Disc; otherwise
       
  1217     returns NoDisc.
       
  1218 
       
  1219     \sa type()
       
  1220 */
       
  1221 
       
  1222 /*!
       
  1223     \fn QString Phonon::MediaSource::deviceName() const
       
  1224 
       
  1225     Returns the device name of the MediaSource if type() == Disc; otherwise
       
  1226     returns QString().
       
  1227 
       
  1228     \sa type()
       
  1229 */
       
  1230 
       
  1231 /*!
       
  1232     \fn AbstractMediaStream *Phonon::MediaSource::stream() const
       
  1233     \internal
       
  1234     Returns the media stream of the MediaSource if type() == Stream; otherwise
       
  1235     returns 0.
       
  1236     QIODevices are handled as streams, too.
       
  1237 */
       
  1238 
       
  1239 /*!
       
  1240     \class Phonon::MediaSourcePrivate
       
  1241     \inmodule Phonon
       
  1242     \since 4.4
       
  1243     \internal
       
  1244 */
       
  1245 
       
  1246 /*!
       
  1247     \class Phonon::SeekSlider
       
  1248     \inmodule Phonon
       
  1249     \inheaderfile Phonon/SeekSlider
       
  1250     \since 4.4
       
  1251     \brief The SeekSlider class provides a slider for seeking to positions in media streams.
       
  1252 
       
  1253     The SeekSlider connects to a \l{Phonon::}{MediaObject}, and
       
  1254     controls the seek position in the object's media stream.
       
  1255 
       
  1256     The slider will connect to the necessary signals to keep track of
       
  1257     the sliders maximum, minimum, and current values. It will also
       
  1258     disable itself for non-seekable streams, and update the media
       
  1259     object when the current value of the slider changes.
       
  1260 
       
  1261     Here follows a typical example of SeekSlider usage:
       
  1262 
       
  1263     \snippet doc/src/snippets/seekslider.cpp 0
       
  1264 
       
  1265     \sa Phonon::VolumeSlider, Phonon::VideoWidget, {Music Player Example}, {Phonon Module}
       
  1266 
       
  1267 */
       
  1268 
       
  1269 /*!
       
  1270     \property Phonon::SeekSlider::iconVisible
       
  1271     \brief whether the icon next to the slider is visible
       
  1272 
       
  1273     By default the icon is visible if the platform provides an icon; else
       
  1274     it's hidden.
       
  1275 
       
  1276 */
       
  1277 
       
  1278 /*!
       
  1279     \property Phonon::SeekSlider::tracking
       
  1280     \brief whether slider tracking is enabled
       
  1281 
       
  1282     If tracking is enabled (the default), the media seeks
       
  1283     while the slider is being dragged. If tracking is
       
  1284     disabled, the media seeks only when the user
       
  1285     releases the slider.
       
  1286 */
       
  1287 
       
  1288 /*!
       
  1289     \property Phonon::SeekSlider::pageStep
       
  1290     \brief the page step interval
       
  1291 
       
  1292     The larger of two natural steps that a slider provides and
       
  1293     typically corresponds to the user pressing PageUp or PageDown.
       
  1294 
       
  1295     Defaults to 5 seconds.
       
  1296 */
       
  1297 
       
  1298 /*!
       
  1299     \property Phonon::SeekSlider::singleStep
       
  1300     \brief the single step interval
       
  1301 
       
  1302     The smaller of two natural steps that a slider provides and
       
  1303     typically corresponds to the user pressing an arrow key.
       
  1304 
       
  1305     Defaults to 0.5 seconds.
       
  1306 */
       
  1307 
       
  1308 /*!
       
  1309     \property Phonon::SeekSlider::orientation
       
  1310     \brief the orientation of the slider
       
  1311 
       
  1312     The orientation must be Qt::Vertical or Qt::Horizontal (the default).
       
  1313 */
       
  1314 
       
  1315 /*!
       
  1316     \property Phonon::SeekSlider::iconSize
       
  1317     \brief the icon size used for the mute button/icon.
       
  1318 
       
  1319     The default size is defined by the GUI style.
       
  1320 */
       
  1321 
       
  1322 /*!
       
  1323     \fn explicit Phonon::SeekSlider::SeekSlider(QWidget *parent = 0)
       
  1324 
       
  1325     Constructs a seek slider widget with the given \a parent.
       
  1326 */
       
  1327 
       
  1328 /*!
       
  1329     \fn explicit Phonon::SeekSlider::SeekSlider(MediaObject *media, QWidget *parent = 0)
       
  1330 
       
  1331     Constructs a seek slider widget for the specified \a media with the
       
  1332     given \a parent.
       
  1333 */
       
  1334 
       
  1335 /*!
       
  1336     \fn Phonon::SeekSlider::~SeekSlider()
       
  1337     Destroys the seek slider.
       
  1338 */
       
  1339 
       
  1340 /*!
       
  1341     \fn Phonon::MediaObject *Phonon::SeekSlider::mediaObject() const
       
  1342 
       
  1343     Return the media object this SeekSlider controls.
       
  1344 */
       
  1345 
       
  1346 /*!
       
  1347     \class Phonon::SeekSliderPrivate
       
  1348     \inmodule Phonon
       
  1349     \since 4.4
       
  1350     \internal
       
  1351 */
       
  1352 
       
  1353 /*!
       
  1354     \fn void Phonon::SeekSlider::setMediaObject(MediaObject *media)
       
  1355 
       
  1356     Sets the media object to be controlled by this slider to the \a media specified.
       
  1357 */
       
  1358 
       
  1359 /*!
       
  1360     \class Phonon::VideoPlayer
       
  1361     \inmodule Phonon
       
  1362     \inheaderfile Phonon/VideoPlayer
       
  1363     \since 4.4
       
  1364     \brief The VideoPlayer widget is used to perform playback of video.
       
  1365 
       
  1366     With VideoPlayer you can get results quickly and easily. You can
       
  1367     do the standard playback tasks like play(), pause(), and stop(),
       
  1368     but also set a playback volume and seek - if the media and backend
       
  1369     supports seeking.
       
  1370 
       
  1371     VideoPlayer is provided for convenience and removes the need to
       
  1372     create a media graph with a \l{Phonon::}{MediaObject},
       
  1373     \l{Phonon::}{AudioOutput}, and \l{Phonon::}{VideoWidget}. If
       
  1374     you need functionality not supported by the player, you can build
       
  1375     this \l{Building Graphs}{graph} yourself.
       
  1376 
       
  1377     Keep in mind that when the VideoPlayer instance is deleted the
       
  1378     playback will stop.
       
  1379 
       
  1380     Note also that most of the functions in this class are
       
  1381     asynchronous. For instance, a media source may not play
       
  1382     immediately after you call the play() function.
       
  1383 
       
  1384     A play and forget code example:
       
  1385     \snippet doc/src/snippets/code/doc_src_phonon-api.qdoc 4
       
  1386 
       
  1387     \sa {Phonon Module}, MediaObject
       
  1388 */
       
  1389 
       
  1390 /*!
       
  1391     \fn Phonon::VideoPlayer::VideoPlayer(QWidget *parent = 0)
       
  1392     
       
  1393     Constructs a new video widget with a \a parent using
       
  1394     Phonon::VideoCategory as its category.
       
  1395 
       
  1396     \param parent The QObject parent.
       
  1397 */
       
  1398 
       
  1399 /*!
       
  1400     \fn Phonon::VideoPlayer::VideoPlayer(Phonon::Category category, QWidget *parent = 0)
       
  1401 
       
  1402     Constructs a new VideoPlayer instance with the specified \a
       
  1403     parent.
       
  1404 
       
  1405     \a category is the category used for the audio output device.
       
  1406 */
       
  1407 
       
  1408 /*!
       
  1409     \fn Phonon::VideoPlayer::~VideoPlayer()
       
  1410 
       
  1411     On destruction the playback is stopped, also the audio output is
       
  1412     removed so that the desktop mixer will not show the application
       
  1413     anymore. If you need a persistent audio output don't use
       
  1414     VideoPlayer but MediaObject, VideoPath and VideoOutput.
       
  1415 */
       
  1416 
       
  1417 /*!
       
  1418     \fn qint64 Phonon::VideoPlayer::totalTime() const
       
  1419 
       
  1420     Get the total time (in milliseconds) of the file currently being played.
       
  1421 */
       
  1422 
       
  1423 /*!
       
  1424     \fn qint64 Phonon::VideoPlayer::currentTime() const
       
  1425 
       
  1426     Get the current time (in milliseconds) of the file currently being played.
       
  1427 */
       
  1428 
       
  1429 /*!
       
  1430     \fn float Phonon::VideoPlayer::volume() const
       
  1431 
       
  1432     This is the current volume of the output as voltage factor.
       
  1433 
       
  1434     1.0 means 100%, 0.5 means 50% voltage/25% power, 0.0 means 0%
       
  1435 */
       
  1436 
       
  1437 /*!
       
  1438     \fn bool Phonon::VideoPlayer::isPlaying() const
       
  1439 
       
  1440     Returns true if it is currently playing; otherwise returns false if it
       
  1441     is currently stopped or paused
       
  1442 */
       
  1443 
       
  1444 /*!
       
  1445     \fn bool Phonon::VideoPlayer::isPaused() const
       
  1446 
       
  1447     Returns true if it is currently paused; otherwise returns false if it
       
  1448     is currently playing or stopped.
       
  1449 */
       
  1450 
       
  1451 /*!
       
  1452     \fn void Phonon::VideoPlayer::load(const Phonon::MediaSource &source)
       
  1453 
       
  1454     Starts pre-loading the media data from the specified \a source and
       
  1455     filling audio buffers in the backend.
       
  1456 
       
  1457     When there's already a media playing (or paused) it will be stopped
       
  1458     (the finished signal will not be emitted).
       
  1459 
       
  1460     \sa MediaObject::setCurrentSource()
       
  1461 */
       
  1462 
       
  1463 /*!
       
  1464     \fn void Phonon::VideoPlayer::play(const Phonon::MediaSource &source)
       
  1465 
       
  1466     Plays the media from the given \a source. Starts playback as fast as
       
  1467     possible.
       
  1468     This can take a considerable time depending on the URL and the
       
  1469     backend.
       
  1470 
       
  1471     If you need low latency between calling play() and the sound actually
       
  1472     starting to play on your output device you need to use MediaObject
       
  1473     and be able to set the URL before calling play(). Note that
       
  1474     \snippet doc/src/snippets/code/doc_src_phonon-api.qdoc 5
       
  1475     doesn't make a difference: the application should be idle between the
       
  1476     load and play calls so that the backend can start preloading the
       
  1477     media and fill audio buffers.
       
  1478 */
       
  1479 
       
  1480 /*!
       
  1481     \fn void Phonon::VideoPlayer::play()
       
  1482 
       
  1483     Continues playback of paused media. Restarts playback of a stopped
       
  1484     (or newly loaded) media.
       
  1485 
       
  1486     \sa MediaObject::play(), play()
       
  1487 */
       
  1488 
       
  1489 /*!
       
  1490     \fn void Phonon::VideoPlayer::pause()
       
  1491 
       
  1492     Pauses the playback.
       
  1493 
       
  1494     \sa MediaObject::pause()
       
  1495 */
       
  1496 
       
  1497 /*!
       
  1498     \fn void Phonon::VideoPlayer::stop()
       
  1499 
       
  1500     Stops the playback.
       
  1501 
       
  1502     \sa MediaObject::stop()
       
  1503 */
       
  1504 
       
  1505 /*!
       
  1506     \fn void Phonon::VideoPlayer::seek(qint64 ms)
       
  1507 
       
  1508     Seeks to the requested time. Note that the backend is free to
       
  1509     ignore the seek request if the media source isn't seekable; you
       
  1510     can check this by asking the media object of the VideoPlayer.
       
  1511 
       
  1512     \snippet doc/src/snippets/videomedia.cpp 0
       
  1513 
       
  1514     The \a ms parameter is the time in milliseconds from the start of
       
  1515     the media.
       
  1516 
       
  1517     The call is asynchronous, so currentTime() can still be the old
       
  1518     value right after this method was called. If all you need is a
       
  1519     slider that shows the current position and allows the user to
       
  1520     seek, use the class SeekSlider.
       
  1521 
       
  1522     \sa MediaObject::seek(), MediaObject::isSeekable(), mediaObject()
       
  1523 */
       
  1524 
       
  1525 /*!
       
  1526     \fn void Phonon::VideoPlayer::setVolume(float volume)
       
  1527 
       
  1528     Sets the \a volume of the output as voltage factor.
       
  1529 
       
  1530     1.0 means 100%, 0.5 means 50% voltage/25% power, 0.0 means 0%
       
  1531 */
       
  1532 
       
  1533 /*!
       
  1534     \fn MediaObject *Phonon::VideoPlayer::mediaObject() const
       
  1535 
       
  1536     Returns the media object being used by the player.
       
  1537 
       
  1538     The media object can be accessed directly instead of using the
       
  1539     \l{VideoPlayer}s convenience functions, e.g., play() and stop().
       
  1540     It is also possible to give the object to other Phonon widgets,
       
  1541     e.g., a \l{Phonon::}{SeekSlider} or a \l{Phonon::}{VolumeSlider}.
       
  1542 
       
  1543     \sa Phonon::SeekSlider, Phonon::MediaObject
       
  1544 */
       
  1545 
       
  1546 /*!
       
  1547     \fn AudioOutput *Phonon::VideoPlayer::audioOutput() const
       
  1548 
       
  1549     Returns the audio output object being used by the player.
       
  1550 
       
  1551 */
       
  1552 
       
  1553 /*!
       
  1554     \fn VideoWidget *Phonon::VideoPlayer::videoWidget() const
       
  1555 
       
  1556     Returns the video widget being used by the player.
       
  1557 */
       
  1558 
       
  1559 /*!
       
  1560     \fn void Phonon::VideoPlayer::finished()
       
  1561 
       
  1562     This signal is emitted when the playback finished.
       
  1563 
       
  1564 */
       
  1565 
       
  1566 /*!
       
  1567     \class Phonon::VideoWidgetPrivate
       
  1568     \inmodule Phonon
       
  1569     \since 4.4
       
  1570     \internal
       
  1571 */
       
  1572 
       
  1573 /*!
       
  1574     \class Phonon::MediaObject
       
  1575     \inmodule Phonon
       
  1576     \inheaderfile Phonon/MediaObject
       
  1577     \since 4.4
       
  1578     \brief The MediaObject class provides an interface for media playback.
       
  1579 
       
  1580 
       
  1581     The media object manages a \l{Phonon::}{MediaSource}, which
       
  1582     supplies the media object with multimedia content, e.g., from a
       
  1583     file. A playback in Phonon is always started by calling the
       
  1584     \l{Phonon::MediaObject::}{play()} function.
       
  1585 
       
  1586     The state of play (play, pause, stop, seek) is controlled by the
       
  1587     media object, and you can also query the current
       
  1588     \l{Phonon::MediaObject::}{state()}. It keeps track of the playback
       
  1589     position in the media stream, and emits the
       
  1590     \l{Phonon::MediaObject::}{tick()} signal when the current position
       
  1591     in the stream changes.
       
  1592 
       
  1593     Notice that most functions of this class are asynchronous, so you
       
  1594     cannot rely on that a state is entered after a function call
       
  1595     before you receive the \l{Phonon::MediaObject::}{stateChanged()}
       
  1596     signal. The description of the \l{Phonon::}{State} enum gives a
       
  1597     description of the different states.
       
  1598 
       
  1599     Before play() is called, the media object should be connected to
       
  1600     \l{Sinks}{output nodes}, which outputs the media to the
       
  1601     underlying hardware. The output nodes required are dependent on
       
  1602     the contents of the multimedia file that is played back. Phonon
       
  1603     has currently two output nodes: the \l{Phonon::}{AudioOutput} for
       
  1604     audio content and \l{Phonon::}{VideoWidget} for video content.  If
       
  1605     a \l{Phonon::}{MediaSource} contains both audio and video, both
       
  1606     nodes need to be connected to the media object.
       
  1607 
       
  1608     \snippet snippets/phonon.cpp 4
       
  1609     \snippet snippets/phonon.cpp 5 
       
  1610 
       
  1611     The media object can queue sources for playback. When it has
       
  1612     finished to play one source, it will start playing the next in the
       
  1613     queue; the new source is then removed from the queue. The
       
  1614     queue can be altered at any time. 
       
  1615 
       
  1616     \snippet doc/src/snippets/code/doc_src_phonon-api.qdoc 7
       
  1617 
       
  1618     You can also make use of the
       
  1619     \l{Phonon::MediaObject::}{aboutToFinish()} signal, which is
       
  1620     guaranteed to be emitted in time for altering the queue.
       
  1621 
       
  1622     \snippet doc/src/snippets/code/doc_src_phonon-api.qdoc 8
       
  1623 
       
  1624     When playback is finishing, i.e., when a media source has been
       
  1625     played to the end and the queue is empty, several signals are
       
  1626     emitted. First, the media object will emit aboutToFinish() -
       
  1627     shortly before the playback has finished - and then finished().
       
  1628     The stateChanged() signal will also be emitted with
       
  1629     \l{Phonon::}{PausedState}, which is the state the media object
       
  1630     takes when the playback is finished. If you wish to enter another
       
  1631     state, you can connect a slot to finished() and set a new state
       
  1632     there.
       
  1633 
       
  1634     The media object resolves the meta information, such as title,
       
  1635     artist, and album. The meta data is not resolved immediately after
       
  1636     a new source is provided, but will be resolved before the object
       
  1637     leaves the \l{Phonon::}{LoadingState}. The data is queried by
       
  1638     string keys - which should follow the Ogg Vorbis specification
       
  1639     \l http://xiph.org/vorbis/doc/v-comment.html - or by using the
       
  1640     \l{Phonon::}{MetaData} enum. The data available will depend on the
       
  1641     type and content of the individual media files.  metaDataChanged()
       
  1642     will be emitted when the media object has resolved new meta data.
       
  1643 
       
  1644     Errors encountered during playback and loading of media sources
       
  1645     are reported by emitting a state changed signal with
       
  1646     \l{Phonon::}{ErrorState}. The severity of the error can be queried
       
  1647     by the \l{Phonon::}{ErrorType}. With a \l{Phonon::}{NormalError},
       
  1648     it might be possible to continue the playback, for instance, if
       
  1649     only audio playback fails for a media source which also has video.
       
  1650     A \l{Phonon::}{FatalError} indicates that Phonon cannot continue
       
  1651     playback of the current source, but it is possible to try with a
       
  1652     different one. A user readable error message is given by
       
  1653     errorString().
       
  1654 
       
  1655     \sa Phonon::MediaSource, Phonon::AudioOutput, VideoWidget,
       
  1656     {Music Player Example}, {Phonon Overview}, Phonon::VideoPlayer,
       
  1657     Phonon::createPlayer(), {Phonon Module}
       
  1658 
       
  1659 */
       
  1660 
       
  1661 /*!
       
  1662     \property Phonon::MediaObject::transitionTime
       
  1663     \brief Defines the time between playback of two media sources
       
  1664     in the media queue.
       
  1665 
       
  1666     A positive transition time defines a gap of silence between queued
       
  1667     media sources.
       
  1668 
       
  1669     A transition time of 0 ms requests gapless playback (i.e., the
       
  1670     next source in the media queue starts immediately after the
       
  1671     playback of the current source finishes).
       
  1672 
       
  1673     A negative transition time defines a crossfade between the queued
       
  1674     media sources.
       
  1675 
       
  1676     Defaults to 0 (gapless playback).
       
  1677 
       
  1678     \warning This feature might not work reliably with every
       
  1679              backend.
       
  1680 */
       
  1681 
       
  1682 /*!
       
  1683     \property Phonon::MediaObject::prefinishMark
       
  1684     \brief the time when the prefinishMarkReached signal is emitted before playback ends.
       
  1685 
       
  1686     This property specifies the time in milliseconds the
       
  1687     prefinishMarkReached() signal is emitted before the playback
       
  1688     finishes. A value of \c 0 disables the signal. The signal is only
       
  1689     emitted for the last source in the \l{queue()}{media queue}.
       
  1690 
       
  1691     Defaults to \c 0 (disabled).
       
  1692 
       
  1693     \warning For some media data the total time cannot be determined
       
  1694     accurately, therefore the accuracy of the prefinishMarkReached signal
       
  1695     can be bad sometimes. Still, it is better to use this method than to
       
  1696     look at totalTime() and currentTime() to emulate the behavior
       
  1697     because the backend might have more information available than your
       
  1698     application does through totalTime() and currentTime().
       
  1699 
       
  1700     \sa prefinishMarkReached()
       
  1701 */
       
  1702 
       
  1703 /*!
       
  1704     \property Phonon::MediaObject::tickInterval
       
  1705     \brief The time interval in milliseconds between two ticks.
       
  1706 
       
  1707     The tick() signal is emitted continuously during playback.
       
  1708     The tick interval is the time that elapses between the emission of two tick signals.
       
  1709     If you set the interval to \c 0 the tick signal gets disabled.
       
  1710 
       
  1711     The tick() signal can, for instance, be used to update widgets
       
  1712     that show the current position in the playback of a media source.
       
  1713 
       
  1714     Defaults to \c 0 (disabled).
       
  1715 
       
  1716     \warning The back-end is free to choose a different tick interval close
       
  1717     to what you asked for. This means that the following code \c may fail:
       
  1718     \snippet doc/src/snippets/code/doc_src_phonon-api.qdoc 9
       
  1719     On the other hand the following is guaranteed:
       
  1720     \snippet doc/src/snippets/code/doc_src_phonon-api.qdoc 10
       
  1721 
       
  1722     \sa tick()
       
  1723 */
       
  1724 
       
  1725 /*!
       
  1726     \fn Phonon::MediaObject::~MediaObject()
       
  1727 
       
  1728     Destroys the MediaObject.
       
  1729 */
       
  1730 
       
  1731 /*!
       
  1732     \fn State Phonon::MediaObject::state() const
       
  1733 
       
  1734     Returns the current Phonon::State of the object.
       
  1735 
       
  1736     \sa Phonon::State, stateChanged()
       
  1737 */
       
  1738 
       
  1739 /*!
       
  1740     \fn bool Phonon::MediaObject::hasVideo() const
       
  1741 
       
  1742     Check whether the current media source includes a video stream.
       
  1743 
       
  1744     \warning This information is not resolved immediately after a
       
  1745     media object gets a new source. Listen to the hasVideoChanged()
       
  1746     signal instead.
       
  1747 
       
  1748     \snippet doc/src/snippets/code/doc_src_phonon-api.qdoc 11
       
  1749 
       
  1750     Returns \c true if the media contains video data; otherwise,
       
  1751     returns  \c false.
       
  1752 
       
  1753     \sa hasVideoChanged()
       
  1754 */
       
  1755 
       
  1756 /*!
       
  1757     \fn bool Phonon::MediaObject::isSeekable() const
       
  1758 
       
  1759     Check whether it is possible to seek, i.e., change the
       
  1760     playback position in the media stream.
       
  1761 
       
  1762     \warning This information is not solved immediately after the
       
  1763     media object gets a new media source. The hasVideoChanged() signal
       
  1764     is emitted after this information is available.
       
  1765 
       
  1766     \snippet doc/src/snippets/code/doc_src_phonon-api.qdoc 12
       
  1767 
       
  1768     Returns \c true if the current media may be seeked; otherwise,
       
  1769     returns \c false.
       
  1770 
       
  1771     \sa seekableChanged()
       
  1772 */
       
  1773 
       
  1774 /*!
       
  1775     \fn QStringList Phonon::MediaObject::metaData(const QString &key) const
       
  1776 
       
  1777     Returns the strings associated with the given \a key.
       
  1778 
       
  1779     Backends should use the keys specified in the Ogg Vorbis
       
  1780     documentation: \l http://xiph.org/vorbis/doc/v-comment.html
       
  1781 
       
  1782     Therefore the following should work with every backend:
       
  1783 
       
  1784     Note that meta data is not resolved before the \c
       
  1785     metaDataChanged() signal is emitted.
       
  1786 
       
  1787     A typical usage looks like this:
       
  1788 
       
  1789     \snippet doc/src/snippets/code/doc_src_phonon-api.qdoc 13
       
  1790 */
       
  1791 
       
  1792 /*!
       
  1793     \fn QStringList Phonon::MediaObject::metaData(Phonon::MetaData key) const
       
  1794 
       
  1795     Returns the strings associated with the given \a key.
       
  1796 
       
  1797     Same as above except that the keys are defined in the
       
  1798     Phonon::MetaData enum.
       
  1799 
       
  1800     \sa metaDataChanged()
       
  1801 */
       
  1802 
       
  1803 /*!
       
  1804     \fn QMultiMap<QString, QString> Phonon::MediaObject::metaData() const
       
  1805 
       
  1806     Returns all meta data in a multi map. 
       
  1807 
       
  1808     \sa metaDataChanged()
       
  1809 */
       
  1810 
       
  1811 /*!
       
  1812     \fn QString Phonon::MediaObject::errorString() const
       
  1813 
       
  1814     Returns a human-readable description of the last error that occurred.
       
  1815     The strings given may vary between backends.
       
  1816 
       
  1817     The error description can be used to give a message to the user -
       
  1818     and the developer - when the stateChanged() signal is emitted with
       
  1819     \l{Phonon::}{ErrorState}.
       
  1820 
       
  1821     \section1 Qt Backends
       
  1822 
       
  1823     On Windows, Qt fetches its error messages from the DirectShow
       
  1824     backend.  This usually includes an error number, which can be
       
  1825     looked up in the DirectShow documentation:
       
  1826     \l{http://msdn.microsoft.com/archive/default.asp?url=/archive/en-us/dx81_c/directx_cpp/htm/errorandsuccesscodes.asp}.
       
  1827 
       
  1828     On Linux and Mac, the error strings are not fetched directly from
       
  1829     the backend, but are created in the backend.
       
  1830 
       
  1831     \sa Phonon::ErrorState, stateChanged()
       
  1832 */
       
  1833 
       
  1834 /*!
       
  1835     \fn ErrorType Phonon::MediaObject::errorType() const
       
  1836 
       
  1837     Tells your program what to do about the last error that occurred.
       
  1838     Use this function after receiving a stateChanged() signal with
       
  1839     \l{Phonon::}{ErrorState}.
       
  1840 
       
  1841     \sa Phonon::ErrorType, Phonon::ErrorState, stateChanged()
       
  1842 */
       
  1843 
       
  1844 /*!
       
  1845     \fn MediaSource Phonon::MediaObject::currentSource() const
       
  1846 
       
  1847     Returns the current media source, i.e., the media source that is
       
  1848     being played back. The current source is either set with
       
  1849     setCurrentSource() or taken from the media queue() when a media
       
  1850     source has finished playing.
       
  1851 
       
  1852     \sa setCurrentSource()
       
  1853 */
       
  1854 
       
  1855 /*!
       
  1856     \fn void Phonon::MediaObject::setCurrentSource(const MediaSource &source)
       
  1857 
       
  1858     Set the media source the MediaObject should use.
       
  1859 
       
  1860     After the media object receives a new source, it will enter the
       
  1861     \l{Phonon::}{LoadingState}. When it is ready to play, it
       
  1862     enters the \l{Phonon::}{StoppedState} unless another state
       
  1863     has been requested, e.g., by calling play().
       
  1864 
       
  1865     \a source is the MediaSource object to the media data. You can
       
  1866     just as well use a QUrl or QString (for a local file) here.
       
  1867 
       
  1868     We show an example:
       
  1869 
       
  1870     \snippet doc/src/snippets/code/doc_src_phonon-api.qdoc 14
       
  1871 
       
  1872     \sa currentSource(), MediaSource
       
  1873 */
       
  1874 
       
  1875 /*!
       
  1876     \fn QList<MediaSource> Phonon::MediaObject::queue() const
       
  1877 
       
  1878     Returns the queued media sources.
       
  1879 
       
  1880     This does list does not include the current source,
       
  1881     returned by currentSource().
       
  1882 
       
  1883     \sa enqueue()
       
  1884 */
       
  1885 
       
  1886 /*!
       
  1887     \fn void Phonon::MediaObject::setQueue(const QList<MediaSource> &sources)
       
  1888 
       
  1889     Set the \a sources to play when the current source has finished.
       
  1890 
       
  1891     This function will overwrite the current queue.
       
  1892 
       
  1893     \sa clearQueue(), enqueue()
       
  1894 */
       
  1895 
       
  1896 /*!
       
  1897     \fn void Phonon::MediaObject::setQueue(const QList<QUrl> &urls)
       
  1898 
       
  1899     Set the \a urls to play when the current media has finished.
       
  1900 
       
  1901     This function overwrites the current queue.
       
  1902 
       
  1903     \sa clearQueue(), enqueue()
       
  1904 */
       
  1905 
       
  1906 /*!
       
  1907     \fn void Phonon::MediaObject::enqueue(const MediaSource &source)
       
  1908 
       
  1909     Appends \a source to the queue.
       
  1910 
       
  1911     You can use this function to provide the next source after the
       
  1912     aboutToFinish() signal has been emitted.
       
  1913 
       
  1914     \sa aboutToFinish(), setQueue(), clearQueue()
       
  1915 */
       
  1916 
       
  1917 /*!
       
  1918     \fn void Phonon::MediaObject::enqueue(const QList<MediaSource> &sources)
       
  1919 
       
  1920     Appends multiple \a sources to the queue.
       
  1921 
       
  1922     \sa setQueue(), clearQueue()
       
  1923 */
       
  1924 
       
  1925 /*!
       
  1926     \fn void Phonon::MediaObject::enqueue(const QList<QUrl> &urls)
       
  1927 
       
  1928     Appends the URLs in \a urls to the media source queue. 
       
  1929 
       
  1930     The function will create \l{MediaSource}s from the \l{QUrl}s, and
       
  1931     append these to the queue.
       
  1932 
       
  1933     \sa setQueue(), clearQueue()
       
  1934 */
       
  1935 
       
  1936 /*!
       
  1937     \fn void Phonon::MediaObject::clearQueue()
       
  1938 
       
  1939     Clears the queue of media sources.
       
  1940 
       
  1941     \sa queue(), enqueue()
       
  1942 */
       
  1943 
       
  1944 /*!
       
  1945     \fn qint64 Phonon::MediaObject::currentTime() const
       
  1946 
       
  1947     Returns the current time (in milliseconds), i.e., position in the
       
  1948     media stream, of the file currently being played.
       
  1949 
       
  1950     \sa tick(), totalTime(), remainingTime()
       
  1951 */
       
  1952 
       
  1953 /*!
       
  1954     \fn qint64 Phonon::MediaObject::totalTime() const
       
  1955 
       
  1956     Get the total time (in milliseconds) of the file currently being played.
       
  1957 
       
  1958     Returns the total time in milliseconds.
       
  1959 
       
  1960     \warning The total time is not defined before the media object
       
  1961              enters the \l{Phonon::}{LoadingState}.
       
  1962 
       
  1963     \sa totalTimeChanged()
       
  1964 */
       
  1965 
       
  1966 /*!
       
  1967     \fn qint64 Phonon::MediaObject::remainingTime() const
       
  1968 
       
  1969     Get the remaining time (in milliseconds) of the file currently being played.
       
  1970 
       
  1971     Returns the remaining time in milliseconds.
       
  1972 
       
  1973     \sa totalTime(), currentTime(), totalTimeChanged()
       
  1974 */
       
  1975 
       
  1976 /*!
       
  1977     \fn void Phonon::MediaObject::play()
       
  1978 
       
  1979     Requests playback of the media data to start.
       
  1980 
       
  1981     Playback starts when the stateChanged() signal is emitted with
       
  1982     \l{Phonon::}{PlayingState}.
       
  1983 
       
  1984     If the media object is already in a
       
  1985     \l{Phonon::}{PlayingState}, nothing happens.
       
  1986 
       
  1987     \sa stop(), pause(), stateChanged()
       
  1988 */
       
  1989 
       
  1990 /*!
       
  1991     \fn void Phonon::MediaObject::pause()
       
  1992 
       
  1993     Requests playback to pause, and the media object to enter the
       
  1994     \l{Phonon::}{PausedState}. If it was paused already, nothing
       
  1995     changes.
       
  1996 
       
  1997     This function is asynchronous and the media might not be paused
       
  1998     immediately.
       
  1999 
       
  2000     \sa play(), stop(), stateChanged()
       
  2001 */
       
  2002 
       
  2003 /*!
       
  2004     \fn void Phonon::MediaObject::stop()
       
  2005 
       
  2006     Requests playback to stop, and the media object to enter the
       
  2007     \l{Phonon::}{StoppedState}. If it was stopped before
       
  2008     nothing changes.
       
  2009 
       
  2010     This function is asynchronous and the media might not be
       
  2011     stopped immediately.
       
  2012 
       
  2013     \sa play(), pause(), stateChanged()
       
  2014 */
       
  2015 
       
  2016 /*!
       
  2017     \fn void Phonon::MediaObject::seek(qint64 time)
       
  2018 
       
  2019     Requests a seek to the \a time indicated, specified in milliseconds.
       
  2020 
       
  2021     You can only seek if state() is PlayingState, BufferingState or PausedState.
       
  2022 
       
  2023     The call is asynchronous, so currentTime can still be the old
       
  2024     value right after this method was called. If all you need is a
       
  2025     slider that shows the current position and allows the user to
       
  2026     seek, use the class SeekSlider.
       
  2027 
       
  2028     If the current source of the media object is not seekable, calls
       
  2029     to this functions do nothing.
       
  2030 
       
  2031     \sa SeekSlider, tick()
       
  2032 */
       
  2033 
       
  2034 /*!
       
  2035     \fn void Phonon::MediaObject::clear()
       
  2036 
       
  2037     Stops and removes all playing and enqueued media sources.
       
  2038 
       
  2039     \sa setCurrentSource()
       
  2040 */
       
  2041 
       
  2042 
       
  2043 /*!
       
  2044     \fn void Phonon::MediaObject::stateChanged(Phonon::State newstate, Phonon::State oldstate)
       
  2045 
       
  2046     This signal is emitted when the state of the MediaObject has changed.
       
  2047     The \a oldstate and \a newstate parameters indicate the previous
       
  2048     state and current state of the media object.
       
  2049 
       
  2050     If you are only interested in the new state of the media object, you can
       
  2051     connect this signal to a slot that accepts only one State argument.
       
  2052 */
       
  2053 
       
  2054 /*!
       
  2055     \fn void Phonon::MediaObject::tick(qint64 time)
       
  2056 
       
  2057     This signal is emitted in intervals defined by the
       
  2058     \l{tickInterval} property. The current position of the media
       
  2059     object in the stream is given by the \a time parameter. The \a
       
  2060     time is specified in milliseconds.
       
  2061 
       
  2062     \sa tickInterval
       
  2063 */
       
  2064 
       
  2065 /*!
       
  2066     \fn void Phonon::MediaObject::metaDataChanged()
       
  2067 
       
  2068     This signal is emitted when the media object has resolved new meta
       
  2069     data. This will happen before the media object leaves the
       
  2070     \l{Phonon::}{LoadingState} after a new source has been set.
       
  2071 
       
  2072     This signal is not emitted when the media object removes the
       
  2073     current data, i.e., when a new source is set or an error has
       
  2074     occurred. If you need to know this, you can listen for the
       
  2075     \l{Phonon::}{ErrorState}, and connect to the
       
  2076     \l{Phonon::MediaObject::}{currentSourceChanged()} signal.
       
  2077 
       
  2078     You can get the new meta data with the metaData methods.
       
  2079     
       
  2080     \sa metaData(), currentSourceChanged(), stateChanged(), Phonon::State
       
  2081 */
       
  2082 
       
  2083 /*!
       
  2084     \fn void Phonon::MediaObject::seekableChanged(bool isSeekable)
       
  2085 
       
  2086     This signal is emitted when the media object's ability to seek in
       
  2087     the media stream changes. \a isSeekable is true if it is possible
       
  2088     to seek(); otherwise, it is false.
       
  2089 
       
  2090     Change in the ability to seek in the stream usually happens when
       
  2091     the current source changes or when an error occurs.
       
  2092 
       
  2093     \omit Emitted whenever the return value of isSeekable()
       
  2094     changes. \endomit
       
  2095 
       
  2096     Normally you'll check isSeekable() after setting a new media
       
  2097     source, and then let this signal tell you when seeking is
       
  2098     possible. That way you don't have to poll isSeekable().
       
  2099 */
       
  2100 
       
  2101 /*!
       
  2102     \fn void Phonon::MediaObject::hasVideoChanged(bool hasVideo)
       
  2103 
       
  2104     Emitted whenever the return value of hasVideo() changes, i.e.,
       
  2105     the media source being played back contains video.
       
  2106 
       
  2107     Normally you'll check hasVideo() first and then let this signal
       
  2108     tell you whether video is available now or not. That way you
       
  2109     don't have to poll hasVideo().
       
  2110 
       
  2111     \a hasVideo is true  when the stream contains video and adding a
       
  2112     VideoWidget will show a video, and false if there is no video data
       
  2113     in the stream and adding a VideoWidget will show an empty (black)
       
  2114     VideoWidget.
       
  2115 */
       
  2116 
       
  2117 /*!
       
  2118     \fn void Phonon::MediaObject::bufferStatus(int percentFilled)
       
  2119 
       
  2120     Provides information about the status of the buffer.
       
  2121 
       
  2122     When a MediaObject is in the \l{Phonon::}{BufferingState}, it will
       
  2123     send this signal regularly. \a percentFilled is a number between 0
       
  2124     and 100 telling you how much the buffer is filled.
       
  2125 
       
  2126     You can use this signal to show a progress bar to the user when
       
  2127     in BufferingState:
       
  2128 
       
  2129     \snippet doc/src/snippets/code/doc_src_phonon-api.qdoc 15
       
  2130 
       
  2131     Note that the \l{Phonon::}{BufferingState} is commonly used when
       
  2132     waiting for data over a network connection, but this might not be
       
  2133     true for all backends.
       
  2134 */
       
  2135 
       
  2136 /*!
       
  2137     \fn void Phonon::MediaObject::finished()
       
  2138 
       
  2139     Emitted when the object has finished playback.  It is not emitted
       
  2140     if you call stop(), pause() or load(). It is emitted only when the
       
  2141     current media source has finished playing and the media queue() is
       
  2142     empty, or when a \l{Phonon::FatalError}{fatal error} occurs.
       
  2143 
       
  2144     \warning This signal is not emitted when the current source has
       
  2145     finished and there's another source in the queue. It is only
       
  2146     emitted when the queue is empty.
       
  2147 
       
  2148     \sa currentSourceChanged(), aboutToFinish(), prefinishMarkReached()
       
  2149 */
       
  2150 
       
  2151 /*!
       
  2152     \fn void Phonon::MediaObject::currentSourceChanged(const Phonon::MediaSource &newSource)
       
  2153 
       
  2154     Emitted when the MediaObject fetches a new MediaSource from the
       
  2155     queue() and before it enters the \l{Phonon::}{LoadingState} for
       
  2156     the new source. The media object will take a new source from the
       
  2157     queue() when it has finished the playback of the
       
  2158     \l{currentSource()}{current source}.
       
  2159 
       
  2160     \a newSource is the source that starts to play at the time the
       
  2161     signal is emitted.
       
  2162 */
       
  2163 
       
  2164 /*!
       
  2165     \fn void Phonon::MediaObject::aboutToFinish()
       
  2166 
       
  2167     Emitted before the playback of the whole queue ends. When this
       
  2168     signal is emitted you still have time to enqueue() a new
       
  2169     MediaSource, so that playback continues.
       
  2170 
       
  2171     If you need a signal to be emitted at a specific time before
       
  2172     playback is finished, you should use the prefinishMarkReached()
       
  2173     signal instead.
       
  2174 
       
  2175     \sa enqueue(), prefinishMark, prefinishMarkReached()
       
  2176 */
       
  2177 
       
  2178 /*!
       
  2179     \fn void Phonon::MediaObject::prefinishMarkReached(qint32 msecToEnd)
       
  2180 
       
  2181     Emitted when there are only \a msecToEnd milliseconds left
       
  2182     of playback.
       
  2183 
       
  2184     \warning This signal is not emitted when there is another source
       
  2185     in the queue.  It is only emitted when the queue is empty.
       
  2186 
       
  2187     \sa setPrefinishMark(), prefinishMark(), aboutToFinish(), finished()
       
  2188 */
       
  2189 
       
  2190 /*!
       
  2191     \fn void Phonon::MediaObject::totalTimeChanged(qint64 newTotalTime)
       
  2192 
       
  2193     This signal is emitted as soon as the total time of the media file is
       
  2194     known or has changed. For most non-local media data the total
       
  2195     time of the media can only be known after some time. At that time the
       
  2196     totalTime function can not return useful information. You have
       
  2197     to wait for this signal to know the real total time.
       
  2198 
       
  2199     \a newTotalTime is the length of the media file in milliseconds.
       
  2200 
       
  2201     \sa totalTime()
       
  2202 */
       
  2203 
       
  2204 /*!
       
  2205     \fn MediaObject *Phonon::createPlayer(Phonon::Category category, const MediaSource &source = MediaSource())
       
  2206 
       
  2207     Convenience function to create a MediaObject and AudioOutput
       
  2208     connected by a path. The \l{Phonon::}{MediaObject} return will
       
  2209     have \a source set as its current source and the specified \a
       
  2210     category.
       
  2211 
       
  2212 */
       
  2213 
       
  2214 /*!
       
  2215     \class Phonon::MediaObjectPrivate
       
  2216     \inmodule Phonon
       
  2217     \since 4.4
       
  2218     \internal
       
  2219 */
       
  2220 
       
  2221 /*!
       
  2222     \namespace Phonon::BackendCapabilities
       
  2223     \inmodule Phonon
       
  2224     \since 4.4
       
  2225     \brief The BackendCapabilities namespace contains functions to describe the capabilities of the multimedia backend.
       
  2226 
       
  2227 */
       
  2228 
       
  2229 /*!
       
  2230     \class Phonon::BackendCapabilitiesPrivate
       
  2231     \inmodule Phonon
       
  2232     \since 4.4
       
  2233     \internal
       
  2234 */
       
  2235 
       
  2236 /*!
       
  2237     \class Phonon::BackendCapabilities::Notifier
       
  2238     \since 4.4
       
  2239     \inmodule Phonon
       
  2240     \inheaderfile Phonon/BackendCapabilities
       
  2241 
       
  2242     Notifications about backend capabilities.
       
  2243 */
       
  2244 
       
  2245 /*!
       
  2246     \fn void Phonon::BackendCapabilities::Notifier::capabilitiesChanged()
       
  2247 
       
  2248     This signal is emitted if the capabilities have changed. This can
       
  2249     happen if the user has requested a backend change.
       
  2250 */
       
  2251 
       
  2252 /*!
       
  2253     \fn void Phonon::BackendCapabilities::Notifier::availableAudioOutputDevicesChanged()
       
  2254 
       
  2255     This signal is emitted when audio output devices were plugged or
       
  2256     unplugged.
       
  2257 
       
  2258     Check BackendCapabilities::availableAudioOutputDevices to get the
       
  2259     current list of available devices.
       
  2260 */
       
  2261 
       
  2262 /*!
       
  2263     \fn Notifier *Phonon::BackendCapabilities::notifier()
       
  2264 
       
  2265     Use this function to get a QObject pointer to connect to the capabilitiesChanged signal.
       
  2266 
       
  2267     \return a pointer to a QObject.
       
  2268 
       
  2269     The capabilitiesChanged signal is emitted if the capabilities have changed. This can
       
  2270     happen if the user has requested a backend change.
       
  2271 
       
  2272     To connect to this signal do the following:
       
  2273     \snippet doc/src/snippets/code/doc_src_phonon-api.qdoc 16
       
  2274 
       
  2275     \sa Notifier::capabilitiesChanged()
       
  2276 */
       
  2277 
       
  2278 /*!
       
  2279     \fn QStringList Phonon::BackendCapabilities::availableMimeTypes()
       
  2280 
       
  2281     Returns a list of mime types that the Backend can decode.
       
  2282 
       
  2283     \sa isMimeTypeAvailable()
       
  2284 */
       
  2285 
       
  2286 /*!
       
  2287     \fn bool Phonon::BackendCapabilities::isMimeTypeAvailable(const QString &mimeType)
       
  2288 
       
  2289     Often all you want to know is whether one given MIME type can be
       
  2290     decoded by the backend. Use this method in favor of
       
  2291     availableMimeTypes() as it can give you a negative answer without
       
  2292     having a backend loaded.
       
  2293 
       
  2294     Returns true if the given \a mimeType is supported by the backend;
       
  2295     otherwise, returns false.
       
  2296 
       
  2297     \sa availableMimeTypes()
       
  2298 */
       
  2299 
       
  2300 /*!
       
  2301     \fn QList<AudioOutputDevice> Phonon::BackendCapabilities::availableAudioOutputDevices()
       
  2302 
       
  2303     Returns the audio output devices the backend supports.
       
  2304 
       
  2305     \return A list of AudioOutputDevice objects that give a name and
       
  2306             description for every supported audio output device.
       
  2307 */
       
  2308 
       
  2309 /*!
       
  2310     \fn QList<EffectDescription> Phonon::BackendCapabilities::availableAudioEffects()
       
  2311 
       
  2312     Returns descriptions for the audio effects the backend supports.
       
  2313 
       
  2314     \return A list of AudioEffectDescription objects that give a name and
       
  2315     description for every supported audio effect.
       
  2316 */
       
  2317 
       
  2318 /*!
       
  2319     \internal
       
  2320     \class ObjectDescriptionModelData
       
  2321     \internal
       
  2322     \inmodule Phonon
       
  2323     \brief Data class for models for ObjectDescription objects.
       
  2324 */
       
  2325 
       
  2326 /*!
       
  2327     \typedef Phonon::EffectDescription
       
  2328     \relates Phonon::ObjectDescription
       
  2329 
       
  2330     EffectDescription gives a description of an \l{Processors}{audio
       
  2331     effect}. It is a typedef of the \l{Phonon::}{ObjectDescription}
       
  2332     class. Please see its class description for details.
       
  2333 
       
  2334     EffectDescription is used to create audio \l{Phonon::}{Effect}s,
       
  2335     which can be inserted into a media graph, altering an audio
       
  2336     stream.
       
  2337 
       
  2338     \sa Phonon::ObjectDescription, {Capabilities Example}, {Media
       
  2339     Player}
       
  2340 
       
  2341 */
       
  2342 
       
  2343 /*!
       
  2344     \class Phonon::ObjectDescriptionModel
       
  2345     \inmodule Phonon
       
  2346     \internal
       
  2347     \since 4.4
       
  2348     \brief The ObjectDescriptionModel class provides a model from
       
  2349     a list of ObjectDescription objects.
       
  2350 
       
  2351     ObjectDescriptionModel is a read only model that supplies a list
       
  2352     using ObjectDescription::name() for the text and
       
  2353     ObjectDescription::description() for the tooltip. If set the properties
       
  2354     "icon" and "available" are used to set the decoration and disable the
       
  2355     item (disabled only visually, you can still select and drag it).
       
  2356 
       
  2357     It also provides the methods moveUp() and moveDown() to order the list.
       
  2358     Additionally drag and drop is possible so that
       
  2359     QAbstractItemView::InternalMove can be used.
       
  2360     The resulting order of the ObjectDescription::index() values can then be
       
  2361     retrieved using tupleIndexOrder().
       
  2362 
       
  2363     An example use case would be to give the user a QComboBox to select
       
  2364     the output device:
       
  2365     \snippet doc/src/snippets/code/doc_src_phonon-api.qdoc 17
       
  2366 
       
  2367     And to retrieve the selected AudioOutputDevice:
       
  2368     \snippet doc/src/snippets/code/doc_src_phonon-api.qdoc 18
       
  2369 
       
  2370 */
       
  2371 
       
  2372 /*!
       
  2373     \fn inline int Phonon::ObjectDescriptionModel::rowCount(const QModelIndex &parent = QModelIndex()) const
       
  2374 
       
  2375     Returns the number of rows in the model. This value corresponds
       
  2376     to the size of the list passed through setModelData.
       
  2377 
       
  2378     \param parent The optional \a parent argument is used in most models to specify
       
  2379     the parent of the rows to be counted. Because this is a list if a
       
  2380     valid parent is specified the result will always be 0.
       
  2381 
       
  2382     Reimplemented from QAbstractItemModel.
       
  2383 
       
  2384     \sa QAbstractItemModel::rowCount()
       
  2385 */
       
  2386 
       
  2387 /*!
       
  2388     \fn inline QVariant Phonon::ObjectDescriptionModel::data(const QModelIndex &index, int role = Qt::DisplayRole) const
       
  2389 
       
  2390     Returns data from the item with the given \a index for the specified
       
  2391     \a role.
       
  2392     If the view requests an invalid index, an invalid variant is
       
  2393     returned.
       
  2394 
       
  2395     Reimplemented from QAbstractItemModel.
       
  2396 
       
  2397     \sa QAbstractItemModel::data(), Qt::ItemDataRole
       
  2398 */
       
  2399 
       
  2400 /*!
       
  2401     \fn inline Qt::ItemFlags Phonon::ObjectDescriptionModel::flags(const QModelIndex &index) const
       
  2402     \internal
       
  2403 
       
  2404     Reimplemented to show unavailable devices as disabled (but still
       
  2405     selectable). The \a index of the model index for which to return
       
  2406     flags.
       
  2407 
       
  2408 */
       
  2409 
       
  2410 /*!
       
  2411     \fn inline QList<int> Phonon::ObjectDescriptionModel::tupleIndexOrder() const
       
  2412 
       
  2413     Returns a list of indexes in the same order as they are in the
       
  2414     model. The indexes come from the ObjectDescription::index
       
  2415     method.
       
  2416 
       
  2417     This is useful to let the user define a list of preference.
       
  2418 */
       
  2419 
       
  2420 /*!
       
  2421     \fn inline int Phonon::ObjectDescriptionModel::tupleIndexAtPositionIndex(int positionIndex) const
       
  2422 
       
  2423     Returns the ObjectDescription::index for the tuple
       
  2424     at the given position \a positionIndex. For example a
       
  2425     QComboBox will give you the currentIndex as the
       
  2426     position in the list. But to select the according
       
  2427     AudioOutputDevice using AudioOutputDevice::fromIndex
       
  2428     you can use this method.
       
  2429 
       
  2430     \param positionIndex The position in the list.
       
  2431 */
       
  2432 
       
  2433 /*!
       
  2434     \class Phonon::ObjectDescriptionModelDataPrivate
       
  2435     \inmodule Phonon
       
  2436     \since 4.4
       
  2437     \internal
       
  2438 */
       
  2439 
       
  2440 /*!
       
  2441     \fn inline QMimeData *Phonon::ObjectDescriptionModel::mimeData(const QModelIndexList &indexes) const
       
  2442     \internal
       
  2443     
       
  2444     Returns the MIME data that dropMimeData() can use to create new
       
  2445     items.
       
  2446 */
       
  2447 
       
  2448 /*!
       
  2449     \fn inline void Phonon::ObjectDescriptionModel::moveUp(const QModelIndex &index)
       
  2450 
       
  2451     Moves the item at the given \a index up. In the resulting list
       
  2452     the items at index.row() and index.row() - 1 are swapped.
       
  2453 
       
  2454     Connected views are updated automatically.
       
  2455 */
       
  2456 
       
  2457 /*!
       
  2458     \fn inline void Phonon::ObjectDescriptionModel::moveDown(const QModelIndex &index)
       
  2459 
       
  2460     Moves the item at the given \a index down. In the resulting list
       
  2461     the items at index.row() and index.row() + 1 are swapped.
       
  2462 
       
  2463     Connected views are updated automatically.
       
  2464 */
       
  2465 
       
  2466 /*!
       
  2467     \fn explicit inline Phonon::ObjectDescriptionModel::ObjectDescriptionModel(QObject *parent = 0)
       
  2468 
       
  2469     Constructs a ObjectDescription model with the
       
  2470     given \a parent.
       
  2471 */
       
  2472 
       
  2473 /*!
       
  2474     \fn explicit inline Phonon::ObjectDescriptionModel::ObjectDescriptionModel(const QList<ObjectDescription<type> > &data, QObject *parent = 0)
       
  2475 
       
  2476     Constructs a ObjectDescription model with the
       
  2477     given \a parent and the given \a data.
       
  2478 */
       
  2479 
       
  2480 /*!
       
  2481     \fn inline void Phonon::ObjectDescriptionModel::setModelData(const QList<ObjectDescription<type> > &data)
       
  2482 
       
  2483     Sets the model data using the list provided by \a data.
       
  2484 
       
  2485     All previous model data is cleared.
       
  2486 */
       
  2487 
       
  2488 /*!
       
  2489     \fn inline QList<ObjectDescription<type> > Phonon::ObjectDescriptionModel::modelData() const
       
  2490 
       
  2491     Returns the model data.
       
  2492 
       
  2493     As the order of the list might have changed this can be different
       
  2494     to what was set using setModelData().
       
  2495 */
       
  2496 
       
  2497 /*!
       
  2498     \fn inline ObjectDescription<type> Phonon::ObjectDescriptionModel::modelData(const QModelIndex &index) const
       
  2499 
       
  2500     Returns one ObjectDescription of the model data for the given \a index.
       
  2501 */
       
  2502 
       
  2503 /*!
       
  2504     \fn inline Qt::DropActions Phonon::ObjectDescriptionModel::supportedDropActions() const
       
  2505 
       
  2506     This model supports drag and drop to copy or move
       
  2507     items.
       
  2508 */
       
  2509 
       
  2510 /*!
       
  2511     \fn inline bool Phonon::ObjectDescriptionModel::dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent)
       
  2512 
       
  2513     Accept drops from other models of the same ObjectDescriptionType.
       
  2514 
       
  2515     The \a data is dropped at the given \a row and \a column; you
       
  2516     also receive the \a parent model index.
       
  2517 
       
  2518     If a valid \a parent is given the dropped items will be inserted
       
  2519     above that item.
       
  2520 */
       
  2521 
       
  2522 /*!
       
  2523     \fn inline bool Phonon::ObjectDescriptionModel::removeRows(int row, int count, const QModelIndex &parent = QModelIndex())
       
  2524 
       
  2525     Removes count rows starting with the given row.
       
  2526 
       
  2527     If a valid \a parent is given no rows are removed since this is a
       
  2528     list model.
       
  2529 
       
  2530     Returns true if the rows were successfully removed; otherwise returns false.
       
  2531 */
       
  2532 
       
  2533 /*!
       
  2534     \fn inline QStringList Phonon::ObjectDescriptionModel::mimeTypes() const
       
  2535 
       
  2536     Returns a list of supported drag and drop MIME types. Currently
       
  2537     it only supports one type used internally.
       
  2538 */
       
  2539 
       
  2540 /*!
       
  2541     \class Phonon::EffectInterface
       
  2542     \inmodule Phonon
       
  2543     \since 4.4
       
  2544     \internal
       
  2545 */
       
  2546 
       
  2547 /*!
       
  2548     \class Phonon::Effect
       
  2549     \inmodule Phonon
       
  2550     \inheaderfile Phonon/Effect
       
  2551     \since 4.4
       
  2552     \brief The Effect class is used to transform audio streams.
       
  2553 
       
  2554     An effect is a media node which is inserted into a path between a
       
  2555     \l{Phonon::}{MediaObject} and an audio output node, for instance,
       
  2556     an \l{Phonon::}{AudioOutput}. The Effect transforms the media
       
  2557     stream on that path.
       
  2558 
       
  2559     Examples may include simple modifiers, such as fading or pitch
       
  2560     shifting, and more complex mathematical transformations. You can
       
  2561     query the backend for available effects with
       
  2562     BackendCapabilities::availableAudioEffects(). Note that the
       
  2563     effects available is dependent on the underlying system
       
  2564     (DirectDraw, GStreamer, or QuickTime).
       
  2565 
       
  2566     In order to use an effect, insert it into the path as follows:
       
  2567 
       
  2568     \snippet doc/src/snippets/code/doc_src_phonon-api.qdoc 19
       
  2569 
       
  2570     The effect will immediately begin applying it's transformations on
       
  2571     the path. To stop it, remove the Effect from the path.
       
  2572 
       
  2573     To create an effect, you use the \l{Phonon::}{EffectDescription}
       
  2574     class, which you get from
       
  2575     \l{BackendCapabilities::}{availableAudioEffects()}. We give a code
       
  2576     example below.
       
  2577 
       
  2578     \snippet doc/src/snippets/audioeffects.cpp 0
       
  2579 
       
  2580     An effect can have one or more parameters, which let you alter how
       
  2581     the effect works, for instance, by specifying the depth of a
       
  2582     reverb effect. See the EffectParameter class description for
       
  2583     details.
       
  2584 
       
  2585     Phonon also provides EffectWidget, which lets the user modify the
       
  2586     parameters of an effect an the fly; e.g., with combo boxes.
       
  2587 
       
  2588     \sa {Phonon Module}, EffectWidget
       
  2589 */
       
  2590 
       
  2591 /*!
       
  2592     \fn explicit Phonon::Effect::Effect(const EffectDescription &description, QObject *parent = 0)
       
  2593 
       
  2594     Constructs a new effect object with the given \a description and \a parent object.
       
  2595 
       
  2596     The EffectDescription object determines the type of the effect.
       
  2597 
       
  2598     \sa {Phonon::BackendCapabilities::availableAudioEffects()}
       
  2599 */
       
  2600 
       
  2601 /*!
       
  2602     \fn Phonon::Effect::Effect(EffectPrivate &dd, QObject *parent)
       
  2603     \internal
       
  2604 */
       
  2605 
       
  2606 /*!
       
  2607     \fn Phonon::Effect::~Effect()
       
  2608     \internal
       
  2609 */
       
  2610 
       
  2611 /*!
       
  2612     \fn QVariant Phonon::Effect::parameterValue(const EffectParameter &parameter) const
       
  2613 
       
  2614     Returns the value of the given effect \a parameter. You can fetch
       
  2615     the available parameters for an effect with parameters().
       
  2616 
       
  2617     \sa setParameterValue(), EffectParameter
       
  2618 */
       
  2619 
       
  2620 /*!
       
  2621     \fn void Phonon::Effect::setParameterValue(const EffectParameter &parameter, const QVariant &value)
       
  2622 
       
  2623     Sets the given effect \a parameter to the specified \a value.
       
  2624 
       
  2625     Parameters for an effect are returned by parameters(). You can
       
  2626     check which QVariant::Type an EffectParameter takes with the
       
  2627     EffectParameter::type() function.
       
  2628 
       
  2629     \sa parameterValue(), EffectParameter
       
  2630 */
       
  2631 
       
  2632 /*!
       
  2633     \fn EffectDescription Phonon::Effect::description() const;
       
  2634 
       
  2635     Returns the description of this effect. This is the same
       
  2636     description that was passed to the constructor. 
       
  2637 */
       
  2638 
       
  2639 /*!
       
  2640     \fn QList<EffectParameter> Phonon::Effect::parameters() const;
       
  2641 
       
  2642     Returns a list of parameters that this effect provides to control
       
  2643     its behavior.
       
  2644 
       
  2645     \sa EffectParameter, EffectWidget
       
  2646 */
       
  2647 
       
  2648 /*!
       
  2649     \class Phonon::EffectPrivate
       
  2650     \inmodule Phonon
       
  2651     \since 4.4
       
  2652     \internal
       
  2653 */
       
  2654 
       
  2655 /*!
       
  2656     \class Phonon::AudioOutput
       
  2657     \inmodule Phonon
       
  2658     \inheaderfile Phonon/AudioOutput
       
  2659     \since 4.4
       
  2660     \brief The AudioOutput class is used to send data to audio output devices.
       
  2661 
       
  2662     The AudioOutput class plays sound over a sound device. The audio
       
  2663     output needs to be connected to a \l{Phonon::}{MediaObject} using
       
  2664     \l{Phonon::}{createPath()}. To start playback, you call
       
  2665     \l{Phonon::MediaObject::}{play()} on the media object.
       
  2666 
       
  2667     \snippet snippets/phonon.cpp 2
       
  2668 
       
  2669     The class supports changing the volume(). It is also possible to
       
  2670     mute the sound. 
       
  2671 
       
  2672     To find out what \l{Phonon::}{AudioOutputDevice}s are available
       
  2673     for AudioOutput, you can call
       
  2674     BackendCapabilities::availableAudioOutputDevices(). A default device is
       
  2675     selected by the backend, but it is possible to set the device to
       
  2676     be used with setOutputDevice(). The outputDeviceChanged() signal
       
  2677     will be emitted if the device changes.
       
  2678 
       
  2679     If an error occurs with the playback, for instance, if no valid
       
  2680     output device is found, the media object will receive a
       
  2681     stateChanged() signal with the \l{Phonon::}{ErrorState}.
       
  2682 
       
  2683     Note that the default values of properties are dependent on the
       
  2684     backend.
       
  2685 
       
  2686     \sa Phonon::VolumeSlider, {Music Player Example}, BackendCapabilities, {Phonon Module}
       
  2687 */
       
  2688 
       
  2689 /*!
       
  2690     \property Phonon::AudioOutput::name
       
  2691 
       
  2692     This is the name that appears in Mixer applications that control
       
  2693     the volume of this output.
       
  2694 
       
  2695 */
       
  2696 
       
  2697 /*!
       
  2698     \property Phonon::AudioOutput::volume
       
  2699 
       
  2700     This is the current loudness of the output.  \omit The volume is a
       
  2701     real value between 0.0 (minimum) and 1.0 (maximum). The volume
       
  2702     follows the sound device used, with 1.0 being the maximum volume
       
  2703     the device can produce. \endomit
       
  2704 
       
  2705     (it is using Stevens' law
       
  2706     to calculate the change in voltage internally).
       
  2707 
       
  2708     \sa volumeDecibel
       
  2709 */
       
  2710 
       
  2711 /*!
       
  2712     \property Phonon::AudioOutput::volumeDecibel
       
  2713 
       
  2714     This is the current volume of the output in decibel.
       
  2715 
       
  2716     0 dB means no change in volume, -6dB means an attenuation of the
       
  2717     voltage to 50% and an attenuation of the power to 25%, -inf dB means
       
  2718     silence.
       
  2719 
       
  2720     \sa volume
       
  2721 */
       
  2722 
       
  2723 /*!
       
  2724     \property Phonon::AudioOutput::outputDevice
       
  2725     This property holds the (hardware) destination for the output.
       
  2726 
       
  2727     The default device is determined by the \l{Phonon::}{Category} and the global
       
  2728     configuration for that category. Normally you don't need
       
  2729     to override this setting - letting the user change the global
       
  2730     configuration is the right choice. You can still override the
       
  2731     device though, if you have good reasons to do so.
       
  2732 
       
  2733     \sa outputDeviceChanged()
       
  2734 */
       
  2735 
       
  2736 /*!
       
  2737     \property Phonon::AudioOutput::muted
       
  2738     This property tells whether the output is muted.
       
  2739 
       
  2740     Muting the output has the same effect as calling setVolume(0.0).
       
  2741 */
       
  2742 
       
  2743 /*!
       
  2744     \fn explicit Phonon::AudioOutput::AudioOutput(Phonon::Category category, QObject *parent = 0)
       
  2745 
       
  2746     Creates a new AudioOutput with the given \a parent that defines
       
  2747     output to a physical device.
       
  2748 
       
  2749     The \a category can be used by mixer applications to group volume
       
  2750     controls of applications into categories. That makes it easier for
       
  2751     the user to identify the programs.
       
  2752     The category is also used for the default output device that is
       
  2753     configured centrally. As an example: often users want to have the
       
  2754     audio signal of a VoIP application go to their USB headset while
       
  2755     all other sounds should go to the internal soundcard.
       
  2756 
       
  2757     \sa Phonon::categoryToString(), outputDevice
       
  2758 */
       
  2759 
       
  2760 /*!
       
  2761     \fn explicit Phonon::AudioOutput::AudioOutput(QObject *parent = 0)
       
  2762 
       
  2763     Creates a new AudioOutput that defines output to the system
       
  2764     default device with the \{Phonon::Category::}{NoCategory} category
       
  2765 
       
  2766     \sa Phonon::categoryToString(), outputDevice
       
  2767 */
       
  2768 
       
  2769 /*!
       
  2770     \fn Phonon::Category Phonon::AudioOutput::category() const
       
  2771 
       
  2772     Returns the category of this output.
       
  2773 
       
  2774     \sa Phonon::AudioOutput::AudioOutput()
       
  2775 */
       
  2776 
       
  2777 /*!
       
  2778     \fn void Phonon::AudioOutput::volumeChanged(qreal newVolume)
       
  2779 
       
  2780     This signal is emitted whenever the volume has changed. As the
       
  2781     volume can change without a call to setVolume (calls over dbus)
       
  2782     this is important to keep a widget showing the current volume up
       
  2783     to date.
       
  2784 
       
  2785     \a newVolume is the new volume level.
       
  2786 
       
  2787     \sa setVolume(), volume()
       
  2788 */
       
  2789 
       
  2790 /*!
       
  2791     \fn void Phonon::AudioOutput::mutedChanged(bool muted)
       
  2792 
       
  2793     This signal is emitted when the muted property has changed. The \a muted
       
  2794     value passed by the signal indicates the state of the muted property.
       
  2795     As this property can change by IPC (DBus) calls a UI element showing
       
  2796     the muted property should listen to this signal.
       
  2797 */
       
  2798 
       
  2799 /*!
       
  2800     \fn void Phonon::AudioOutput::outputDeviceChanged(const Phonon::AudioOutputDevice &newAudioOutputDevice)
       
  2801 
       
  2802     This signal is emitted when the (hardware) device for the output
       
  2803     has changed. \a newAudioOutputDevice is the new device.
       
  2804 
       
  2805     The change can happen either through setOutputDevice or if the
       
  2806     global configuration for the used category has changed.
       
  2807 
       
  2808     \sa outputDevice
       
  2809 */
       
  2810 
       
  2811 /*!
       
  2812     \class Phonon::AudioOutputPrivate
       
  2813     \inmodule Phonon
       
  2814     \since 4.4
       
  2815     \internal
       
  2816 */
       
  2817 
       
  2818 /*!
       
  2819     \class Phonon::EffectParameter
       
  2820     \inmodule Phonon
       
  2821     \inheaderfile Phonon/EffectParameter
       
  2822     \since 4.4
       
  2823     \brief The EffectParameter class describes one parameter of an effect.
       
  2824 
       
  2825     You fetch the parameters of an \l{Phonon::}{Effect} with
       
  2826     \l{Phonon::}{Effect::parameters()}.
       
  2827 
       
  2828     \snippet doc/src/snippets/phononeffectparameter.cpp 0
       
  2829 
       
  2830     To describe itself, an effect parameter gives a name() and
       
  2831     possibly description() (depending on the backend used). These are
       
  2832     suited to present the effect parameter to the user of a Phonon
       
  2833     application.
       
  2834 
       
  2835     Note that effects are created by the backend, and that
       
  2836     their name and descriptions may vary.
       
  2837 
       
  2838     The value of an effect parameter is stored in a \l{QVariant},
       
  2839     of which type() is usually \c int or \c double. 
       
  2840 
       
  2841     The value is retrieved with \l{Phonon::}{Effect::parameterValue()}
       
  2842     and set with \l{Phonon::Effect::}{setParameterValue()} - both of
       
  2843     which takes the EffectParameter as argument. Note that not all
       
  2844     effect parameters support setting of their value. 
       
  2845 
       
  2846     You get the values a parameter can take with possibleValues(); an
       
  2847     empty list is returned if the values are continuous.
       
  2848 
       
  2849     A parameter may also specify default(), minimum(), and maximum()
       
  2850     values. Values are returned as \l{QVariant}s. If the parameter
       
  2851     does not have the requested value, an \l{QVariant::Invalid}
       
  2852     invalid QVariant is returned from these functions.
       
  2853 
       
  2854     The \l{Phonon::}{EffectWidget} provides a widget with which one
       
  2855     can control the parameters of an \l{Phonon::}{Effect}.
       
  2856 
       
  2857     \snippet doc/src/snippets/phononeffectparameter.cpp 1
       
  2858 
       
  2859     \sa Effect, EffectWidget, {Capabilities Example}, {Phonon Module}
       
  2860 */
       
  2861 
       
  2862 /*!
       
  2863     \fn Phonon::EffectParameter::EffectParameter()
       
  2864     \internal
       
  2865 
       
  2866     Creates an invalid effect parameter.
       
  2867 */
       
  2868 
       
  2869 /*!
       
  2870     \fn Phonon::EffectParameter::~EffectParameter()
       
  2871 
       
  2872     Destroys the effect parameter.
       
  2873 */
       
  2874 
       
  2875 /*!
       
  2876     \fn Phonon::EffectParameter::EffectParameter(const EffectParameter &other)
       
  2877 
       
  2878     Constructs a copy of the \a other effect parameter.
       
  2879 */
       
  2880 
       
  2881 /*!
       
  2882     \fn const QString &Phonon::EffectParameter::name() const
       
  2883 
       
  2884     The name of the parameter. Can be used as the label.
       
  2885 
       
  2886     \return A label for the parameter.
       
  2887 */
       
  2888 
       
  2889 /*!
       
  2890     \fn const QString &Phonon::EffectParameter::description() const
       
  2891 
       
  2892     The parameter may come with a description (LADSPA doesn't have a
       
  2893     field for this, so don't expect many effects to provide a
       
  2894     description).
       
  2895 
       
  2896     The description can be used for a tooltip or WhatsThis help.
       
  2897 
       
  2898     \return A text describing the parameter.
       
  2899 */
       
  2900 
       
  2901 /*!
       
  2902     \fn QVariant::Type Phonon::EffectParameter::type() const
       
  2903 
       
  2904     Returns the parameter type.
       
  2905 
       
  2906     Common types are QVariant::Int, QVariant::Double, QVariant::Bool and QVariant::String. When
       
  2907     QVariant::String is returned you get the possible values from possibleValues.
       
  2908 */
       
  2909 
       
  2910 /*!
       
  2911     \fn bool Phonon::EffectParameter::isLogarithmicControl() const
       
  2912 
       
  2913     Returns whether the parameter should be
       
  2914     displayed using a logarithmic scale. This is particularly useful for
       
  2915     frequencies and gains.
       
  2916 */
       
  2917 
       
  2918 /*!
       
  2919     \fn QVariant Phonon::EffectParameter::minimumValue() const
       
  2920 
       
  2921     The minimum value to be used for the control to edit the parameter.
       
  2922 
       
  2923     If the returned QVariant is invalid the value is not bounded from
       
  2924     below.
       
  2925 */
       
  2926 
       
  2927 /*!
       
  2928     \fn QVariant Phonon::EffectParameter::maximumValue() const
       
  2929 
       
  2930     The maximum value to be used for the control to edit the parameter.
       
  2931 
       
  2932     If the returned QVariant is invalid the value is not bounded from
       
  2933     above.
       
  2934 */
       
  2935 
       
  2936 /*!
       
  2937     \fn QVariant Phonon::EffectParameter::defaultValue() const
       
  2938 
       
  2939     The default value.
       
  2940 */
       
  2941 
       
  2942 /*!
       
  2943     \fn QVariantList Phonon::EffectParameter::possibleValues() const
       
  2944 
       
  2945     The possible values to be used for the control to edit the parameter.
       
  2946 
       
  2947     if the value of this parameter is to be picked from predefined values
       
  2948     this returns the list (otherwise it returns an empty QVariantList).
       
  2949 */
       
  2950 
       
  2951 /*!
       
  2952     \fn bool Phonon::EffectParameter::operator<(const EffectParameter &rhs) const
       
  2953 
       
  2954     \internal
       
  2955     compares the ids of the parameters
       
  2956 */
       
  2957 
       
  2958 /*!
       
  2959     \fn bool Phonon::EffectParameter::operator>(const EffectParameter &rhs) const
       
  2960 
       
  2961     \internal
       
  2962     compares the ids of the parameters
       
  2963 */
       
  2964 
       
  2965 /*!
       
  2966     \fn bool Phonon::EffectParameter::operator==(const EffectParameter &rhs) const
       
  2967 
       
  2968     \internal
       
  2969     compares the ids of the parameters
       
  2970 */
       
  2971 
       
  2972 /*!
       
  2973     \fn Phonon::EffectParameter &Phonon::EffectParameter::operator=(const EffectParameter &other)
       
  2974 
       
  2975     Assigns the \a other effect parameter to this parameter and returns
       
  2976     a reference to this parameter.
       
  2977 */
       
  2978 
       
  2979 /*!
       
  2980     \enum Phonon::EffectParameter::Hint
       
  2981 
       
  2982     Only for backend developers:
       
  2983 
       
  2984     Flags to set the return values of isToggleControl(),
       
  2985     isLogarithmicControl(), isIntegerControl(), isBoundedBelow() and
       
  2986     isBoundedAbove(). The values of the flags correspond to the values
       
  2987     used for LADSPA effects.
       
  2988 
       
  2989     \value ToggledHint
       
  2990     If this hint is set it means that
       
  2991     the control has only two states: zero and non-zero
       
  2992     (see isToggleControl()).
       
  2993 
       
  2994     \value LogarithmicHint
       
  2995     LADSPA's SAMPLE_RATE hint needs to be translated by the backend
       
  2996     to normal bounds, as the backend knows the sample rate - and the
       
  2997     frontend doesn't (see isLogarithmicControl()).
       
  2998 
       
  2999     \value IntegerHint See isIntegerControl().
       
  3000 */
       
  3001 
       
  3002 /*!
       
  3003     \fn Phonon::EffectParameter::EffectParameter(int parameterId,
       
  3004         const QString &name, EffectParameter::Hints hints,
       
  3005         const QVariant &defaultValue, const QVariant &min = QVariant(),
       
  3006         const QVariant &max = QVariant(), const QVariantList &values = QVariantList(),
       
  3007         const QString &description = QString())
       
  3008 
       
  3009     Only to be used by backend implementations:
       
  3010 
       
  3011     Creates a new effect parameter.
       
  3012 
       
  3013     \a parameterId This is a number to uniquely identify the
       
  3014     parameter. The id is used for value() and setValue().
       
  3015 
       
  3016     \a name is the name/label for this parameter.
       
  3017 
       
  3018     \a hints sets the hints for the type of parameter.
       
  3019 
       
  3020     \a defaultValue The value that should be used as a default.
       
  3021 
       
  3022     \a min is the minimum value allowed for this parameter. You only
       
  3023     need to set this if the BoundedBelowHint is set.
       
  3024 
       
  3025     \a max is the maximum value allowed for this parameter. You only
       
  3026     need to set this if the BoundedAboveHint is set.
       
  3027 
       
  3028     The \a values parameter is the values that the effect parameter
       
  3029     can take (only applies if non-continuous) 
       
  3030 
       
  3031     \a description is a descriptive text for the parameter
       
  3032     (explaining what it controls) to be used as a tooltip or
       
  3033     WhatsThis help.
       
  3034 */
       
  3035 
       
  3036 /*!
       
  3037     \fn int Phonon::EffectParameter::id() const
       
  3038 
       
  3039     \internal
       
  3040 
       
  3041     Returns the parameter's identifier.
       
  3042 */
       
  3043 
       
  3044 /*!
       
  3045    \typedef Phonon::AudioOutputInterface
       
  3046    \inmodule Phonon
       
  3047    \internal
       
  3048 */
       
  3049 
       
  3050 /*!
       
  3051     \class Phonon::AudioOutputInterface40
       
  3052     \inmodule Phonon
       
  3053     \since 4.4
       
  3054     \internal
       
  3055     \brief Interface for AudioOutput objects
       
  3056 
       
  3057 */
       
  3058 
       
  3059 /*!
       
  3060     \fn virtual Phonon::AudioOutputInterface40::~AudioOutputInterface40()
       
  3061     \internal
       
  3062 */
       
  3063 
       
  3064 /*!
       
  3065     \fn virtual qreal Phonon::AudioOutputInterface40::volume() const = 0
       
  3066     \internal
       
  3067 */
       
  3068 
       
  3069 /*!
       
  3070     \fn virtual void Phonon::AudioOutputInterface40::setVolume(qreal) = 0
       
  3071     \internal
       
  3072 */
       
  3073 
       
  3074 /*!
       
  3075     \fn virtual int Phonon::AudioOutputInterface40::outputDevice() const = 0
       
  3076     \internal
       
  3077 */
       
  3078 
       
  3079 /*!
       
  3080     \fn virtual bool Phonon::AudioOutputInterface40::setOutputDevice(int) = 0
       
  3081     \internal
       
  3082 */
       
  3083 
       
  3084 /*!
       
  3085     \class Phonon::Path
       
  3086     \inmodule Phonon
       
  3087     \inheaderfile Phonon/Path
       
  3088     \since 4.4
       
  3089     \brief The Path class describes connections between media nodes.
       
  3090 
       
  3091     In a \l{Building Graphs}{media graph}, \l{Phonon::}{MediaNode}s
       
  3092     are connected by Paths. The multimedia travels in streams over
       
  3093     these paths.
       
  3094 
       
  3095     You create a path between two media nodes using the static
       
  3096     Phonon::createPath() function, which takes two nodes as arguments.
       
  3097     The first argument will send the media stream to the second.
       
  3098     Please refer to the class description of the individual media
       
  3099     nodes and the Phonon \l{Phonon Overview}{overview} to see which
       
  3100     nodes can be connected to each other.
       
  3101 
       
  3102     Paths are also used to insert audio \l{Phonon::}{Effect}s between
       
  3103     two media nodes. The effect will then alter the stream on the
       
  3104     path. Notice that \l{Phonon::}{Effect}s also are media nodes, but
       
  3105     that insertEffect() - instead of Phonon::createPath() - is used to
       
  3106     insert them into the media graph.
       
  3107 
       
  3108     The following code example shows how to create a path between two
       
  3109     media nodes and insert an effect on that path.
       
  3110 
       
  3111     \snippet doc/src/snippets/code/doc_src_phonon-api.qdoc 20
       
  3112 
       
  3113     \sa Phonon::MediaNode, Phonon::MediaObject, Phonon::AudioOutput,
       
  3114         Phonon::VideoWidget, {Phonon Module}
       
  3115 */
       
  3116 
       
  3117 /*!
       
  3118     \fn Phonon::Path::~Path();
       
  3119 
       
  3120     Destroys this reference to the Path. If the path was valid the connection is not broken
       
  3121     as both the source and the sink MediaNodes still keep a reference to the Path.
       
  3122 
       
  3123     \sa disconnect()
       
  3124 */
       
  3125 
       
  3126 /*!
       
  3127     \fn Phonon::Path::Path();
       
  3128 
       
  3129     Creates an invalid path.
       
  3130 
       
  3131     You can still make it a valid path by calling reconnect. It is
       
  3132     recommended to use the Phonon::createPath() function to create
       
  3133     paths.
       
  3134 
       
  3135     \sa Phonon::createPath(), isValid()
       
  3136 */
       
  3137 
       
  3138 /*!
       
  3139     \fn Phonon::Path::Path(const Path &path);
       
  3140 
       
  3141     Constructs a copy of the other \a path specified.
       
  3142 
       
  3143     This constructor is fast thanks to explicit sharing.
       
  3144 */
       
  3145 
       
  3146 /*!
       
  3147     \fn bool Phonon::Path::isValid() const;
       
  3148 
       
  3149     A path is considered valid if it is connected to two media nodes,
       
  3150     in which case this function returns true. If it is connected to
       
  3151     one or no media nodes, it is consider invalid, and this function
       
  3152     will then return false.
       
  3153 */
       
  3154 
       
  3155 /*!
       
  3156     \fn Effect *Phonon::Path::insertEffect(const EffectDescription &desc, Effect *insertBefore = 0);
       
  3157 
       
  3158     Creates and inserts an effect into the path.
       
  3159 
       
  3160     You may insert effects of the same class as often as you like,
       
  3161     but if you insert the same object, the call will fail.
       
  3162 
       
  3163     \a desc is the EffectDescription object for the effect to be inserted.
       
  3164 
       
  3165     If you already inserted an effect you can
       
  3166     tell with \a insertBefore in which order the data gets
       
  3167     processed. If this is \c 0 the effect is appended at the end of
       
  3168     the processing list. If the effect has not been inserted before
       
  3169     the method will do nothing and return \c false.
       
  3170 
       
  3171     Returns a pointer to the effect object if it could be inserted
       
  3172     at the specified position. If \c 0 is returned, the effect was not
       
  3173     inserted.
       
  3174 
       
  3175     Below is a code example for inserting an effect into a path:
       
  3176 
       
  3177     \snippet doc/src/snippets/audioeffects.cpp 0
       
  3178 
       
  3179     \sa removeEffect(), effects()
       
  3180 */
       
  3181 
       
  3182 /*!
       
  3183     \fn bool Phonon::Path::insertEffect(Effect *effect, Effect *insertBefore = 0);
       
  3184 
       
  3185     Inserts the given \a effect into the path before the effect specified by \a insertBefore
       
  3186     and returns true if successful; otherwise returns false.
       
  3187 
       
  3188     If \a insertBefore is zero, the effect is appended to the processing list.
       
  3189 
       
  3190     You may insert effects of the same class as often as you like, but if you insert
       
  3191     the same object, the call will fail.
       
  3192 
       
  3193     \a effect will be inserted right before \a insertBefore. If
       
  3194     \a insertBefore is \c 0, the effect is appended at the end of the
       
  3195     processing list. If the effect has not been inserted before the
       
  3196     method will do nothing and return \c false.
       
  3197 
       
  3198     Returns whether the effect could be inserted at the specified
       
  3199     position. If \c false is returned the effect was not inserted.
       
  3200 
       
  3201     \sa removeEffect(), effects()
       
  3202 */
       
  3203 
       
  3204 /*!
       
  3205     \fn bool Phonon::Path::removeEffect(Effect *effect);
       
  3206 
       
  3207     Removes the given \a effect from the path and returns true; otherwise returns false.
       
  3208 
       
  3209     Removes an \a effect from the path.
       
  3210 
       
  3211     If the effect is deleted while it is still connected, the effect will be removed
       
  3212     automatically.
       
  3213 
       
  3214     \omit
       
  3215     \param effect The effect to be removed.
       
  3216 
       
  3217     \return Returns whether the call was successful. If it returns
       
  3218     \c false the effect could not be found in the path, meaning it
       
  3219     has not been inserted before.
       
  3220     \endomit
       
  3221 
       
  3222     \sa insertEffect(), effects()
       
  3223 */
       
  3224 
       
  3225 /*!
       
  3226     \fn QList<Effect *> Phonon::Path::effects() const;
       
  3227 
       
  3228     Returns a list of Effect objects that are currently
       
  3229     used as effects. The order in the list determines the order the
       
  3230     signal is sent through the effects.
       
  3231 
       
  3232     \return A list with all current effects.
       
  3233 
       
  3234     \sa insertEffect(), removeEffect()
       
  3235 */
       
  3236 
       
  3237 /*!
       
  3238     \fn bool Phonon::Path::reconnect(MediaNode *source, MediaNode *sink);
       
  3239 
       
  3240     Changes the media nodes the path is connected to by connecting the path
       
  3241     to the \a source and \a sink nodes specified. Returns true if successful;
       
  3242     otherwise returns false.
       
  3243 
       
  3244     If unsuccessful, the path remains connected to the same nodes as before.
       
  3245 
       
  3246     \sa Phonon::createPath(), {Phonon Overview}
       
  3247 */
       
  3248 
       
  3249 /*!
       
  3250     \fn bool Phonon::Path::disconnect();
       
  3251 
       
  3252     Tries to disconnect the path from the MediaNodes it is connected to, returning
       
  3253     true if successful or false if unsuccessful.
       
  3254 
       
  3255     If successful, the path is invalidated: isValid() will returns false.
       
  3256 */
       
  3257 
       
  3258 /*!
       
  3259     \fn Path &Phonon::Path::operator=(const Path &p);
       
  3260 
       
  3261     Assigns \a p to this Path and returns a reference to this Path.
       
  3262 
       
  3263     This operation is fast thanks to explicit sharing.
       
  3264 */
       
  3265 
       
  3266 /*!
       
  3267     \fn bool Phonon::Path::operator==(const Path &p) const;
       
  3268 
       
  3269     Returns true if this Path is equal to \a p; otherwise returns false;
       
  3270 */
       
  3271 
       
  3272 /*!
       
  3273     \fn bool Phonon::Path::operator!=(const Path &p) const;
       
  3274 
       
  3275     Returns true if this Path is not equal to \a p; otherwise returns false.
       
  3276 */
       
  3277 
       
  3278 /*!
       
  3279     \fn MediaNode *Phonon::Path::source() const;
       
  3280 
       
  3281     Returns the source MediaNode used by the path.
       
  3282 */
       
  3283 
       
  3284 /*!
       
  3285     \fn MediaNode *Phonon::Path::sink() const;
       
  3286 
       
  3287     Returns the sink MediaNode used by the path.
       
  3288 */
       
  3289 
       
  3290 /*!
       
  3291     \fn Path Phonon::createPath(MediaNode *source, MediaNode *sink);
       
  3292 
       
  3293     \relates Phonon::Path
       
  3294     Creates a new Path connecting the two MediaNodes \a source and \a sink.
       
  3295 
       
  3296     The implementation will automatically select the right format and media type. E.g. connecting a
       
  3297     MediaObject and AudioOutput will create a Path object connecting the audio. This might be
       
  3298     represented as PCM or perhaps even AC3 depending on the AudioOutput object.
       
  3299 
       
  3300     \param source The MediaNode to connect an output from
       
  3301     \param sink The MediaNode to connect to.
       
  3302 */
       
  3303 
       
  3304 /*!
       
  3305     \class Phonon::PathPrivate
       
  3306     \inmodule Phonon
       
  3307     \since 4.4
       
  3308     \internal
       
  3309 */
       
  3310 
       
  3311 /*!
       
  3312     \class Phonon::MediaObjectInterface
       
  3313     \inmodule Phonon
       
  3314     \since 4.4
       
  3315     \internal
       
  3316     \brief Backend interface for media sources.
       
  3317 
       
  3318     The backend implementation has to provide two signals, that are not defined
       
  3319     in this interface:
       
  3320     \list
       
  3321     \o \target phonon_MediaObjectInterface_stateChanged
       
  3322     void stateChanged(Phonon::State newstate, Phonon::State oldstate)
       
  3323 
       
  3324     Emitted when the state of the MediaObject has changed.
       
  3325     In case you're not interested in the old state you can also
       
  3326     connect to a slot that only has one State argument.
       
  3327 
       
  3328     \param newstate The state the Player is in now.
       
  3329     \param oldstate The state the Player was in before.
       
  3330 
       
  3331     \o \target phonon_MediaObjectInterface_tick
       
  3332     void tick(qint64 time)
       
  3333 
       
  3334     This signal gets emitted every tickInterval milliseconds.
       
  3335 
       
  3336     \param time The position of the media file in milliseconds.
       
  3337 
       
  3338     \sa setTickInterval()
       
  3339     \sa tickInterval()
       
  3340     \endlist
       
  3341 
       
  3342     \sa MediaObject
       
  3343 */
       
  3344 
       
  3345 /*!
       
  3346     \fn virtual Phonon::MediaObjectInterface::~MediaObjectInterface()
       
  3347     \internal
       
  3348 */
       
  3349 
       
  3350 /*!
       
  3351     \fn virtual qint64 Phonon::MediaObjectInterface::remainingTime() const
       
  3352     \internal
       
  3353 */
       
  3354 
       
  3355 /*!
       
  3356     \fn virtual qint32 Phonon::MediaObjectInterface::prefinishMark() const = 0
       
  3357     \internal
       
  3358 */
       
  3359 
       
  3360 /*!
       
  3361     \fn virtual void Phonon::MediaObjectInterface::setPrefinishMark(qint32) = 0
       
  3362     \internal
       
  3363 */
       
  3364 
       
  3365 /*!
       
  3366     \fn virtual qint32 Phonon::MediaObjectInterface::transitionTime() const = 0
       
  3367     \internal
       
  3368 */
       
  3369 
       
  3370 /*!
       
  3371     \fn virtual void Phonon::MediaObjectInterface::setTransitionTime(qint32) = 0
       
  3372     \internal
       
  3373 */
       
  3374 
       
  3375 /*!
       
  3376     \fn virtual void Phonon::MediaObjectInterface::play() = 0
       
  3377     \internal
       
  3378 
       
  3379     Requests the playback to start.
       
  3380 
       
  3381     This method is only called if the state transition to PlayingState is possible.
       
  3382 
       
  3383     The backend should react immediately
       
  3384     by either going into PlayingState or BufferingState if the
       
  3385     former is not possible.
       
  3386 */
       
  3387 
       
  3388 /*!
       
  3389     \fn virtual void Phonon::MediaObjectInterface::pause() = 0
       
  3390     \internal
       
  3391 
       
  3392     Requests the playback to pause.
       
  3393 
       
  3394     This method is only called if the state transition to PausedState is possible.
       
  3395 
       
  3396     The backend should react as fast as possible. Go to PausedState
       
  3397     as soon as playback is paused.
       
  3398 */
       
  3399 
       
  3400 /*!
       
  3401     \fn virtual void Phonon::MediaObjectInterface::stop() = 0
       
  3402     \internal
       
  3403 
       
  3404     Requests the playback to be stopped.
       
  3405 
       
  3406     This method is only called if the state transition to StoppedState is possible.
       
  3407 
       
  3408     The backend should react as fast as possible. Go to StoppedState
       
  3409     as soon as playback is stopped.
       
  3410 
       
  3411     A subsequent call to play() will start playback at the beginning of
       
  3412     the media.
       
  3413 */
       
  3414 
       
  3415 /*!
       
  3416     \fn virtual void Phonon::MediaObjectInterface::seek(qint64 milliseconds) = 0
       
  3417     \internal
       
  3418 
       
  3419     Requests the playback to be seeked to the given time.
       
  3420 
       
  3421     The backend does not have to finish seeking while in this function
       
  3422     (i.e. the backend does not need to block the thread until the seek is
       
  3423     finished; even worse it might lead to deadlocks when using a
       
  3424     ByteStream which gets its data from the thread this function would
       
  3425     block).
       
  3426 
       
  3427     As soon as the seek is done the currentTime() function and
       
  3428     the tick() signal will report it.
       
  3429 
       
  3430     \param milliseconds The time where playback should seek to in
       
  3431     milliseconds.
       
  3432 */
       
  3433 
       
  3434 /*!
       
  3435     \fn virtual qint32 Phonon::MediaObjectInterface::tickInterval() const = 0
       
  3436     \internal
       
  3437 
       
  3438     Return the time interval in milliseconds between two ticks.
       
  3439 
       
  3440     Returns the tick interval that it was set to (might not
       
  3441     be the same as you asked for).
       
  3442 */
       
  3443 
       
  3444 /*!
       
  3445     \fn virtual void Phonon::MediaObjectInterface::setTickInterval(qint32 interval) = 0
       
  3446     \internal
       
  3447 
       
  3448     Change the interval the tick signal is emitted. Set \a interval to 0 to
       
  3449     disable the signal.
       
  3450 
       
  3451     \a interval tick interval in milliseconds
       
  3452 
       
  3453     Returns the tick interval that it was set to (might not be the same as you
       
  3454     asked for).
       
  3455 
       
  3456 */
       
  3457 
       
  3458 /*!
       
  3459     \fn virtual bool Phonon::MediaObjectInterface::hasVideo() const = 0
       
  3460     \internal
       
  3461 
       
  3462     Check whether the media data includes a video stream.
       
  3463 
       
  3464     Returns true if the media contains video data.
       
  3465 */
       
  3466 
       
  3467 /*!
       
  3468     \fn virtual bool Phonon::MediaObjectInterface::isSeekable() const = 0
       
  3469     \internal
       
  3470 
       
  3471     If the current media may be seeked this function returns true;
       
  3472     otherwise, false.
       
  3473 
       
  3474     Returns whether the current media may be seeked.
       
  3475 */
       
  3476 
       
  3477 /*!
       
  3478     \fn virtual qint64 Phonon::MediaObjectInterface::currentTime() const = 0
       
  3479     \internal
       
  3480 
       
  3481     Get the current time (in milliseconds) of the file currently being played.
       
  3482 */
       
  3483 
       
  3484 /*!
       
  3485     \fn virtual Phonon::State Phonon::MediaObjectInterface::state() const = 0
       
  3486     \internal
       
  3487 
       
  3488     Get the current state.
       
  3489 */
       
  3490 
       
  3491 /*!
       
  3492     \fn virtual QString Phonon::MediaObjectInterface::errorString() const = 0
       
  3493     \internal
       
  3494 
       
  3495     A translated string describing the error.
       
  3496 */
       
  3497 
       
  3498 /*!
       
  3499     \fn virtual Phonon::ErrorType Phonon::MediaObjectInterface::errorType() const = 0
       
  3500     \internal
       
  3501 
       
  3502     Tells your program what to do about the error.
       
  3503 
       
  3504     \sa Phonon::ErrorType
       
  3505 */
       
  3506 
       
  3507 /*!
       
  3508     \fn virtual qint64 Phonon::MediaObjectInterface::totalTime() const = 0
       
  3509     \internal
       
  3510 
       
  3511     Returns the total time of the media in milliseconds.
       
  3512 
       
  3513     If the total time is not know return -1. Do not block until it is
       
  3514     known, instead emit the totalTimeChanged signal as soon as the total
       
  3515     time is known or changes.
       
  3516 */
       
  3517 
       
  3518 /*!
       
  3519     \fn virtual MediaSource Phonon::MediaObjectInterface::source() const = 0
       
  3520     \internal
       
  3521 
       
  3522     Returns the current source.
       
  3523 */
       
  3524 
       
  3525 /*!
       
  3526     \fn virtual void Phonon::MediaObjectInterface::setSource(const MediaSource &) = 0
       
  3527     \internal
       
  3528 
       
  3529     Sets the current source. When this function is called the MediaObject is
       
  3530     expected to stop all current activity and start loading the new
       
  3531     source (i.e. go into LoadingState).
       
  3532 
       
  3533     It is expected that the
       
  3534     backend now starts preloading the media data, filling the audio
       
  3535     and video buffers and making all media meta data available. It
       
  3536     will also trigger the totalTimeChanged signal.
       
  3537 
       
  3538     If the backend does not know how to handle the source it needs to
       
  3539     change state to Phonon::ErrorState. Don't bother about handling KIO
       
  3540     URLs. It is enough to handle AbstractMediaStream sources correctly.
       
  3541 
       
  3542     \warning Keep the MediaSource object around as long as the backend
       
  3543     uses the AbstractMediaStream returned by the MediaSource. In case
       
  3544     that no other reference to the MediaSource exists and it is set to
       
  3545     MediaSource::autoDelete, the AbstractMediaStream is deleted when the
       
  3546     last MediaSource ref is deleted.
       
  3547 */
       
  3548 
       
  3549 /*!
       
  3550     \fn virtual void Phonon::MediaObjectInterface::setNextSource(const MediaSource &source) = 0
       
  3551     \internal
       
  3552 
       
  3553     Sets the next source to be used for transitions. When a next source
       
  3554     is set playback should continue with the new source. In that case
       
  3555     finished and prefinishMarkReached are not emitted.
       
  3556 
       
  3557     \param source The source to transition to (crossfade/gapless/gap). If
       
  3558     \a source is an invalid MediaSource object then the queue is empty
       
  3559     and the playback should stop normally.
       
  3560 
       
  3561     \warning Keep the MediaSource object around as long as the backend
       
  3562     uses the AbstractMediaStream returned by the MediaSource. In case
       
  3563     that no other reference to the MediaSource exists and it is set to
       
  3564     MediaSource::autoDelete, the AbstractMediaStream is deleted when the
       
  3565     last MediaSource ref is deleted.
       
  3566 */
       
  3567 
       
  3568 /*!
       
  3569     \class Phonon::EffectWidget effectwidget.h Phonon/EffectWidget
       
  3570     \inmodule Phonon
       
  3571     \inheaderfile Phonon/EffectWidget
       
  3572     \since 4.4
       
  3573     \brief The EffectWidget class provides a widget to control the parameters of an Effect.
       
  3574 
       
  3575     The EffectWidget class provides a widget, with which an effects
       
  3576     parameters can be controlled. The widget does not have an API,
       
  3577     and is constructed with the \l{Phonon::}{Effect}, of which
       
  3578     parameters should be controlled.
       
  3579 
       
  3580     \snippet doc/src/snippets/audioeffects.cpp 1
       
  3581 
       
  3582     The following image shows an example of an effect widget.
       
  3583 
       
  3584     \image effectwidget.png
       
  3585 
       
  3586     Note that some audio effects do not have parameters, and the
       
  3587     widget will then not \l{QWidget::}{show()} at all.
       
  3588 
       
  3589     \sa Effect, BackendCapabilities, EffectDescription, {Phonon Module}
       
  3590 */
       
  3591 
       
  3592 /*!
       
  3593     \class Phonon::AbstractAudioOutput
       
  3594     \inmodule Phonon
       
  3595     \internal
       
  3596     \brief Provides a common base class for all audio outputs.
       
  3597 
       
  3598     \sa AudioOutput
       
  3599 */
       
  3600 
       
  3601 /*!
       
  3602     \fn Phonon::AbstractAudioOutput::~AbstractAudioOutput()
       
  3603     \internal
       
  3604 */
       
  3605 
       
  3606 /*!
       
  3607     \class Phonon::AbstractAudioOutputPrivate
       
  3608     \inmodule Phonon
       
  3609     \since 4.4
       
  3610     \internal
       
  3611 */
       
  3612 
       
  3613 /*!
       
  3614     \class AudioOutputAdaptor
       
  3615     \inmodule Phonon
       
  3616     \brief Provides an adaptor class for interface org.kde.Phonon.AudioOutput
       
  3617     \internal
       
  3618 */
       
  3619 
       
  3620 /*!
       
  3621     \class Phonon::VolumeSlider
       
  3622     \inmodule Phonon
       
  3623     \inheaderfile Phonon/VolumeSlider
       
  3624     \since 4.4
       
  3625     \brief The VolumeSlider widget provides a slider that is used to control the volume of an audio output device.
       
  3626 
       
  3627     The slider also displays an icon indicating if the volume of the
       
  3628     \l{Phonon::}{AudioOutput} it is connected to is muted. The icon
       
  3629     can be removed with setMuteVisible().
       
  3630 
       
  3631     It is possible to set the \l{maximumVolume}{maximum} value of the
       
  3632     slider. By default, the minimum and maximum values of the slider
       
  3633     are 0.0 (no sound) to 1.0 (the maximum volume the audio output can
       
  3634     produce).
       
  3635 
       
  3636     Here follows a code example:
       
  3637 
       
  3638     \snippet doc/src/snippets/volumeslider.cpp 0
       
  3639 
       
  3640     \omit mention how to change the style of the slider. \endomit
       
  3641 
       
  3642     \sa {Phonon Module}
       
  3643 */
       
  3644 
       
  3645 /*!
       
  3646     \property Phonon::VolumeSlider::maximumVolume
       
  3647 
       
  3648     This property holds the maximum volume that can be set with this slider.
       
  3649 
       
  3650     By default the maximum value is 1.0 (100%).
       
  3651 */
       
  3652 
       
  3653 /*!
       
  3654     \property Phonon::VolumeSlider::orientation
       
  3655     This property holds the orientation of the slider.
       
  3656 
       
  3657     The orientation must be Qt::Vertical (the default) or Qt::Horizontal.
       
  3658 */
       
  3659 
       
  3660 /*!
       
  3661     \property Phonon::VolumeSlider::tracking
       
  3662     This property holds whether slider tracking is enabled.
       
  3663 
       
  3664     If tracking is enabled (the default), the volume changes
       
  3665     while the slider is being dragged. If tracking is
       
  3666     disabled, the volume changes only when the user
       
  3667     releases the slider.
       
  3668 */
       
  3669 
       
  3670 /*!
       
  3671     \property Phonon::VolumeSlider::pageStep
       
  3672     This property holds the page step.
       
  3673 
       
  3674     The larger of two natural steps that a slider provides and
       
  3675     typically corresponds to the user pressing PageUp or PageDown.
       
  3676 
       
  3677     Defaults to 5 (5% of the voltage).
       
  3678 */
       
  3679 
       
  3680 /*!
       
  3681     \property Phonon::VolumeSlider::singleStep
       
  3682     This property holds the single step.
       
  3683 
       
  3684     The smaller of two natural steps that a slider provides and
       
  3685     typically corresponds to the user pressing an arrow key.
       
  3686 
       
  3687     Defaults to 1 (1% of the voltage).
       
  3688 */
       
  3689 
       
  3690 /*!
       
  3691     \property Phonon::VolumeSlider::muteVisible
       
  3692     This property holds whether the mute button/icon next to the slider is visible.
       
  3693 
       
  3694     By default the mute button/icon is visible.
       
  3695 */
       
  3696 
       
  3697 /*!
       
  3698     \property Phonon::VolumeSlider::iconSize
       
  3699     \brief the icon size used for the mute button/icon.
       
  3700 
       
  3701     The default size is defined by the GUI style.
       
  3702 */
       
  3703 
       
  3704 /*!
       
  3705     \fn explicit Phonon::VolumeSlider::VolumeSlider(QWidget *parent = 0)
       
  3706     Constructs a new volume slider with the given \a parent.
       
  3707 */
       
  3708 
       
  3709 /*!
       
  3710     \fn explicit Phonon::VolumeSlider::VolumeSlider(AudioOutput *output, QWidget *parent = 0)
       
  3711     Constructs a new volume slider with the given \a output object and \a parent.
       
  3712 */
       
  3713 
       
  3714 /*!
       
  3715     \fn Phonon::VolumeSlider::~VolumeSlider()
       
  3716 */
       
  3717 
       
  3718 /*!
       
  3719     \fn AudioOutput *Phonon::VolumeSlider::audioOutput() const
       
  3720 */
       
  3721 
       
  3722 /*!
       
  3723     \fn void Phonon::VolumeSlider::setAudioOutput(Phonon::AudioOutput *output)
       
  3724 
       
  3725     Sets the audio output object to be controlled by this slider to the specified
       
  3726     \a output object.
       
  3727 */
       
  3728 
       
  3729 /*!
       
  3730     \class Phonon::VolumeSliderPrivate
       
  3731     \inmodule Phonon
       
  3732     \since 4.4
       
  3733     \internal
       
  3734 */
       
  3735 
       
  3736 /*!
       
  3737     \class Phonon::MediaController
       
  3738     \inmodule Phonon
       
  3739     \inheaderfile Phonon/MediaController
       
  3740     \since 4.4
       
  3741     \brief The MediaController class controls optional features of a media file/device.
       
  3742 
       
  3743     Some media sources have content that the \l{Phonon::}{MediaObject}
       
  3744     does not provide control over, for instance, chapters in a DVD
       
  3745     file. The functionality the media controller offers is
       
  3746     dependent on the type of media source that is played back.
       
  3747     Commonly, the media controller allows you to:
       
  3748 
       
  3749     \list
       
  3750         \o Navigate between \bold chapters.
       
  3751         \o Navigate between \bold titles.
       
  3752         \o Select between \bold angles.
       
  3753     \endlist 
       
  3754 
       
  3755     The \l{Phonon::MediaController::}{Feature} enum explains these
       
  3756     terms in more detail, and their context in playback of CD and DVD. 
       
  3757 
       
  3758     The media controller keeps a \l{Phonon::}{MediaObject}, of which
       
  3759     \l{Phonon::MediaObject::currentSource()}{media source} is played
       
  3760     back. You can still call the media object's functions, e.g.,
       
  3761     \l{Phonon::MediaObject::}{stop()}; this is all handled correctly
       
  3762     by the media controller. You have the option of letting the media
       
  3763     controller play all titles of a source in sequence by setting the
       
  3764     \l{autoplayTitles()}{autoplay titles} option.
       
  3765 
       
  3766     To start a playback using a media object, you call
       
  3767     \l{Phonon::MediaObject::}{play()} on the media object. To play a
       
  3768     specific title, use setCurrentTitle() and then call
       
  3769     \l{Phonon::MediaObject::}{play()}.
       
  3770 
       
  3771     \warning The Phonon::MediaController class is not yet supported by
       
  3772     Qt backends.
       
  3773 
       
  3774     \sa {Phonon Module}
       
  3775 */
       
  3776 
       
  3777 /*!
       
  3778     \fn int Phonon::MediaController::availableAudioChannels() const
       
  3779     \internal
       
  3780 */
       
  3781 
       
  3782 /*!
       
  3783     \fn void Phonon::MediaController::availableAudioChannelsChanged()
       
  3784     \internal
       
  3785 */
       
  3786 
       
  3787 /*!
       
  3788     \fn QList<SubtitleDescription> Phonon::MediaController::availableSubtitles() const
       
  3789     \internal
       
  3790 */
       
  3791 
       
  3792 /*!
       
  3793     \fn void Phonon::MediaController::availableSubtitlesChanged()
       
  3794     \internal
       
  3795 */
       
  3796 
       
  3797 /*!
       
  3798     \fn AudioChannelDescription Phonon::MediaController::currentAudioChannel() const
       
  3799     \internal
       
  3800 */
       
  3801 
       
  3802 /*!
       
  3803     \fn SubtitleDescription Phonon::MediaController::currentSubtitle() const
       
  3804     \internal
       
  3805 */
       
  3806 
       
  3807 /*!
       
  3808     \fn void Phonon::MediaController::setCurrentAudioChannel(const Phonon::AudioChannelDescription &stream)
       
  3809     \internal
       
  3810 */
       
  3811 
       
  3812 /*!
       
  3813     \fn void Phonon::MediaController::setCurrentSubtitle(const Phonon::SubtitleDescription &stream)
       
  3814     \internal
       
  3815 */
       
  3816 
       
  3817 /*!
       
  3818     \fn Phonon::BackendCapabilities::availableAudioCaptureDevices()
       
  3819     \internal
       
  3820 */
       
  3821 
       
  3822 /*!
       
  3823     \fn Phonon::BackendCapabilities::Notifier::availableAudioCaptureDevicesChanged()
       
  3824     \internal
       
  3825 */
       
  3826 
       
  3827 /*!
       
  3828     \enum Phonon::MediaController::Feature
       
  3829 
       
  3830     The values of this enum are interpreted differently depending on
       
  3831     the type of media source, e.g., DVD or CD. We give examples for
       
  3832     these sources.
       
  3833 
       
  3834     \value Angles In the VOB (DVD) format, it is possible to to give
       
  3835     several video streams of the same scene, each of which displays
       
  3836     the scene from a different angle. The DVD viewer can then change
       
  3837     between these angles.
       
  3838 
       
  3839     \value Chapters In the VOB format, chapters are points in a
       
  3840     single video stream that can be played and seeked to
       
  3841     separately. 
       
  3842 
       
  3843     \value Titles On a CD, a title is a separate sound track. On DVD,
       
  3844     a title is a separate VOB file.
       
  3845 
       
  3846 */
       
  3847 
       
  3848 /*!
       
  3849     \fn Phonon::MediaController::MediaController(MediaObject *parent)
       
  3850 
       
  3851     Constructs a new MediaController with the media object (\a parent)
       
  3852     to be used by the media controller.
       
  3853 
       
  3854     \sa MediaObject, Feature
       
  3855 */
       
  3856 
       
  3857 /*!
       
  3858     \fn Phonon::MediaController::~MediaController()
       
  3859 */
       
  3860 
       
  3861 /*!
       
  3862     \fn Features Phonon::MediaController::supportedFeatures() const
       
  3863 */
       
  3864 
       
  3865 /*!
       
  3866     \fn int Phonon::MediaController::availableAngles() const
       
  3867 
       
  3868     Returns the available angles that is available for the current
       
  3869     media source.
       
  3870 
       
  3871     \sa Feature
       
  3872 */
       
  3873 
       
  3874 /*!
       
  3875     \fn int Phonon::MediaController::currentAngle() const
       
  3876 
       
  3877     Returns the angle that is currently used.
       
  3878 
       
  3879     \sa Feature
       
  3880 */
       
  3881 
       
  3882 /*!
       
  3883     \fn int Phonon::MediaController::availableChapters() const
       
  3884 
       
  3885     Returns the number of chapters the current media source
       
  3886     contains.
       
  3887 
       
  3888     \sa Feature
       
  3889 */
       
  3890 
       
  3891 /*!
       
  3892     \fn int Phonon::MediaController::currentChapter() const
       
  3893 
       
  3894     Returns the chapter that is currently being played back.
       
  3895 
       
  3896     \sa Feature
       
  3897 */
       
  3898 
       
  3899 /*!
       
  3900     \fn int Phonon::MediaController::availableTitles() const
       
  3901 
       
  3902     Returns the number of titles that the current media source
       
  3903     contains.
       
  3904 
       
  3905     \sa Feature
       
  3906 */
       
  3907 
       
  3908 /*!
       
  3909     \fn int Phonon::MediaController::currentTitle() const
       
  3910 
       
  3911     Returns the title that is currently played back.
       
  3912 
       
  3913     The current title is 0 (the first) by default.
       
  3914 
       
  3915     \sa Feature
       
  3916 */
       
  3917 
       
  3918 /*!
       
  3919     \fn bool Phonon::MediaController::autoplayTitles() const
       
  3920 
       
  3921     Returns true if titles will automatically be played when the media
       
  3922     is played; otherwise returns false.
       
  3923 
       
  3924     The media controller will play the titles of the media source in
       
  3925     sequence when the media object's \l{Phonon::MediaObject::}{play()}
       
  3926     function is called. If the autoplay option is disabled, the media
       
  3927     object will play the
       
  3928     \l{Phonon::}{MediaController::currentTitle()}{current title} and then
       
  3929     finish the playback.
       
  3930 
       
  3931     \sa setAutoplayTitles(), currentTitle()
       
  3932 */
       
  3933 
       
  3934 /*!
       
  3935     \fn void Phonon::MediaController::setAutoplayTitles(bool enable)
       
  3936 
       
  3937     Sets the titles to play automatically when the media is played if
       
  3938     \a enable is true; otherwise disables this option.
       
  3939 
       
  3940     The media controller will play the titles of the media source in
       
  3941     sequence when the media object's \l{Phonon::MediaObject::}{play()}
       
  3942     function is called. If the autoplay option is disabled, the media
       
  3943     object will play the
       
  3944     \l{Phonon::}{MediaController::currentTitle()}{current title} and then
       
  3945     finish the playback.
       
  3946 
       
  3947     \sa autoplayTitles(), currentTitle()
       
  3948 */
       
  3949 
       
  3950 /*!
       
  3951     \fn void Phonon::MediaController::setCurrentAngle(int angleNumber)
       
  3952 
       
  3953     Sets the current angle to the given \a angleNumber if the media
       
  3954     file or device supports navigation by angle number.
       
  3955 
       
  3956     \sa Feature
       
  3957 */
       
  3958 
       
  3959 /*!
       
  3960     \fn void Phonon::MediaController::setCurrentChapter(int chapterNumber)
       
  3961 
       
  3962     Sets the current chapter to the given \a chapterNumber if the media
       
  3963     file or device supports navigation by chapter number.
       
  3964 
       
  3965     \sa Feature
       
  3966 */
       
  3967 
       
  3968 /*!
       
  3969     \fn void Phonon::MediaController::setCurrentTitle(int titleNumber)
       
  3970 
       
  3971     Skips to the given title \a titleNumber.
       
  3972 
       
  3973     If it was playing before the title change it will start playback on the new title if
       
  3974     autoplayTitles is enabled.
       
  3975 
       
  3976     \sa Feature
       
  3977 */
       
  3978 
       
  3979 /*!
       
  3980     \fn void Phonon::MediaController::nextTitle()
       
  3981 
       
  3982     Skips to the next title.
       
  3983 
       
  3984     If it was playing before the title change it will start playback on the next title if
       
  3985     autoplayTitles is enabled.
       
  3986 
       
  3987     \sa Feature
       
  3988 */
       
  3989 
       
  3990 /*!
       
  3991     \fn void Phonon::MediaController::previousTitle()
       
  3992 
       
  3993     Skips to the previous title.
       
  3994 
       
  3995     If it was playing before the title change it will start playback on the previous title if
       
  3996     autoplayTitles is enabled.
       
  3997 
       
  3998     \sa Feature
       
  3999 */
       
  4000 
       
  4001 /*!
       
  4002     \fn void Phonon::MediaController::availableAnglesChanged(int availableAngles)
       
  4003 
       
  4004     This signal is emitted whenever the number of available angles changes.
       
  4005     The new number of available angles is given by \a availableAngles.
       
  4006 
       
  4007     \sa Feature
       
  4008 */
       
  4009 
       
  4010 /*!
       
  4011     \fn void Phonon::MediaController::angleChanged(int angleNumber)
       
  4012 
       
  4013     This signal is emitted whenever the current angle changes.
       
  4014     The new angle number is given by \a angleNumber.
       
  4015 
       
  4016     \sa Feature
       
  4017 */
       
  4018 
       
  4019 /*!
       
  4020     \fn void Phonon::MediaController::availableChaptersChanged(int availableChapters)
       
  4021 
       
  4022     This signal is emitted whenever the number of available chapters changes.
       
  4023     The new number of available chapters is given by \a availableChapters.
       
  4024 
       
  4025     \sa Feature
       
  4026 */
       
  4027 
       
  4028 /*!
       
  4029     \fn void Phonon::MediaController::chapterChanged(int chapterNumber)
       
  4030 
       
  4031     This signal is emitted whenever the current chapter changes.
       
  4032     The new chapter number is given by \a chapterNumber.
       
  4033 
       
  4034     \sa Feature
       
  4035 */
       
  4036 
       
  4037 /*!
       
  4038     \fn void Phonon::MediaController::availableTitlesChanged(int availableTitles)
       
  4039 
       
  4040     This signal is emitted whenever the number of available titles changes.
       
  4041     The new number of available titles is given by \a availableTitles.
       
  4042 
       
  4043     \sa Feature
       
  4044 */
       
  4045 
       
  4046 /*!
       
  4047     \fn void Phonon::MediaController::titleChanged(int titleNumber)
       
  4048 
       
  4049     This signal is emitted whenever the current title changes.
       
  4050     The new title number is given by \a titleNumber.
       
  4051 
       
  4052     \sa Feature
       
  4053 */
       
  4054 
       
  4055 /*!
       
  4056     \class Phonon::VideoWidget
       
  4057     \inmodule Phonon
       
  4058     \inheaderfile Phonon/VideoWidget
       
  4059     \since 4.4
       
  4060     \ingroup advanced
       
  4061     \ingroup multimedia
       
  4062     \brief The VideoWidget class provides a widget that is used to display video.
       
  4063 
       
  4064     The VideoWidget class renders the video of a media stream on a
       
  4065     QWidget. It is connected to the \l{Phonon::}{MediaObject}, of
       
  4066     which video stream it should render. You connect the two objects
       
  4067     using the Phonon::createPath() function.
       
  4068 
       
  4069     The widget has some possibilities to manipulate the video
       
  4070     stream. You can change the brightness(), hue(), saturation(),
       
  4071     and contrast().
       
  4072 
       
  4073     Resizing of the video is handled automatically, but you can affect
       
  4074     the way the video is resized with the aspectRatio and scaleMode
       
  4075     properties. By default, the widget will use the aspect ratio of
       
  4076     the video stream itself.
       
  4077 
       
  4078     The video widget takes the size of the video when it receives a new video
       
  4079     stream (i.e., when a new MediaSource is set on the MediaObject to which it is
       
  4080     connected). If you need to know the size of the video, you can call
       
  4081     \l{QWidget::}{sizeHint()} after the video has been loaded (i.e., after the
       
  4082     MediaObject leaves the \l{Phonon::}{LoadingState}).
       
  4083 
       
  4084     It is also possible to go to \l{fullScreen}{full screen} mode.
       
  4085 
       
  4086     A typical example of usage follows below:
       
  4087 
       
  4088     \snippet doc/src/snippets/code/doc_src_phonon-api.qdoc 21
       
  4089 
       
  4090     \sa {Phonon Module}
       
  4091 */
       
  4092 
       
  4093 /*!
       
  4094     \fn Phonon::VideoWidget::VideoWidget(QWidget *parent = 0)
       
  4095 
       
  4096      Constructs a new video widget with the specified \a parent.
       
  4097 */
       
  4098 
       
  4099 /*!
       
  4100     \fn Phonon::VideoWidget::VideoWidget(VideoWidgetPrivate &d, QWidget *parent)
       
  4101     \internal
       
  4102 
       
  4103      Constructs a new video widget with the specified \a parent.
       
  4104 */
       
  4105 
       
  4106 /*!
       
  4107     \fn bool Phonon::VideoWidget::event(QEvent *)
       
  4108     \reimp
       
  4109 */
       
  4110 
       
  4111 /*!
       
  4112     \fn void Phonon::VideoWidget::mouseMoveEvent(QMouseEvent *)
       
  4113     \reimp
       
  4114 */
       
  4115 
       
  4116 /*!
       
  4117     \enum Phonon::VideoWidget::ScaleMode
       
  4118 
       
  4119     The ScaleMode enum describes how to treat aspect ratio during
       
  4120     resizing of video.
       
  4121 
       
  4122     \value FitInView    The video will be fitted to fill the view
       
  4123                         keeping aspect ratio.
       
  4124     \value ScaleAndCrop The video is scaled
       
  4125 */
       
  4126 
       
  4127 /*!
       
  4128     \property Phonon::VideoWidget::fullScreen
       
  4129     This property holds whether the video is shown using the complete
       
  4130     screen.
       
  4131 
       
  4132     The property differs from QWidget::fullScreen in that it is
       
  4133     writeable.
       
  4134 
       
  4135     By default the widget is not shown in fullScreen.
       
  4136 
       
  4137     \warning When switching to full screen mode using setFullScreen(),
       
  4138     the widget onto which the video is rendered is shown as a
       
  4139     top-level window. Key event forwarding is handled by VideoWidget,
       
  4140     but if you need to handle other events, e.g., mouse events, you
       
  4141     should handle fullscreen mode yourself.
       
  4142 */
       
  4143 
       
  4144 /*!
       
  4145     \property Phonon::VideoWidget::aspectRatio
       
  4146     Defaults to AspectRatioAuto.
       
  4147 
       
  4148     \sa AspectRatio
       
  4149 */
       
  4150 
       
  4151 /*!
       
  4152     \property Phonon::VideoWidget::scaleMode
       
  4153 
       
  4154     If the size of the widget and the size of the video are not equal.
       
  4155     The video will be zoomed to fit the widget. The smaller zoom
       
  4156     (AddBarsScaleMode) adds black bars at the left/right or top/bottom to
       
  4157     make all of the image visible (default). The bigger zoom (ExpandMode)
       
  4158     fills the widget completely, keeping all information in one direction
       
  4159     and leaving parts of the image outside of the widget in the other
       
  4160     direction.
       
  4161 */
       
  4162 
       
  4163 /*!
       
  4164     \property Phonon::VideoWidget::brightness
       
  4165 
       
  4166     This property holds brightness of the video.
       
  4167 
       
  4168     Default is 0. Acceptable values are in range of -1, 1.
       
  4169 */
       
  4170 
       
  4171 /*!
       
  4172     \property Phonon::VideoWidget::contrast
       
  4173 
       
  4174     This property holds the contrast of the video.
       
  4175 
       
  4176     Default is 0. Acceptable values are in range of -1, 1.
       
  4177 */
       
  4178 
       
  4179 /*!
       
  4180     \property Phonon::VideoWidget::hue
       
  4181 
       
  4182     This property holds the hue of the video.
       
  4183 
       
  4184     Default is 0. Acceptable values are in range of -1, 1.
       
  4185 */
       
  4186 
       
  4187 /*!
       
  4188     \property Phonon::VideoWidget::saturation
       
  4189 
       
  4190     This property holds saturation of the video.
       
  4191 
       
  4192     Default is 0. Acceptable values are in range of -1, 1.
       
  4193 */
       
  4194 
       
  4195 /*!
       
  4196     \enum Phonon::VideoWidget::AspectRatio
       
  4197 
       
  4198     Defines the width:height to be used for the video.
       
  4199 
       
  4200     \value AspectRatioAuto
       
  4201     Let the decoder find the aspect ratio automatically from the
       
  4202     media file (this is the default).
       
  4203 
       
  4204     \value AspectRatioWidget
       
  4205     Fits the video into the widget making the aspect ratio depend
       
  4206     solely on the size of the widget. This way the aspect ratio
       
  4207     is freely resizeable by the user.
       
  4208 
       
  4209     \value AspectRatio4_3
       
  4210     Make width/height == 4/3, which is the old TV size and
       
  4211     monitor size (1024/768 == 4/3). (4:3)
       
  4212 
       
  4213     \value AspectRatio16_9
       
  4214     Make width/height == 16/9, which is the size of most current
       
  4215     media. (16:9)
       
  4216 */
       
  4217 
       
  4218 /*!
       
  4219     \fn void Phonon::VideoWidget::exitFullScreen()
       
  4220 
       
  4221     Convenience slot, calling setFullScreen(false)
       
  4222 */
       
  4223 
       
  4224 
       
  4225 /*!
       
  4226     \fn void Phonon::VideoWidget::enterFullScreen()
       
  4227 
       
  4228     Convenience slot, calling setFullScreen(true)
       
  4229 */
       
  4230 
       
  4231 /*!
       
  4232     \class Phonon::VideoWidgetInterface
       
  4233     \inmodule Phonon
       
  4234     \since 4.4
       
  4235     \internal
       
  4236 */
       
  4237 
       
  4238 /*!
       
  4239     \fn virtual Phonon::VideoWidgetInterface::~VideoWidgetInterface()
       
  4240 */
       
  4241 
       
  4242 /*!
       
  4243     \fn virtual Phonon::VideoWidget::AspectRatio Phonon::VideoWidgetInterface::aspectRatio() const = 0
       
  4244     \internal
       
  4245 */
       
  4246 
       
  4247 /*!
       
  4248     \fn virtual void Phonon::VideoWidgetInterface::setAspectRatio(Phonon::VideoWidget::AspectRatio ratio) = 0
       
  4249     \internal
       
  4250 */
       
  4251 
       
  4252 /*!
       
  4253     \fn virtual qreal Phonon::VideoWidgetInterface::brightness() const = 0
       
  4254     \internal
       
  4255 */
       
  4256 
       
  4257 /*!
       
  4258     \fn virtual void Phonon::VideoWidgetInterface::setBrightness(qreal) = 0
       
  4259     \internal
       
  4260 */
       
  4261 
       
  4262 /*!
       
  4263     \fn virtual Phonon::VideoWidget::ScaleMode Phonon::VideoWidgetInterface::scaleMode() const = 0
       
  4264     \internal
       
  4265 */
       
  4266 
       
  4267 /*!
       
  4268     \fn virtual void Phonon::VideoWidgetInterface::setScaleMode(Phonon::VideoWidget::ScaleMode mode) = 0
       
  4269     \internal
       
  4270 */
       
  4271 
       
  4272 /*!
       
  4273     \fn virtual qreal Phonon::VideoWidgetInterface::contrast() const = 0
       
  4274     \internal
       
  4275 */
       
  4276 
       
  4277 /*!
       
  4278     \fn virtual void Phonon::VideoWidgetInterface::setContrast(qreal) = 0
       
  4279     \internal
       
  4280 */
       
  4281 
       
  4282 /*!
       
  4283     \fn virtual qreal Phonon::VideoWidgetInterface::hue() const = 0
       
  4284     \internal
       
  4285 */
       
  4286 
       
  4287 /*!
       
  4288     \fn virtual void Phonon::VideoWidgetInterface::setHue(qreal) = 0
       
  4289     \internal
       
  4290 */
       
  4291 
       
  4292 /*!
       
  4293     \fn virtual qreal Phonon::VideoWidgetInterface::saturation() const = 0
       
  4294     \internal
       
  4295 */
       
  4296 
       
  4297 /*!
       
  4298     \fn virtual void Phonon::VideoWidgetInterface::setSaturation(qreal) = 0
       
  4299     \internal
       
  4300 */
       
  4301 
       
  4302 /*!
       
  4303     \fn virtual QWidget *Phonon::VideoWidgetInterface::widget() = 0
       
  4304     \internal
       
  4305 */
       
  4306 
       
  4307 /*!
       
  4308     \class Phonon::PlatformPlugin
       
  4309     \inmodule Phonon
       
  4310     \since 4.4
       
  4311     \internal
       
  4312 */
       
  4313 
       
  4314 /*!
       
  4315     \fn virtual AbstractMediaStream *Phonon::PlatformPlugin::createMediaStream(const QUrl &url, QObject *parent) = 0
       
  4316 
       
  4317     Creates a AbstractMediaStream object with the given \a parent that provides the data
       
  4318     for the given URL specified by \a url.
       
  4319     \omit
       
  4320     On KDE this uses KIO.
       
  4321     \endomit
       
  4322 */
       
  4323 
       
  4324 /*!
       
  4325     \fn virtual QIcon Phonon::PlatformPlugin::icon(const QString &name) const = 0
       
  4326 
       
  4327     Returns the icon for the given icon name.
       
  4328 */
       
  4329 
       
  4330 /*!
       
  4331     \fn virtual void Phonon::PlatformPlugin::notification(const char *notificationName, const QString &text,
       
  4332         const QStringList &actions, QObject *receiver, const char *actionSlot) const = 0
       
  4333 
       
  4334     Shows a notification pop-up with the given \a notificationName and \a text.
       
  4335     Each action in the associated list of \a actions is connected to the \a actionSlot
       
  4336     of the specified \a receiver object, which is expected to act on the actions as
       
  4337     they are triggered by the user.
       
  4338 */
       
  4339 
       
  4340 /*!
       
  4341     \fn virtual QString Phonon::PlatformPlugin::applicationName() const = 0
       
  4342 
       
  4343     Returns the name of the application. For most Qt application this is
       
  4344     QCoreApplication::applicationName(), but for KDE this is overridden by KAboutData.
       
  4345 */
       
  4346 
       
  4347 
       
  4348 /*!
       
  4349     \fn virtual QObject *Phonon::PlatformPlugin::createBackend() = 0
       
  4350 
       
  4351     Creates a backend object. This way the platform can decide the backend preference.
       
  4352 */
       
  4353 
       
  4354 /*!
       
  4355     \fn virtual QObject *Phonon::PlatformPlugin::createBackend(const QString &library, const QString &version) = 0
       
  4356 
       
  4357     Using the library loader of the platform, loads a given backend provided the
       
  4358     specified \a library and \a version.
       
  4359 */
       
  4360 
       
  4361 /*!
       
  4362     \fn virtual bool Phonon::PlatformPlugin::isMimeTypeAvailable(const QString &mimeType) const = 0
       
  4363 
       
  4364     Tries to check whether the default backend supports the MIME type specified by \a mimeType
       
  4365     without loading the actual backend library.
       
  4366     \omit
       
  4367     On KDE this reads the MIME type list from the .desktop file of
       
  4368     the backend.
       
  4369     \endomit
       
  4370 */
       
  4371 
       
  4372 /*!
       
  4373     \fn virtual void Phonon::PlatformPlugin::saveVolume(const QString &outputName, qreal volume) = 0
       
  4374 
       
  4375     Saves the volume for the given output.
       
  4376 */
       
  4377 
       
  4378 /*!
       
  4379     \fn virtual qreal Phonon::PlatformPlugin::loadVolume(const QString &outputName) const = 0
       
  4380 
       
  4381     Loads the volume for the given output.
       
  4382 */
       
  4383 
       
  4384 /*!
       
  4385     \class Phonon::MediaNode
       
  4386     \inmodule Phonon
       
  4387     \inheaderfile Phonon/MediaNode
       
  4388     \since 4.4
       
  4389     \brief The MediaNode class is the base class for all nodes in a media graph.
       
  4390 
       
  4391     In all phonon applications, one builds a media graph consisting of
       
  4392     MediaNodes. The graph will take multimedia content, e.g., from a
       
  4393     file, as input. After its nodes have processed the multimedia, the
       
  4394     graph will output the media again, e.g., to a sound card.
       
  4395 
       
  4396     The multimedia content is streamed over \l{Phonon::}{Path}s
       
  4397     between the nodes in the graph. You can query the paths that are
       
  4398     connected to a media node with inputPaths() and outputPaths().
       
  4399 
       
  4400     You can check whether the node is implemented by the current
       
  4401     backend by calling isValid(). This does not guarantee that an
       
  4402     instance of the class works as expected, but that the backend has
       
  4403     implemented functionality for the class.
       
  4404 
       
  4405     Currently, Phonon has four media nodes: \l{Phonon::}{MediaObject},
       
  4406     \l{Phonon::}{AudioOutput}, \l{Phonon::}{VideoWidget}, and \l{Phonon::}{Effect}.
       
  4407     Please refer to their class descriptions for details about their usage, and to
       
  4408     find out which nodes can be connected to each other. See also \l{Building
       
  4409     Graphs} in Phonon's \l{Phonon Overview}{overview} document. 
       
  4410 
       
  4411     Two nodes are connected to each other using the
       
  4412     Phonon::createPath() or \l{Phonon::}{Path::insertEffect()}
       
  4413     functions (only \l{Phonon::Effect}s use
       
  4414     \l{Phonon::Path::}{insertEffect()}). We show a code example below,
       
  4415     in which we build a media graph for video playback and then query
       
  4416     its media nodes for their \l{Phonon::}{Path}s:
       
  4417 
       
  4418     \snippet doc/src/snippets/medianodesnippet.cpp 0 
       
  4419 
       
  4420     When you create a Phonon application, you will likely build the
       
  4421     graph yourself. This makes isValid() the most useful function of
       
  4422     this class. The other two functions help navigate the graph, which
       
  4423     you do not need to do as you created the nodes yourself.
       
  4424 
       
  4425     \sa {Phonon Overview}, Phonon::MediaObject,
       
  4426         Phonon::AudioOutput, Phonon::VideoWidget, {Phonon Module}
       
  4427 */
       
  4428 
       
  4429 /*!
       
  4430     \fn virtual Phonon::MediaNode::~MediaNode()
       
  4431 
       
  4432     Destroys the media node and any paths connecting it to other
       
  4433     nodes. Any \l{Phonon::}{Effect}s connected to these paths will
       
  4434     also be deleted.
       
  4435 */
       
  4436 
       
  4437 /*!
       
  4438     \fn bool Phonon::MediaNode::isValid() const
       
  4439 
       
  4440     Returns true if the backend provides an implementation of this
       
  4441     class; otherwise returns false.
       
  4442 
       
  4443     This does not guarantee that instances of the class works as
       
  4444     expected, but that the backend has implemented the functionality
       
  4445     for this class. For instance, Qt's GStreamer backend will return
       
  4446     true for instances of the \l{Phonon::}{AudioOutput} class, even if
       
  4447     there is a problem with GStreamer and it could not play sound. 
       
  4448 
       
  4449 */
       
  4450 
       
  4451 /*!
       
  4452     \fn QList<Path> Phonon::MediaNode::inputPaths() const
       
  4453 
       
  4454     Returns the paths that inputs multimedia to this media node.
       
  4455     
       
  4456     \sa outputPaths()
       
  4457 */
       
  4458 
       
  4459 /*!
       
  4460     \fn QList<Path> Phonon::MediaNode::outputPaths() const
       
  4461 
       
  4462     Returns the paths to which this media node outputs media.
       
  4463 
       
  4464     \sa inputPaths()
       
  4465 */
       
  4466 
       
  4467 /*!
       
  4468     \fn Phonon::MediaNode::MediaNode(MediaNodePrivate &dd)
       
  4469     \internal
       
  4470 */
       
  4471 
       
  4472 /*!
       
  4473     \class Phonon::GlobalConfig
       
  4474     \inmodule Phonon
       
  4475     \since 4.4
       
  4476     \internal
       
  4477 */
       
  4478 
       
  4479 /*!
       
  4480     \fn Phonon::GlobalConfig::GlobalConfig()
       
  4481     \internal
       
  4482 */
       
  4483 
       
  4484 /*!
       
  4485     \fn Phonon::GlobalConfig::~GlobalConfig()
       
  4486     \internal
       
  4487 */
       
  4488 
       
  4489 /*!
       
  4490     \fn QList<int> Phonon::GlobalConfig::audioOutputDeviceListFor(Phonon::Category category, int override = AdvancedDevicesFromSettings) const
       
  4491     \internal
       
  4492 */
       
  4493 
       
  4494 /*!
       
  4495     \fn int Phonon::GlobalConfig::audioOutputDeviceFor(Phonon::Category category, int override = AdvancedDevicesFromSettings) const
       
  4496     \internal
       
  4497 */
       
  4498 
       
  4499 /*!
       
  4500     \class Phonon::ObjectDescriptionData
       
  4501     \inmodule Phonon
       
  4502     \since 4.4
       
  4503     \internal
       
  4504     \brief Data class for objects describing devices or features of the backend.
       
  4505 
       
  4506     \sa Phonon::BackendCapabilities
       
  4507 */
       
  4508 
       
  4509 /*!
       
  4510     \fn bool Phonon::ObjectDescriptionData::operator==(const ObjectDescriptionData &otherDescription) const
       
  4511 
       
  4512     Returns \c true if this ObjectDescription describes the same
       
  4513     as \a otherDescription; otherwise returns \c false.
       
  4514 */
       
  4515 
       
  4516 /*!
       
  4517     \fn QString Phonon::ObjectDescriptionData::name() const
       
  4518 
       
  4519     Returns the name of the capture source.
       
  4520 
       
  4521     \return A string that should be presented to the user to
       
  4522     choose the capture source.
       
  4523 */
       
  4524 
       
  4525 /*!
       
  4526     \fn QString Phonon::ObjectDescriptionData::description() const
       
  4527 
       
  4528     Returns a description of the capture source. This text should
       
  4529     make clear what sound source this is, which is sometimes hard
       
  4530     to describe or understand from just the name.
       
  4531 
       
  4532     \return A string describing the capture source.
       
  4533 */
       
  4534 
       
  4535 /*!
       
  4536     \fn QVariant Phonon::ObjectDescriptionData::property(const char *name) const
       
  4537 
       
  4538     Returns a named property.
       
  4539 
       
  4540     If the property is not set an invalid value is returned.
       
  4541 
       
  4542     \sa propertyNames()
       
  4543 */
       
  4544 
       
  4545 /*!
       
  4546     \fn QList<QByteArray> Phonon::ObjectDescriptionData::propertyNames() const
       
  4547 
       
  4548     Returns all names that return valid data when property() is called.
       
  4549 
       
  4550     \sa property()
       
  4551 */
       
  4552 
       
  4553 /*!
       
  4554     \fn bool Phonon::ObjectDescriptionData::isValid() const
       
  4555 
       
  4556     Returns true if the Tuple is valid (index != -1); otherwise returns
       
  4557     false.
       
  4558 */
       
  4559 
       
  4560 /*!
       
  4561     \fn int Phonon::ObjectDescriptionData::index() const
       
  4562 
       
  4563     A unique identifier for this device/. Used internally
       
  4564     to distinguish between the devices/.
       
  4565 
       
  4566     \return An integer that uniquely identifies every device.
       
  4567 */
       
  4568 
       
  4569 /*!
       
  4570     \fn static ObjectDescriptionData *Phonon::ObjectDescriptionData::fromIndex(ObjectDescriptionType type, int index)
       
  4571     \internal
       
  4572 */
       
  4573 
       
  4574 /*!
       
  4575     \fn Phonon::ObjectDescriptionData::~ObjectDescriptionData()
       
  4576     \internal
       
  4577 */
       
  4578 
       
  4579 /*!
       
  4580     \fn Phonon::ObjectDescriptionData::ObjectDescriptionData(ObjectDescriptionPrivate * = 0)
       
  4581     \internal
       
  4582 */
       
  4583 
       
  4584 /*!
       
  4585     \class Phonon::AddonInterface
       
  4586     \inmodule Phonon
       
  4587     \since 4.4
       
  4588     \internal
       
  4589     \brief Interface for Menu, Chapter, Angle and Title/Track control.
       
  4590 */
       
  4591 
       
  4592 /*!
       
  4593     \fn virtual Phonon::AddonInterface::~AddonInterface()
       
  4594     \internal
       
  4595 */
       
  4596 
       
  4597 /*!
       
  4598     \enum Phonon::AddonInterface::Interface
       
  4599 
       
  4600     This enum describes the type of interface represented by an AddonInterface object.
       
  4601 
       
  4602     \value NavigationInterface
       
  4603     \value ChapterInterface
       
  4604     \value AngleInterface
       
  4605     \value TitleInterface
       
  4606 */
       
  4607 
       
  4608 /*!
       
  4609     \enum Phonon::AddonInterface::NavigationCommand
       
  4610     \internal
       
  4611     \value Menu1Button
       
  4612 */
       
  4613 
       
  4614 /*!
       
  4615     \enum Phonon::AddonInterface::ChapterCommand
       
  4616     \internal
       
  4617     \value availableChapters
       
  4618     \value chapter
       
  4619     \value setChapter
       
  4620 */
       
  4621 
       
  4622 /*!
       
  4623     \enum Phonon::AddonInterface::AngleCommand
       
  4624     \internal
       
  4625     \value availableAngles
       
  4626     \value angle
       
  4627     \value setAngle
       
  4628 */
       
  4629 
       
  4630 /*!
       
  4631     \enum Phonon::AddonInterface::TitleCommand
       
  4632     \internal
       
  4633     \value availableTitles
       
  4634     \value title
       
  4635     \value setTitle
       
  4636     \value autoplayTitles
       
  4637     \value setAutoplayTitles
       
  4638 */
       
  4639 
       
  4640 /*!
       
  4641     \fn virtual bool Phonon::AddonInterface::hasInterface(Interface iface) const = 0
       
  4642     \internal
       
  4643 */
       
  4644 
       
  4645 /*!
       
  4646     \fn virtual QVariant Phonon::AddonInterface::interfaceCall(Interface iface, int command,
       
  4647             const QList<QVariant> &arguments) = 0
       
  4648     \internal
       
  4649 */
       
  4650 
       
  4651 /*!
       
  4652     \class Phonon::MediaNodePrivate
       
  4653     \inmodule Phonon
       
  4654     \since 4.4
       
  4655     \internal
       
  4656 */
       
  4657 
       
  4658 /*!
       
  4659     \namespace Phonon::Factory
       
  4660     \inmodule Phonon
       
  4661     \internal
       
  4662 */
       
  4663 
       
  4664 /*!
       
  4665     \fn Sender *Phonon::Factory::sender()
       
  4666 
       
  4667     Returns a pointer to the object emitting the signals.
       
  4668 
       
  4669     \sa Sender::backendChanged()
       
  4670 */
       
  4671 
       
  4672 /*!
       
  4673     \fn QObject *Phonon::Factory::createMediaObject(QObject *parent = 0)
       
  4674 
       
  4675     Create a new backend object for a MediaObject.
       
  4676 
       
  4677     \return a pointer to the MediaObject the backend provides.
       
  4678 */
       
  4679 
       
  4680 /*!
       
  4681     \fn QObject *Phonon::Factory::createEffect(int effectId, QObject *parent = 0)
       
  4682 
       
  4683     Create a new backend object for a Effect.
       
  4684 
       
  4685     \return a pointer to the Effect the backend provides.
       
  4686 */
       
  4687 
       
  4688 /*!
       
  4689     \fn QObject *Phonon::Factory::createVolumeFaderEffect(QObject *parent = 0)
       
  4690 
       
  4691     Create a new backend object for a VolumeFaderEffect.
       
  4692 
       
  4693     \return a pointer to the VolumeFaderEffect the backend provides.
       
  4694 */
       
  4695 
       
  4696 /*!
       
  4697     \fn QObject *Phonon::Factory::createAudioOutput(QObject *parent = 0)
       
  4698 
       
  4699     Create a new backend object for a AudioOutput.
       
  4700 
       
  4701     \return a pointer to the AudioOutput the backend provides.
       
  4702 */
       
  4703 
       
  4704 /*!
       
  4705     \fn QObject *Phonon::Factory::createVideoWidget(QObject *parent = 0)
       
  4706 
       
  4707     Create a new backend object for a VideoWidget.
       
  4708 
       
  4709     \return a pointer to the VideoWidget the backend provides.
       
  4710 */
       
  4711 
       
  4712 /*!
       
  4713     \fn QObject *Phonon::Factory::backend(bool createWhenNull = true)
       
  4714 
       
  4715     \return a pointer to the backend interface.
       
  4716 */
       
  4717 
       
  4718 /*!
       
  4719     \fn QString Phonon::Factory::identifier()
       
  4720 
       
  4721     Unique identifier for the Backend. Can be used in configuration files
       
  4722     for example.
       
  4723 */
       
  4724 
       
  4725 
       
  4726 /*!
       
  4727     \fn QString Phonon::Factory::backendName()
       
  4728 
       
  4729     Get the name of the Backend.
       
  4730     \omit
       
  4731     It's the name from the .desktop file.
       
  4732     \endomit
       
  4733 */
       
  4734 
       
  4735 /*!
       
  4736     \fn QString Phonon::Factory::backendComment()
       
  4737 
       
  4738     Get the comment of the Backend.
       
  4739     \omit
       
  4740     It's the comment from the .desktop file.
       
  4741     \endomit
       
  4742 */
       
  4743 
       
  4744 /*!
       
  4745     \fn QString Phonon::Factory::backendVersion()
       
  4746 
       
  4747     Get the version of the Backend.
       
  4748     \omit
       
  4749     It's the version from the .desktop file.
       
  4750     \endomit
       
  4751 
       
  4752     The version is especially interesting if there are several versions
       
  4753     available for binary incompatible versions of the backend's media
       
  4754     framework.
       
  4755 */
       
  4756 
       
  4757 /*!
       
  4758     \fn QString Phonon::Factory::backendIcon()
       
  4759 
       
  4760     Get the icon (name) of the Backend.
       
  4761     \omit
       
  4762     It's the icon from the .desktop file.
       
  4763     \endomit
       
  4764 */
       
  4765 
       
  4766 /*!
       
  4767     \fn QString Phonon::Factory::backendWebsite()
       
  4768 
       
  4769     Get the website of the Backend.
       
  4770     \omit
       
  4771     It's the website from the .desktop file.
       
  4772     \endomit
       
  4773 */
       
  4774 
       
  4775 /*!
       
  4776     \fn QObject *Phonon::Factory::registerQObject(QObject *object)
       
  4777 
       
  4778     Registers the given backend \a object with the factory.
       
  4779 */
       
  4780 
       
  4781 /*!
       
  4782     \fn bool Phonon::Factory::isMimeTypeAvailable(const QString &mimeType)
       
  4783 */
       
  4784 
       
  4785 /*!
       
  4786     \fn void Phonon::Factory::registerFrontendObject(MediaNodePrivate *)
       
  4787     \internal
       
  4788 */
       
  4789 
       
  4790 /*!
       
  4791     \fn void Phonon::Factory::deregisterFrontendObject(MediaNodePrivate *)
       
  4792     \internal
       
  4793 */
       
  4794 
       
  4795 /*!
       
  4796     \fn void Phonon::Factory::setBackend(QObject *)
       
  4797 */
       
  4798 
       
  4799 /*!
       
  4800     \fn PlatformPlugin *Phonon::Factory::platformPlugin()
       
  4801 */
       
  4802 
       
  4803 /*!
       
  4804 /*!
       
  4805     \class Phonon::AbstractMediaStreamPrivate
       
  4806     \inmodule Phonon
       
  4807     \since 4.4
       
  4808     \internal
       
  4809 */
       
  4810 
       
  4811 /*!
       
  4812     \class Phonon::FrontendInterfacePrivate
       
  4813     \inmodule Phonon
       
  4814     \since 4.4
       
  4815     \internal
       
  4816 */
       
  4817 
       
  4818 /*!
       
  4819     \class Phonon::EffectWidgetPrivate
       
  4820     \inmodule Phonon
       
  4821     \since 4.4
       
  4822     \internal
       
  4823 */
       
  4824 
       
  4825 /*!
       
  4826     \class Phonon::IODeviceStream
       
  4827     \inmodule Phonon
       
  4828     \since 4.4
       
  4829     \internal
       
  4830 */
       
  4831 
       
  4832 /*!
       
  4833     \fn explicit Phonon::IODeviceStream::IODeviceStream(QIODevice *ioDevice, QObject *parent = 0)
       
  4834     \internal
       
  4835 
       
  4836     Creates a new IODeviceStream with the given \a ioDevice and \a
       
  4837     parent.
       
  4838 
       
  4839 */
       
  4840 
       
  4841 /*!
       
  4842     \fn Phonon::IODeviceStream::~IODeviceStream()
       
  4843     \internal
       
  4844 */
       
  4845 
       
  4846 /*!
       
  4847     \fn void Phonon::IODeviceStream::reset()
       
  4848     \internal
       
  4849 */
       
  4850 
       
  4851 /*!
       
  4852     \fn void Phonon::IODeviceStream::needData()
       
  4853     \internal
       
  4854 */
       
  4855 
       
  4856 /*!
       
  4857     \fn void Phonon::IODeviceStream::seekStream(qint64)
       
  4858     \internal
       
  4859 */
       
  4860 
       
  4861 /*!
       
  4862     \namespace Phonon::Platform
       
  4863     \inmodule Phonon
       
  4864     \internal
       
  4865 */
       
  4866 
       
  4867 /*!
       
  4868     \typedef Phonon::EffectDescriptionModel
       
  4869     \inmodule Phonon
       
  4870     \brief provides a item view model containing available audio effects.
       
  4871 
       
  4872 */
       
  4873 
       
  4874 /*!
       
  4875     \typedef Phonon::SubtitleDescription
       
  4876     \inmodule Phonon
       
  4877     \internal
       
  4878 */
       
  4879 
       
  4880 /*!
       
  4881     \typedef Phonon::SubtitleDescriptionModel
       
  4882     \inmodule Phonon
       
  4883     \internal
       
  4884 */
       
  4885 
       
  4886 /*!
       
  4887     \typedef Phonon::AudioChannelDescription
       
  4888     \inmodule Phonon
       
  4889     \internal
       
  4890 */
       
  4891 
       
  4892 /*!
       
  4893     \typedef Phonon::AudioChannelDescriptionModel
       
  4894     \inmodule Phonon
       
  4895     \internal
       
  4896 */
       
  4897 
       
  4898 /*!
       
  4899     \typedef Phonon::AudioCaptureDevice
       
  4900     \inmodule Phonon
       
  4901     \internal
       
  4902 */
       
  4903 
       
  4904 /*!
       
  4905     \typedef Phonon::AudioCaptureDeviceModel
       
  4906     \inmodule Phonon
       
  4907     \internal
       
  4908 */
       
  4909 
       
  4910 /*!
       
  4911     \typedef Phonon::CleanUpFunction
       
  4912     \inmodule Phonon
       
  4913     \internal
       
  4914 */
       
  4915 
       
  4916 /*!
       
  4917     \typedef Phonon::QObjectPair
       
  4918     \inmodule Phonon
       
  4919     \since 4.4
       
  4920     \internal
       
  4921 
       
  4922 */
       
  4923 
       
  4924 /*!
       
  4925     \typedef Phonon::AudioOutputDeviceModel
       
  4926     \inmodule Phonon
       
  4927     \brief provides an item view model containing available audio output devices.
       
  4928 
       
  4929 */
       
  4930 
       
  4931 /*!
       
  4932     \fn uint Phonon::qHash(const Phonon::EffectParameter &param)
       
  4933     \internal
       
  4934 
       
  4935 */
       
  4936 
       
  4937 /*!
       
  4938     \fn Phonon::CleanUpGlobalStatic::~CleanUpGlobalStatic()
       
  4939     \internal
       
  4940 */
       
  4941 
       
  4942 /*!
       
  4943     \class Phonon::ConstIface
       
  4944     \inmodule Phonon
       
  4945     \since 4.4
       
  4946     \internal
       
  4947 */
       
  4948 
       
  4949 /*!
       
  4950     \class Phonon::CleanUpGlobalStatic
       
  4951     \inmodule Phonon
       
  4952     \since 4.4
       
  4953     \internal
       
  4954 */
       
  4955 
       
  4956 /*!
       
  4957     \class Phonon::EffectParameterPrivate
       
  4958     \inmodule Phonon
       
  4959     \since 4.4
       
  4960     \internal
       
  4961 
       
  4962 */
       
  4963 
       
  4964 /*!
       
  4965     \class Phonon::QSettingsGroup
       
  4966     \inmodule Phonon
       
  4967     \since 4.4
       
  4968     \internal
       
  4969 
       
  4970 */
       
  4971 
       
  4972 /*!
       
  4973     \class Phonon::MediaNodeDestructionHandler
       
  4974     \inmodule Phonon
       
  4975     \since 4.4
       
  4976     \internal
       
  4977 
       
  4978 */
       
  4979 
       
  4980 /*!
       
  4981     \fn Phonon::MediaNodeDestructionHandler::~MediaNodeDestructionHandler()
       
  4982     \internal
       
  4983     Called from Base::~Base if this object was registered
       
  4984     using BasePrivate::addDestructionHandler().
       
  4985 */
       
  4986 
       
  4987 /*!
       
  4988     \fn Phonon::MediaNodeDestructionHandler::phononObjectDestroyed(MediaNodePrivate *)
       
  4989     \internal
       
  4990 */
       
  4991 
       
  4992 /*!
       
  4993     \fn explicit Phonon::EffectWidget::EffectWidget(Effect *effect, QWidget *parent = 0)
       
  4994     \internal
       
  4995 
       
  4996     Constructs a new EffectWidget for the specified \a effect and with
       
  4997     the specified \a parent.
       
  4998 */
       
  4999 
       
  5000 /*!
       
  5001     \fn Phonon::EffectWidget::~EffectWidget()
       
  5002     \internal
       
  5003 */
       
  5004 
       
  5005 /*!
       
  5006     \fn QDebug Phonon::operator<<(QDebug s, const ObjectDescription<T> &o)
       
  5007     \internal
       
  5008 */
       
  5009 
       
  5010 /*!
       
  5011     \class Phonon::ListModelHelper
       
  5012     \inmodule Phonon
       
  5013     \since 4.4
       
  5014     \internal
       
  5015 */
       
  5016 
       
  5017 /*!
       
  5018     \class AudioOutputInterface42
       
  5019     \inmodule Phonon
       
  5020     \since 4.4
       
  5021     \internal
       
  5022 */
       
  5023