source: trunk/doc/src/classes/phonon-api.qdoc@ 769

Last change on this file since 769 was 769, checked in by Dmitry A. Kuminov, 15 years ago

trunk: Merged in qt 4.6.3 sources from branches/vendor/nokia/qt.

  • Property svn:eol-style set to native
File size: 139.5 KB
Line 
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 \section1 Symbian Platform Security Requirements
1655
1656 On Symbian, processes which access media via the network must
1657 have the \c NetworkServices platform security capability. If the client
1658 process lacks this capability, operations will result in errors.
1659 This failure is indicated by a state() of Phonon::ErrorState.
1660
1661 Platform security capabilities are added via the
1662 \l{qmake-variable-reference.html#target-capability}{TARGET.CAPABILITY}
1663 qmake variable.
1664
1665 \sa Phonon::MediaSource, Phonon::AudioOutput, VideoWidget,
1666 {Music Player Example}, {Phonon Overview}, Phonon::VideoPlayer,
1667 Phonon::createPlayer(), {Phonon Module}
1668
1669*/
1670
1671/*!
1672 \property Phonon::MediaObject::transitionTime
1673 \brief Defines the time between playback of two media sources
1674 in the media queue.
1675
1676 A positive transition time defines a gap of silence between queued
1677 media sources.
1678
1679 A transition time of 0 ms requests gapless playback (i.e., the
1680 next source in the media queue starts immediately after the
1681 playback of the current source finishes).
1682
1683 A negative transition time defines a crossfade between the queued
1684 media sources.
1685
1686 Defaults to 0 (gapless playback).
1687
1688 \warning This feature might not work reliably with every
1689 backend.
1690*/
1691
1692/*!
1693 \property Phonon::MediaObject::prefinishMark
1694 \brief the time when the prefinishMarkReached signal is emitted before playback ends.
1695
1696 This property specifies the time in milliseconds the
1697 prefinishMarkReached() signal is emitted before the playback
1698 finishes. A value of \c 0 disables the signal. The signal is only
1699 emitted for the last source in the \l{queue()}{media queue}.
1700
1701 Defaults to \c 0 (disabled).
1702
1703 \warning For some media data the total time cannot be determined
1704 accurately, therefore the accuracy of the prefinishMarkReached signal
1705 can be bad sometimes. Still, it is better to use this method than to
1706 look at totalTime() and currentTime() to emulate the behavior
1707 because the backend might have more information available than your
1708 application does through totalTime() and currentTime().
1709
1710 \sa prefinishMarkReached()
1711*/
1712
1713/*!
1714 \property Phonon::MediaObject::tickInterval
1715 \brief The time interval in milliseconds between two ticks.
1716
1717 The tick() signal is emitted continuously during playback.
1718 The tick interval is the time that elapses between the emission of two tick signals.
1719 If you set the interval to \c 0 the tick signal gets disabled.
1720
1721 The tick() signal can, for instance, be used to update widgets
1722 that show the current position in the playback of a media source.
1723
1724 Defaults to \c 0 (disabled).
1725
1726 \warning The back-end is free to choose a different tick interval close
1727 to what you asked for. This means that the following code \c may fail:
1728 \snippet doc/src/snippets/code/doc_src_phonon-api.qdoc 9
1729 On the other hand the following is guaranteed:
1730 \snippet doc/src/snippets/code/doc_src_phonon-api.qdoc 10
1731
1732 \sa tick()
1733*/
1734
1735/*!
1736 \fn Phonon::MediaObject::~MediaObject()
1737
1738 Destroys the MediaObject.
1739*/
1740
1741/*!
1742 \fn State Phonon::MediaObject::state() const
1743
1744 Returns the current Phonon::State of the object.
1745
1746 \sa Phonon::State, stateChanged()
1747*/
1748
1749/*!
1750 \fn bool Phonon::MediaObject::hasVideo() const
1751
1752 Check whether the current media source includes a video stream.
1753
1754 \warning This information is not resolved immediately after a
1755 media object gets a new source. Listen to the hasVideoChanged()
1756 signal instead.
1757
1758 \snippet doc/src/snippets/code/doc_src_phonon-api.qdoc 11
1759
1760 Returns \c true if the media contains video data; otherwise,
1761 returns \c false.
1762
1763 \sa hasVideoChanged()
1764*/
1765
1766/*!
1767 \fn bool Phonon::MediaObject::isSeekable() const
1768
1769 Check whether it is possible to seek, i.e., change the
1770 playback position in the media stream.
1771
1772 \warning This information is not solved immediately after the
1773 media object gets a new media source. The hasVideoChanged() signal
1774 is emitted after this information is available.
1775
1776 \snippet doc/src/snippets/code/doc_src_phonon-api.qdoc 12
1777
1778 Returns \c true if the current media may be seeked; otherwise,
1779 returns \c false.
1780
1781 \sa seekableChanged()
1782*/
1783
1784/*!
1785 \fn QStringList Phonon::MediaObject::metaData(const QString &key) const
1786
1787 Returns the strings associated with the given \a key.
1788
1789 Backends should use the keys specified in the Ogg Vorbis
1790 documentation: \l http://xiph.org/vorbis/doc/v-comment.html
1791
1792 Therefore the following should work with every backend:
1793
1794 Note that meta data is not resolved before the \c
1795 metaDataChanged() signal is emitted.
1796
1797 A typical usage looks like this:
1798
1799 \snippet doc/src/snippets/code/doc_src_phonon-api.qdoc 13
1800*/
1801
1802/*!
1803 \fn QStringList Phonon::MediaObject::metaData(Phonon::MetaData key) const
1804
1805 Returns the strings associated with the given \a key.
1806
1807 Same as above except that the keys are defined in the
1808 Phonon::MetaData enum.
1809
1810 \sa metaDataChanged()
1811*/
1812
1813/*!
1814 \fn QMultiMap<QString, QString> Phonon::MediaObject::metaData() const
1815
1816 Returns all meta data in a multi map.
1817
1818 \sa metaDataChanged()
1819*/
1820
1821/*!
1822 \fn QString Phonon::MediaObject::errorString() const
1823
1824 Returns a human-readable description of the last error that occurred.
1825 The strings given may vary between backends.
1826
1827 The error description can be used to give a message to the user -
1828 and the developer - when the stateChanged() signal is emitted with
1829 \l{Phonon::}{ErrorState}.
1830
1831 \section1 Qt Backends
1832
1833 On Windows, Qt fetches its error messages from the DirectShow
1834 backend. This usually includes an error number, which can be
1835 looked up in the DirectShow documentation:
1836 \l{http://msdn.microsoft.com/archive/default.asp?url=/archive/en-us/dx81_c/directx_cpp/htm/errorandsuccesscodes.asp}.
1837
1838 On Linux and Mac, the error strings are not fetched directly from
1839 the backend, but are created in the backend.
1840
1841 \sa Phonon::ErrorState, stateChanged()
1842*/
1843
1844/*!
1845 \fn ErrorType Phonon::MediaObject::errorType() const
1846
1847 Tells your program what to do about the last error that occurred.
1848 Use this function after receiving a stateChanged() signal with
1849 \l{Phonon::}{ErrorState}.
1850
1851 \sa Phonon::ErrorType, Phonon::ErrorState, stateChanged()
1852*/
1853
1854/*!
1855 \fn MediaSource Phonon::MediaObject::currentSource() const
1856
1857 Returns the current media source, i.e., the media source that is
1858 being played back. The current source is either set with
1859 setCurrentSource() or taken from the media queue() when a media
1860 source has finished playing.
1861
1862 \sa setCurrentSource()
1863*/
1864
1865/*!
1866 \fn void Phonon::MediaObject::setCurrentSource(const MediaSource &source)
1867
1868 Set the media source the MediaObject should use.
1869
1870 After the media object receives a new source, it will enter the
1871 \l{Phonon::}{LoadingState}. When it is ready to play, it
1872 enters the \l{Phonon::}{StoppedState} unless another state
1873 has been requested, e.g., by calling play().
1874
1875 \a source is the MediaSource object to the media data. You can
1876 just as well use a QUrl or QString (for a local file) here.
1877
1878 We show an example:
1879
1880 \snippet doc/src/snippets/code/doc_src_phonon-api.qdoc 14
1881
1882 \sa currentSource(), MediaSource
1883*/
1884
1885/*!
1886 \fn QList<MediaSource> Phonon::MediaObject::queue() const
1887
1888 Returns the queued media sources.
1889
1890 This does list does not include the current source,
1891 returned by currentSource().
1892
1893 \sa enqueue()
1894*/
1895
1896/*!
1897 \fn void Phonon::MediaObject::setQueue(const QList<MediaSource> &sources)
1898
1899 Set the \a sources to play when the current source has finished.
1900
1901 This function will overwrite the current queue.
1902
1903 \sa clearQueue(), enqueue()
1904*/
1905
1906/*!
1907 \fn void Phonon::MediaObject::setQueue(const QList<QUrl> &urls)
1908
1909 Set the \a urls to play when the current media has finished.
1910
1911 This function overwrites the current queue.
1912
1913 \sa clearQueue(), enqueue()
1914*/
1915
1916/*!
1917 \fn void Phonon::MediaObject::enqueue(const MediaSource &source)
1918
1919 Appends \a source to the queue.
1920
1921 You can use this function to provide the next source after the
1922 aboutToFinish() signal has been emitted.
1923
1924 \sa aboutToFinish(), setQueue(), clearQueue()
1925*/
1926
1927/*!
1928 \fn void Phonon::MediaObject::enqueue(const QList<MediaSource> &sources)
1929
1930 Appends multiple \a sources to the queue.
1931
1932 \sa setQueue(), clearQueue()
1933*/
1934
1935/*!
1936 \fn void Phonon::MediaObject::enqueue(const QList<QUrl> &urls)
1937
1938 Appends the URLs in \a urls to the media source queue.
1939
1940 The function will create \l{MediaSource}s from the \l{QUrl}s, and
1941 append these to the queue.
1942
1943 \sa setQueue(), clearQueue()
1944*/
1945
1946/*!
1947 \fn void Phonon::MediaObject::clearQueue()
1948
1949 Clears the queue of media sources.
1950
1951 \sa queue(), enqueue()
1952*/
1953
1954/*!
1955 \fn qint64 Phonon::MediaObject::currentTime() const
1956
1957 Returns the current time (in milliseconds), i.e., position in the
1958 media stream, of the file currently being played.
1959
1960 \sa tick(), totalTime(), remainingTime()
1961*/
1962
1963/*!
1964 \fn qint64 Phonon::MediaObject::totalTime() const
1965
1966 Get the total time (in milliseconds) of the file currently being played.
1967
1968 Returns the total time in milliseconds.
1969
1970 \warning The total time is not defined before the media object
1971 enters the \l{Phonon::}{LoadingState}.
1972
1973 \sa totalTimeChanged()
1974*/
1975
1976/*!
1977 \fn qint64 Phonon::MediaObject::remainingTime() const
1978
1979 Get the remaining time (in milliseconds) of the file currently being played.
1980
1981 Returns the remaining time in milliseconds.
1982
1983 \sa totalTime(), currentTime(), totalTimeChanged()
1984*/
1985
1986/*!
1987 \fn void Phonon::MediaObject::play()
1988
1989 Requests playback of the media data to start.
1990
1991 Playback starts when the stateChanged() signal is emitted with
1992 \l{Phonon::}{PlayingState}.
1993
1994 If the media object is already in a
1995 \l{Phonon::}{PlayingState}, nothing happens.
1996
1997 \sa stop(), pause(), stateChanged()
1998*/
1999
2000/*!
2001 \fn void Phonon::MediaObject::pause()
2002
2003 Requests playback to pause, and the media object to enter the
2004 \l{Phonon::}{PausedState}. If it was paused already, nothing
2005 changes.
2006
2007 This function is asynchronous and the media might not be paused
2008 immediately.
2009
2010 \sa play(), stop(), stateChanged()
2011*/
2012
2013/*!
2014 \fn void Phonon::MediaObject::stop()
2015
2016 Requests playback to stop, and the media object to enter the
2017 \l{Phonon::}{StoppedState}. If it was stopped before
2018 nothing changes.
2019
2020 This function is asynchronous and the media might not be
2021 stopped immediately.
2022
2023 \sa play(), pause(), stateChanged()
2024*/
2025
2026/*!
2027 \fn void Phonon::MediaObject::seek(qint64 time)
2028
2029 Requests a seek to the \a time indicated, specified in milliseconds.
2030
2031 You can only seek if state() is PlayingState, BufferingState or PausedState.
2032
2033 The call is asynchronous, so currentTime can still be the old
2034 value right after this method was called. If all you need is a
2035 slider that shows the current position and allows the user to
2036 seek, use the class SeekSlider.
2037
2038 If the current source of the media object is not seekable, calls
2039 to this functions do nothing.
2040
2041 \sa SeekSlider, tick()
2042*/
2043
2044/*!
2045 \fn void Phonon::MediaObject::clear()
2046
2047 Stops and removes all playing and enqueued media sources.
2048
2049 \sa setCurrentSource()
2050*/
2051
2052
2053/*!
2054 \fn void Phonon::MediaObject::stateChanged(Phonon::State newstate, Phonon::State oldstate)
2055
2056 This signal is emitted when the state of the MediaObject has changed.
2057 The \a oldstate and \a newstate parameters indicate the previous
2058 state and current state of the media object.
2059
2060 If you are only interested in the new state of the media object, you can
2061 connect this signal to a slot that accepts only one State argument.
2062*/
2063
2064/*!
2065 \fn void Phonon::MediaObject::tick(qint64 time)
2066
2067 This signal is emitted in intervals defined by the
2068 \l{tickInterval} property. The current position of the media
2069 object in the stream is given by the \a time parameter. The \a
2070 time is specified in milliseconds.
2071
2072 \sa tickInterval
2073*/
2074
2075/*!
2076 \fn void Phonon::MediaObject::metaDataChanged()
2077
2078 This signal is emitted when the media object has resolved new meta
2079 data. This will happen before the media object leaves the
2080 \l{Phonon::}{LoadingState} after a new source has been set.
2081
2082 This signal is not emitted when the media object removes the
2083 current data, i.e., when a new source is set or an error has
2084 occurred. If you need to know this, you can listen for the
2085 \l{Phonon::}{ErrorState}, and connect to the
2086 \l{Phonon::MediaObject::}{currentSourceChanged()} signal.
2087
2088 You can get the new meta data with the metaData methods.
2089
2090 \sa metaData(), currentSourceChanged(), stateChanged(), Phonon::State
2091*/
2092
2093/*!
2094 \fn void Phonon::MediaObject::seekableChanged(bool isSeekable)
2095
2096 This signal is emitted when the media object's ability to seek in
2097 the media stream changes. \a isSeekable is true if it is possible
2098 to seek(); otherwise, it is false.
2099
2100 Change in the ability to seek in the stream usually happens when
2101 the current source changes or when an error occurs.
2102
2103 \omit Emitted whenever the return value of isSeekable()
2104 changes. \endomit
2105
2106 Normally you'll check isSeekable() after setting a new media
2107 source, and then let this signal tell you when seeking is
2108 possible. That way you don't have to poll isSeekable().
2109*/
2110
2111/*!
2112 \fn void Phonon::MediaObject::hasVideoChanged(bool hasVideo)
2113
2114 Emitted whenever the return value of hasVideo() changes, i.e.,
2115 the media source being played back contains video.
2116
2117 Normally you'll check hasVideo() first and then let this signal
2118 tell you whether video is available now or not. That way you
2119 don't have to poll hasVideo().
2120
2121 \a hasVideo is true when the stream contains video and adding a
2122 VideoWidget will show a video, and false if there is no video data
2123 in the stream and adding a VideoWidget will show an empty (black)
2124 VideoWidget.
2125*/
2126
2127/*!
2128 \fn void Phonon::MediaObject::bufferStatus(int percentFilled)
2129
2130 Provides information about the status of the buffer.
2131
2132 When a MediaObject is in the \l{Phonon::}{BufferingState}, it will
2133 send this signal regularly. \a percentFilled is a number between 0
2134 and 100 telling you how much the buffer is filled.
2135
2136 You can use this signal to show a progress bar to the user when
2137 in BufferingState:
2138
2139 \snippet doc/src/snippets/code/doc_src_phonon-api.qdoc 15
2140
2141 Note that the \l{Phonon::}{BufferingState} is commonly used when
2142 waiting for data over a network connection, but this might not be
2143 true for all backends.
2144*/
2145
2146/*!
2147 \fn void Phonon::MediaObject::finished()
2148
2149 Emitted when the object has finished playback. It is not emitted
2150 if you call stop(), pause() or load(). It is emitted only when the
2151 current media source has finished playing and the media queue() is
2152 empty, or when a \l{Phonon::FatalError}{fatal error} occurs.
2153
2154 \warning This signal is not emitted when the current source has
2155 finished and there's another source in the queue. It is only
2156 emitted when the queue is empty.
2157
2158 \sa currentSourceChanged(), aboutToFinish(), prefinishMarkReached()
2159*/
2160
2161/*!
2162 \fn void Phonon::MediaObject::currentSourceChanged(const Phonon::MediaSource &newSource)
2163
2164 Emitted when the MediaObject fetches a new MediaSource from the
2165 queue() and before it enters the \l{Phonon::}{LoadingState} for
2166 the new source. The media object will take a new source from the
2167 queue() when it has finished the playback of the
2168 \l{currentSource()}{current source}.
2169
2170 \a newSource is the source that starts to play at the time the
2171 signal is emitted.
2172*/
2173
2174/*!
2175 \fn void Phonon::MediaObject::aboutToFinish()
2176
2177 Emitted before the playback of the whole queue ends. When this
2178 signal is emitted you still have time to enqueue() a new
2179 MediaSource, so that playback continues.
2180
2181 If you need a signal to be emitted at a specific time before
2182 playback is finished, you should use the prefinishMarkReached()
2183 signal instead.
2184
2185 \sa enqueue(), prefinishMark, prefinishMarkReached()
2186*/
2187
2188/*!
2189 \fn void Phonon::MediaObject::prefinishMarkReached(qint32 msecToEnd)
2190
2191 Emitted when there are only \a msecToEnd milliseconds left
2192 of playback.
2193
2194 \warning This signal is not emitted when there is another source
2195 in the queue. It is only emitted when the queue is empty.
2196
2197 \sa setPrefinishMark(), prefinishMark(), aboutToFinish(), finished()
2198*/
2199
2200/*!
2201 \fn void Phonon::MediaObject::totalTimeChanged(qint64 newTotalTime)
2202
2203 This signal is emitted as soon as the total time of the media file is
2204 known or has changed. For most non-local media data the total
2205 time of the media can only be known after some time. At that time the
2206 totalTime function can not return useful information. You have
2207 to wait for this signal to know the real total time.
2208
2209 \a newTotalTime is the length of the media file in milliseconds.
2210
2211 \sa totalTime()
2212*/
2213
2214/*!
2215 \fn MediaObject *Phonon::createPlayer(Phonon::Category category, const MediaSource &source = MediaSource())
2216
2217 Convenience function to create a MediaObject and AudioOutput
2218 connected by a path. The \l{Phonon::}{MediaObject} return will
2219 have \a source set as its current source and the specified \a
2220 category.
2221
2222*/
2223
2224/*!
2225 \class Phonon::MediaObjectPrivate
2226 \inmodule Phonon
2227 \since 4.4
2228 \internal
2229*/
2230
2231/*!
2232 \namespace Phonon::BackendCapabilities
2233 \inmodule Phonon
2234 \since 4.4
2235 \brief The BackendCapabilities namespace contains functions to describe the capabilities of the multimedia backend.
2236
2237*/
2238
2239/*!
2240 \class Phonon::BackendCapabilitiesPrivate
2241 \inmodule Phonon
2242 \since 4.4
2243 \internal
2244*/
2245
2246/*!
2247 \class Phonon::BackendCapabilities::Notifier
2248 \since 4.4
2249 \inmodule Phonon
2250 \inheaderfile Phonon/BackendCapabilities
2251
2252 Notifications about backend capabilities.
2253*/
2254
2255/*!
2256 \fn void Phonon::BackendCapabilities::Notifier::capabilitiesChanged()
2257
2258 This signal is emitted if the capabilities have changed. This can
2259 happen if the user has requested a backend change.
2260*/
2261
2262/*!
2263 \fn void Phonon::BackendCapabilities::Notifier::availableAudioOutputDevicesChanged()
2264
2265 This signal is emitted when audio output devices were plugged or
2266 unplugged.
2267
2268 Check BackendCapabilities::availableAudioOutputDevices to get the
2269 current list of available devices.
2270*/
2271
2272/*!
2273 \fn Notifier *Phonon::BackendCapabilities::notifier()
2274
2275 Use this function to get a QObject pointer to connect to the capabilitiesChanged signal.
2276
2277 \return a pointer to a QObject.
2278
2279 The capabilitiesChanged signal is emitted if the capabilities have changed. This can
2280 happen if the user has requested a backend change.
2281
2282 To connect to this signal do the following:
2283 \snippet doc/src/snippets/code/doc_src_phonon-api.qdoc 16
2284
2285 \sa Notifier::capabilitiesChanged()
2286*/
2287
2288/*!
2289 \fn QStringList Phonon::BackendCapabilities::availableMimeTypes()
2290
2291 Returns a list of mime types that the Backend can decode.
2292
2293 \sa isMimeTypeAvailable()
2294*/
2295
2296/*!
2297 \fn bool Phonon::BackendCapabilities::isMimeTypeAvailable(const QString &mimeType)
2298
2299 Often all you want to know is whether one given MIME type can be
2300 decoded by the backend. Use this method in favor of
2301 availableMimeTypes() as it can give you a negative answer without
2302 having a backend loaded.
2303
2304 Returns true if the given \a mimeType is supported by the backend;
2305 otherwise, returns false.
2306
2307 \sa availableMimeTypes()
2308*/
2309
2310/*!
2311 \fn QList<AudioOutputDevice> Phonon::BackendCapabilities::availableAudioOutputDevices()
2312
2313 Returns the audio output devices the backend supports.
2314
2315 \return A list of AudioOutputDevice objects that give a name and
2316 description for every supported audio output device.
2317*/
2318
2319/*!
2320 \fn QList<EffectDescription> Phonon::BackendCapabilities::availableAudioEffects()
2321
2322 Returns descriptions for the audio effects the backend supports.
2323
2324 \return A list of AudioEffectDescription objects that give a name and
2325 description for every supported audio effect.
2326*/
2327
2328/*!
2329 \internal
2330 \class ObjectDescriptionModelData
2331 \internal
2332 \inmodule Phonon
2333 \brief Data class for models for ObjectDescription objects.
2334*/
2335
2336/*!
2337 \typedef Phonon::EffectDescription
2338 \relates Phonon::ObjectDescription
2339
2340 EffectDescription gives a description of an \l{Processors}{audio
2341 effect}. It is a typedef of the \l{Phonon::}{ObjectDescription}
2342 class. Please see its class description for details.
2343
2344 EffectDescription is used to create audio \l{Phonon::}{Effect}s,
2345 which can be inserted into a media graph, altering an audio
2346 stream.
2347
2348 \sa Phonon::ObjectDescription, {Capabilities Example}, {Media
2349 Player}
2350
2351*/
2352
2353/*!
2354 \class Phonon::ObjectDescriptionModel
2355 \inmodule Phonon
2356 \internal
2357 \since 4.4
2358 \brief The ObjectDescriptionModel class provides a model from
2359 a list of ObjectDescription objects.
2360
2361 ObjectDescriptionModel is a read only model that supplies a list
2362 using ObjectDescription::name() for the text and
2363 ObjectDescription::description() for the tooltip. If set the properties
2364 "icon" and "available" are used to set the decoration and disable the
2365 item (disabled only visually, you can still select and drag it).
2366
2367 It also provides the methods moveUp() and moveDown() to order the list.
2368 Additionally drag and drop is possible so that
2369 QAbstractItemView::InternalMove can be used.
2370 The resulting order of the ObjectDescription::index() values can then be
2371 retrieved using tupleIndexOrder().
2372
2373 An example use case would be to give the user a QComboBox to select
2374 the output device:
2375 \snippet doc/src/snippets/code/doc_src_phonon-api.qdoc 17
2376
2377 And to retrieve the selected AudioOutputDevice:
2378 \snippet doc/src/snippets/code/doc_src_phonon-api.qdoc 18
2379
2380*/
2381
2382/*!
2383 \fn inline int Phonon::ObjectDescriptionModel::rowCount(const QModelIndex &parent = QModelIndex()) const
2384
2385 Returns the number of rows in the model. This value corresponds
2386 to the size of the list passed through setModelData.
2387
2388 \param parent The optional \a parent argument is used in most models to specify
2389 the parent of the rows to be counted. Because this is a list if a
2390 valid parent is specified the result will always be 0.
2391
2392 Reimplemented from QAbstractItemModel.
2393
2394 \sa QAbstractItemModel::rowCount()
2395*/
2396
2397/*!
2398 \fn inline QVariant Phonon::ObjectDescriptionModel::data(const QModelIndex &index, int role = Qt::DisplayRole) const
2399
2400 Returns data from the item with the given \a index for the specified
2401 \a role.
2402 If the view requests an invalid index, an invalid variant is
2403 returned.
2404
2405 Reimplemented from QAbstractItemModel.
2406
2407 \sa QAbstractItemModel::data(), Qt::ItemDataRole
2408*/
2409
2410/*!
2411 \fn inline Qt::ItemFlags Phonon::ObjectDescriptionModel::flags(const QModelIndex &index) const
2412 \internal
2413
2414 Reimplemented to show unavailable devices as disabled (but still
2415 selectable). The \a index of the model index for which to return
2416 flags.
2417
2418*/
2419
2420/*!
2421 \fn inline QList<int> Phonon::ObjectDescriptionModel::tupleIndexOrder() const
2422
2423 Returns a list of indexes in the same order as they are in the
2424 model. The indexes come from the ObjectDescription::index
2425 method.
2426
2427 This is useful to let the user define a list of preference.
2428*/
2429
2430/*!
2431 \fn inline int Phonon::ObjectDescriptionModel::tupleIndexAtPositionIndex(int positionIndex) const
2432
2433 Returns the ObjectDescription::index for the tuple
2434 at the given position \a positionIndex. For example a
2435 QComboBox will give you the currentIndex as the
2436 position in the list. But to select the according
2437 AudioOutputDevice using AudioOutputDevice::fromIndex
2438 you can use this method.
2439
2440 \param positionIndex The position in the list.
2441*/
2442
2443/*!
2444 \class Phonon::ObjectDescriptionModelDataPrivate
2445 \inmodule Phonon
2446 \since 4.4
2447 \internal
2448*/
2449
2450/*!
2451 \fn inline QMimeData *Phonon::ObjectDescriptionModel::mimeData(const QModelIndexList &indexes) const
2452 \internal
2453
2454 Returns the MIME data that dropMimeData() can use to create new
2455 items.
2456*/
2457
2458/*!
2459 \fn inline void Phonon::ObjectDescriptionModel::moveUp(const QModelIndex &index)
2460
2461 Moves the item at the given \a index up. In the resulting list
2462 the items at index.row() and index.row() - 1 are swapped.
2463
2464 Connected views are updated automatically.
2465*/
2466
2467/*!
2468 \fn inline void Phonon::ObjectDescriptionModel::moveDown(const QModelIndex &index)
2469
2470 Moves the item at the given \a index down. In the resulting list
2471 the items at index.row() and index.row() + 1 are swapped.
2472
2473 Connected views are updated automatically.
2474*/
2475
2476/*!
2477 \fn explicit inline Phonon::ObjectDescriptionModel::ObjectDescriptionModel(QObject *parent = 0)
2478
2479 Constructs a ObjectDescription model with the
2480 given \a parent.
2481*/
2482
2483/*!
2484 \fn explicit inline Phonon::ObjectDescriptionModel::ObjectDescriptionModel(const QList<ObjectDescription<type> > &data, QObject *parent = 0)
2485
2486 Constructs a ObjectDescription model with the
2487 given \a parent and the given \a data.
2488*/
2489
2490/*!
2491 \fn inline void Phonon::ObjectDescriptionModel::setModelData(const QList<ObjectDescription<type> > &data)
2492
2493 Sets the model data using the list provided by \a data.
2494
2495 All previous model data is cleared.
2496*/
2497
2498/*!
2499 \fn inline QList<ObjectDescription<type> > Phonon::ObjectDescriptionModel::modelData() const
2500
2501 Returns the model data.
2502
2503 As the order of the list might have changed this can be different
2504 to what was set using setModelData().
2505*/
2506
2507/*!
2508 \fn inline ObjectDescription<type> Phonon::ObjectDescriptionModel::modelData(const QModelIndex &index) const
2509
2510 Returns one ObjectDescription of the model data for the given \a index.
2511*/
2512
2513/*!
2514 \fn inline Qt::DropActions Phonon::ObjectDescriptionModel::supportedDropActions() const
2515
2516 This model supports drag and drop to copy or move
2517 items.
2518*/
2519
2520/*!
2521 \fn inline bool Phonon::ObjectDescriptionModel::dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent)
2522
2523 Accept drops from other models of the same ObjectDescriptionType.
2524
2525 The \a data is dropped at the given \a row and \a column; you
2526 also receive the \a parent model index.
2527
2528 If a valid \a parent is given the dropped items will be inserted
2529 above that item.
2530*/
2531
2532/*!
2533 \fn inline bool Phonon::ObjectDescriptionModel::removeRows(int row, int count, const QModelIndex &parent = QModelIndex())
2534
2535 Removes count rows starting with the given row.
2536
2537 If a valid \a parent is given no rows are removed since this is a
2538 list model.
2539
2540 Returns true if the rows were successfully removed; otherwise returns false.
2541*/
2542
2543/*!
2544 \fn inline QStringList Phonon::ObjectDescriptionModel::mimeTypes() const
2545
2546 Returns a list of supported drag and drop MIME types. Currently
2547 it only supports one type used internally.
2548*/
2549
2550/*!
2551 \class Phonon::EffectInterface
2552 \inmodule Phonon
2553 \since 4.4
2554 \internal
2555*/
2556
2557/*!
2558 \class Phonon::Effect
2559 \inmodule Phonon
2560 \inheaderfile Phonon/Effect
2561 \since 4.4
2562 \brief The Effect class is used to transform audio streams.
2563
2564 An effect is a media node which is inserted into a path between a
2565 \l{Phonon::}{MediaObject} and an audio output node, for instance,
2566 an \l{Phonon::}{AudioOutput}. The Effect transforms the media
2567 stream on that path.
2568
2569 Examples may include simple modifiers, such as fading or pitch
2570 shifting, and more complex mathematical transformations. You can
2571 query the backend for available effects with
2572 BackendCapabilities::availableAudioEffects(). Note that the
2573 effects available is dependent on the underlying system
2574 (DirectDraw, GStreamer, or QuickTime).
2575
2576 In order to use an effect, insert it into the path as follows:
2577
2578 \snippet doc/src/snippets/code/doc_src_phonon-api.qdoc 19
2579
2580 The effect will immediately begin applying it's transformations on
2581 the path. To stop it, remove the Effect from the path.
2582
2583 To create an effect, you use the \l{Phonon::}{EffectDescription}
2584 class, which you get from
2585 \l{BackendCapabilities::}{availableAudioEffects()}. We give a code
2586 example below.
2587
2588 \snippet doc/src/snippets/audioeffects.cpp 0
2589
2590 An effect can have one or more parameters, which let you alter how
2591 the effect works, for instance, by specifying the depth of a
2592 reverb effect. See the EffectParameter class description for
2593 details.
2594
2595 Phonon also provides EffectWidget, which lets the user modify the
2596 parameters of an effect an the fly; e.g., with combo boxes.
2597
2598 \sa {Phonon Module}, EffectWidget
2599*/
2600
2601/*!
2602 \fn explicit Phonon::Effect::Effect(const EffectDescription &description, QObject *parent = 0)
2603
2604 Constructs a new effect object with the given \a description and \a parent object.
2605
2606 The EffectDescription object determines the type of the effect.
2607
2608 \sa {Phonon::BackendCapabilities::availableAudioEffects()}
2609*/
2610
2611/*!
2612 \fn Phonon::Effect::Effect(EffectPrivate &dd, QObject *parent)
2613 \internal
2614*/
2615
2616/*!
2617 \fn Phonon::Effect::~Effect()
2618 \internal
2619*/
2620
2621/*!
2622 \fn QVariant Phonon::Effect::parameterValue(const EffectParameter &parameter) const
2623
2624 Returns the value of the given effect \a parameter. You can fetch
2625 the available parameters for an effect with parameters().
2626
2627 \sa setParameterValue(), EffectParameter
2628*/
2629
2630/*!
2631 \fn void Phonon::Effect::setParameterValue(const EffectParameter &parameter, const QVariant &value)
2632
2633 Sets the given effect \a parameter to the specified \a value.
2634
2635 Parameters for an effect are returned by parameters(). You can
2636 check which QVariant::Type an EffectParameter takes with the
2637 EffectParameter::type() function.
2638
2639 \sa parameterValue(), EffectParameter
2640*/
2641
2642/*!
2643 \fn EffectDescription Phonon::Effect::description() const;
2644
2645 Returns the description of this effect. This is the same
2646 description that was passed to the constructor.
2647*/
2648
2649/*!
2650 \fn QList<EffectParameter> Phonon::Effect::parameters() const;
2651
2652 Returns a list of parameters that this effect provides to control
2653 its behavior.
2654
2655 \sa EffectParameter, EffectWidget
2656*/
2657
2658/*!
2659 \class Phonon::EffectPrivate
2660 \inmodule Phonon
2661 \since 4.4
2662 \internal
2663*/
2664
2665/*!
2666 \class Phonon::AudioOutput
2667 \inmodule Phonon
2668 \inheaderfile Phonon/AudioOutput
2669 \since 4.4
2670 \brief The AudioOutput class is used to send data to audio output devices.
2671
2672 The AudioOutput class plays sound over a sound device. The audio
2673 output needs to be connected to a \l{Phonon::}{MediaObject} using
2674 \l{Phonon::}{createPath()}. To start playback, you call
2675 \l{Phonon::MediaObject::}{play()} on the media object.
2676
2677 \snippet snippets/phonon.cpp 2
2678
2679 The class supports changing the volume(). It is also possible to
2680 mute the sound.
2681
2682 To find out what \l{Phonon::}{AudioOutputDevice}s are available
2683 for AudioOutput, you can call
2684 BackendCapabilities::availableAudioOutputDevices(). A default device is
2685 selected by the backend, but it is possible to set the device to
2686 be used with setOutputDevice(). The outputDeviceChanged() signal
2687 will be emitted if the device changes.
2688
2689 If an error occurs with the playback, for instance, if no valid
2690 output device is found, the media object will receive a
2691 stateChanged() signal with the \l{Phonon::}{ErrorState}.
2692
2693 Note that the default values of properties are dependent on the
2694 backend.
2695
2696 \sa Phonon::VolumeSlider, {Music Player Example}, BackendCapabilities, {Phonon Module}
2697*/
2698
2699/*!
2700 \property Phonon::AudioOutput::name
2701
2702 This is the name that appears in Mixer applications that control
2703 the volume of this output.
2704
2705*/
2706
2707/*!
2708 \property Phonon::AudioOutput::volume
2709
2710 This is the current loudness of the output. \omit The volume is a
2711 real value between 0.0 (minimum) and 1.0 (maximum). The volume
2712 follows the sound device used, with 1.0 being the maximum volume
2713 the device can produce. \endomit
2714
2715 (it is using Stevens' law
2716 to calculate the change in voltage internally).
2717
2718 \sa volumeDecibel
2719*/
2720
2721/*!
2722 \property Phonon::AudioOutput::volumeDecibel
2723
2724 This is the current volume of the output in decibel.
2725
2726 0 dB means no change in volume, -6dB means an attenuation of the
2727 voltage to 50% and an attenuation of the power to 25%, -inf dB means
2728 silence.
2729
2730 \sa volume
2731*/
2732
2733/*!
2734 \property Phonon::AudioOutput::outputDevice
2735 This property holds the (hardware) destination for the output.
2736
2737 The default device is determined by the \l{Phonon::}{Category} and the global
2738 configuration for that category. Normally you don't need
2739 to override this setting - letting the user change the global
2740 configuration is the right choice. You can still override the
2741 device though, if you have good reasons to do so.
2742
2743 \sa outputDeviceChanged()
2744*/
2745
2746/*!
2747 \property Phonon::AudioOutput::muted
2748 This property tells whether the output is muted.
2749
2750 Muting the output has the same effect as calling setVolume(0.0).
2751*/
2752
2753/*!
2754 \fn explicit Phonon::AudioOutput::AudioOutput(Phonon::Category category, QObject *parent = 0)
2755
2756 Creates a new AudioOutput with the given \a parent that defines
2757 output to a physical device.
2758
2759 The \a category can be used by mixer applications to group volume
2760 controls of applications into categories. That makes it easier for
2761 the user to identify the programs.
2762 The category is also used for the default output device that is
2763 configured centrally. As an example: often users want to have the
2764 audio signal of a VoIP application go to their USB headset while
2765 all other sounds should go to the internal soundcard.
2766
2767 \sa Phonon::categoryToString(), outputDevice
2768*/
2769
2770/*!
2771 \fn explicit Phonon::AudioOutput::AudioOutput(QObject *parent = 0)
2772
2773 Creates a new AudioOutput that defines output to the system
2774 default device with the \{Phonon::Category::}{NoCategory} category
2775
2776 \sa Phonon::categoryToString(), outputDevice
2777*/
2778
2779/*!
2780 \fn Phonon::Category Phonon::AudioOutput::category() const
2781
2782 Returns the category of this output.
2783
2784 \sa Phonon::AudioOutput::AudioOutput()
2785*/
2786
2787/*!
2788 \fn void Phonon::AudioOutput::volumeChanged(qreal newVolume)
2789
2790 This signal is emitted whenever the volume has changed. As the
2791 volume can change without a call to setVolume (calls over dbus)
2792 this is important to keep a widget showing the current volume up
2793 to date.
2794
2795 \a newVolume is the new volume level.
2796
2797 \sa setVolume(), volume()
2798*/
2799
2800/*!
2801 \fn void Phonon::AudioOutput::mutedChanged(bool muted)
2802
2803 This signal is emitted when the muted property has changed. The \a muted
2804 value passed by the signal indicates the state of the muted property.
2805 As this property can change by IPC (DBus) calls a UI element showing
2806 the muted property should listen to this signal.
2807*/
2808
2809/*!
2810 \fn void Phonon::AudioOutput::outputDeviceChanged(const Phonon::AudioOutputDevice &newAudioOutputDevice)
2811
2812 This signal is emitted when the (hardware) device for the output
2813 has changed. \a newAudioOutputDevice is the new device.
2814
2815 The change can happen either through setOutputDevice or if the
2816 global configuration for the used category has changed.
2817
2818 \sa outputDevice
2819*/
2820
2821/*!
2822 \class Phonon::AudioOutputPrivate
2823 \inmodule Phonon
2824 \since 4.4
2825 \internal
2826*/
2827
2828/*!
2829 \class Phonon::EffectParameter
2830 \inmodule Phonon
2831 \inheaderfile Phonon/EffectParameter
2832 \since 4.4
2833 \brief The EffectParameter class describes one parameter of an effect.
2834
2835 You fetch the parameters of an \l{Phonon::}{Effect} with
2836 \l{Phonon::}{Effect::parameters()}.
2837
2838 \snippet doc/src/snippets/phononeffectparameter.cpp 0
2839
2840 To describe itself, an effect parameter gives a name() and
2841 possibly description() (depending on the backend used). These are
2842 suited to present the effect parameter to the user of a Phonon
2843 application.
2844
2845 Note that effects are created by the backend, and that
2846 their name and descriptions may vary.
2847
2848 The value of an effect parameter is stored in a \l{QVariant},
2849 of which type() is usually \c int or \c double.
2850
2851 The value is retrieved with \l{Phonon::}{Effect::parameterValue()}
2852 and set with \l{Phonon::Effect::}{setParameterValue()} - both of
2853 which takes the EffectParameter as argument. Note that not all
2854 effect parameters support setting of their value.
2855
2856 You get the values a parameter can take with possibleValues(); an
2857 empty list is returned if the values are continuous.
2858
2859 A parameter may also specify default(), minimum(), and maximum()
2860 values. Values are returned as \l{QVariant}s. If the parameter
2861 does not have the requested value, an \l{QVariant::Invalid}
2862 invalid QVariant is returned from these functions.
2863
2864 The \l{Phonon::}{EffectWidget} provides a widget with which one
2865 can control the parameters of an \l{Phonon::}{Effect}.
2866
2867 \snippet doc/src/snippets/phononeffectparameter.cpp 1
2868
2869 \sa Effect, EffectWidget, {Capabilities Example}, {Phonon Module}
2870*/
2871
2872/*!
2873 \fn Phonon::EffectParameter::EffectParameter()
2874 \internal
2875
2876 Creates an invalid effect parameter.
2877*/
2878
2879/*!
2880 \fn Phonon::EffectParameter::~EffectParameter()
2881
2882 Destroys the effect parameter.
2883*/
2884
2885/*!
2886 \fn Phonon::EffectParameter::EffectParameter(const EffectParameter &other)
2887
2888 Constructs a copy of the \a other effect parameter.
2889*/
2890
2891/*!
2892 \fn const QString &Phonon::EffectParameter::name() const
2893
2894 The name of the parameter. Can be used as the label.
2895
2896 \return A label for the parameter.
2897*/
2898
2899/*!
2900 \fn const QString &Phonon::EffectParameter::description() const
2901
2902 The parameter may come with a description (LADSPA doesn't have a
2903 field for this, so don't expect many effects to provide a
2904 description).
2905
2906 The description can be used for a tooltip or WhatsThis help.
2907
2908 \return A text describing the parameter.
2909*/
2910
2911/*!
2912 \fn QVariant::Type Phonon::EffectParameter::type() const
2913
2914 Returns the parameter type.
2915
2916 Common types are QVariant::Int, QVariant::Double, QVariant::Bool and QVariant::String. When
2917 QVariant::String is returned you get the possible values from possibleValues.
2918*/
2919
2920/*!
2921 \fn bool Phonon::EffectParameter::isLogarithmicControl() const
2922
2923 Returns whether the parameter should be
2924 displayed using a logarithmic scale. This is particularly useful for
2925 frequencies and gains.
2926*/
2927
2928/*!
2929 \fn QVariant Phonon::EffectParameter::minimumValue() const
2930
2931 The minimum value to be used for the control to edit the parameter.
2932
2933 If the returned QVariant is invalid the value is not bounded from
2934 below.
2935*/
2936
2937/*!
2938 \fn QVariant Phonon::EffectParameter::maximumValue() const
2939
2940 The maximum value to be used for the control to edit the parameter.
2941
2942 If the returned QVariant is invalid the value is not bounded from
2943 above.
2944*/
2945
2946/*!
2947 \fn QVariant Phonon::EffectParameter::defaultValue() const
2948
2949 The default value.
2950*/
2951
2952/*!
2953 \fn QVariantList Phonon::EffectParameter::possibleValues() const
2954
2955 The possible values to be used for the control to edit the parameter.
2956
2957 if the value of this parameter is to be picked from predefined values
2958 this returns the list (otherwise it returns an empty QVariantList).
2959*/
2960
2961/*!
2962 \fn bool Phonon::EffectParameter::operator<(const EffectParameter &rhs) const
2963
2964 \internal
2965 compares the ids of the parameters
2966*/
2967
2968/*!
2969 \fn bool Phonon::EffectParameter::operator>(const EffectParameter &rhs) const
2970
2971 \internal
2972 compares the ids of the parameters
2973*/
2974
2975/*!
2976 \fn bool Phonon::EffectParameter::operator==(const EffectParameter &rhs) const
2977
2978 \internal
2979 compares the ids of the parameters
2980*/
2981
2982/*!
2983 \fn Phonon::EffectParameter &Phonon::EffectParameter::operator=(const EffectParameter &other)
2984
2985 Assigns the \a other effect parameter to this parameter and returns
2986 a reference to this parameter.
2987*/
2988
2989/*!
2990 \enum Phonon::EffectParameter::Hint
2991
2992 Only for backend developers:
2993
2994 Flags to set the return values of isToggleControl(),
2995 isLogarithmicControl(), isIntegerControl(), isBoundedBelow() and
2996 isBoundedAbove(). The values of the flags correspond to the values
2997 used for LADSPA effects.
2998
2999 \value ToggledHint
3000 If this hint is set it means that
3001 the control has only two states: zero and non-zero
3002 (see isToggleControl()).
3003
3004 \value LogarithmicHint
3005 LADSPA's SAMPLE_RATE hint needs to be translated by the backend
3006 to normal bounds, as the backend knows the sample rate - and the
3007 frontend doesn't (see isLogarithmicControl()).
3008
3009 \value IntegerHint See isIntegerControl().
3010*/
3011
3012/*!
3013 \fn Phonon::EffectParameter::EffectParameter(int parameterId,
3014 const QString &name, EffectParameter::Hints hints,
3015 const QVariant &defaultValue, const QVariant &min = QVariant(),
3016 const QVariant &max = QVariant(), const QVariantList &values = QVariantList(),
3017 const QString &description = QString())
3018
3019 Only to be used by backend implementations:
3020
3021 Creates a new effect parameter.
3022
3023 \a parameterId This is a number to uniquely identify the
3024 parameter. The id is used for value() and setValue().
3025
3026 \a name is the name/label for this parameter.
3027
3028 \a hints sets the hints for the type of parameter.
3029
3030 \a defaultValue The value that should be used as a default.
3031
3032 \a min is the minimum value allowed for this parameter. You only
3033 need to set this if the BoundedBelowHint is set.
3034
3035 \a max is the maximum value allowed for this parameter. You only
3036 need to set this if the BoundedAboveHint is set.
3037
3038 The \a values parameter is the values that the effect parameter
3039 can take (only applies if non-continuous)
3040
3041 \a description is a descriptive text for the parameter
3042 (explaining what it controls) to be used as a tooltip or
3043 WhatsThis help.
3044*/
3045
3046/*!
3047 \fn int Phonon::EffectParameter::id() const
3048
3049 \internal
3050
3051 Returns the parameter's identifier.
3052*/
3053
3054/*!
3055 \typedef Phonon::AudioOutputInterface
3056 \inmodule Phonon
3057 \internal
3058*/
3059
3060/*!
3061 \class Phonon::AudioOutputInterface40
3062 \inmodule Phonon
3063 \since 4.4
3064 \internal
3065 \brief Interface for AudioOutput objects
3066
3067*/
3068
3069/*!
3070 \fn virtual Phonon::AudioOutputInterface40::~AudioOutputInterface40()
3071 \internal
3072*/
3073
3074/*!
3075 \fn virtual qreal Phonon::AudioOutputInterface40::volume() const = 0
3076 \internal
3077*/
3078
3079/*!
3080 \fn virtual void Phonon::AudioOutputInterface40::setVolume(qreal) = 0
3081 \internal
3082*/
3083
3084/*!
3085 \fn virtual int Phonon::AudioOutputInterface40::outputDevice() const = 0
3086 \internal
3087*/
3088
3089/*!
3090 \fn virtual bool Phonon::AudioOutputInterface40::setOutputDevice(int) = 0
3091 \internal
3092*/
3093
3094/*!
3095 \class Phonon::Path
3096 \inmodule Phonon
3097 \inheaderfile Phonon/Path
3098 \since 4.4
3099 \brief The Path class describes connections between media nodes.
3100
3101 In a \l{Building Graphs}{media graph}, \l{Phonon::}{MediaNode}s
3102 are connected by Paths. The multimedia travels in streams over
3103 these paths.
3104
3105 You create a path between two media nodes using the static
3106 Phonon::createPath() function, which takes two nodes as arguments.
3107 The first argument will send the media stream to the second.
3108 Please refer to the class description of the individual media
3109 nodes and the Phonon \l{Phonon Overview}{overview} to see which
3110 nodes can be connected to each other.
3111
3112 Paths are also used to insert audio \l{Phonon::}{Effect}s between
3113 two media nodes. The effect will then alter the stream on the
3114 path. Notice that \l{Phonon::}{Effect}s also are media nodes, but
3115 that insertEffect() - instead of Phonon::createPath() - is used to
3116 insert them into the media graph.
3117
3118 The following code example shows how to create a path between two
3119 media nodes and insert an effect on that path.
3120
3121 \snippet doc/src/snippets/code/doc_src_phonon-api.qdoc 20
3122
3123 \sa Phonon::MediaNode, Phonon::MediaObject, Phonon::AudioOutput,
3124 Phonon::VideoWidget, {Phonon Module}
3125*/
3126
3127/*!
3128 \fn Phonon::Path::~Path();
3129
3130 Destroys this reference to the Path. If the path was valid the connection is not broken
3131 as both the source and the sink MediaNodes still keep a reference to the Path.
3132
3133 \sa disconnect()
3134*/
3135
3136/*!
3137 \fn Phonon::Path::Path();
3138
3139 Creates an invalid path.
3140
3141 You can still make it a valid path by calling reconnect. It is
3142 recommended to use the Phonon::createPath() function to create
3143 paths.
3144
3145 \sa Phonon::createPath(), isValid()
3146*/
3147
3148/*!
3149 \fn Phonon::Path::Path(const Path &path);
3150
3151 Constructs a copy of the other \a path specified.
3152
3153 This constructor is fast thanks to explicit sharing.
3154*/
3155
3156/*!
3157 \fn bool Phonon::Path::isValid() const;
3158
3159 A path is considered valid if it is connected to two media nodes,
3160 in which case this function returns true. If it is connected to
3161 one or no media nodes, it is consider invalid, and this function
3162 will then return false.
3163*/
3164
3165/*!
3166 \fn Effect *Phonon::Path::insertEffect(const EffectDescription &desc, Effect *insertBefore = 0);
3167
3168 Creates and inserts an effect into the path.
3169
3170 You may insert effects of the same class as often as you like,
3171 but if you insert the same object, the call will fail.
3172
3173 \a desc is the EffectDescription object for the effect to be inserted.
3174
3175 If you already inserted an effect you can
3176 tell with \a insertBefore in which order the data gets
3177 processed. If this is \c 0 the effect is appended at the end of
3178 the processing list. If the effect has not been inserted before
3179 the method will do nothing and return \c false.
3180
3181 Returns a pointer to the effect object if it could be inserted
3182 at the specified position. If \c 0 is returned, the effect was not
3183 inserted.
3184
3185 Below is a code example for inserting an effect into a path:
3186
3187 \snippet doc/src/snippets/audioeffects.cpp 0
3188
3189 \sa removeEffect(), effects()
3190*/
3191
3192/*!
3193 \fn bool Phonon::Path::insertEffect(Effect *effect, Effect *insertBefore = 0);
3194
3195 Inserts the given \a effect into the path before the effect specified by \a insertBefore
3196 and returns true if successful; otherwise returns false.
3197
3198 If \a insertBefore is zero, the effect is appended to the processing list.
3199
3200 You may insert effects of the same class as often as you like, but if you insert
3201 the same object, the call will fail.
3202
3203 \a effect will be inserted right before \a insertBefore. If
3204 \a insertBefore is \c 0, the effect is appended at the end of the
3205 processing list. If the effect has not been inserted before the
3206 method will do nothing and return \c false.
3207
3208 Returns whether the effect could be inserted at the specified
3209 position. If \c false is returned the effect was not inserted.
3210
3211 \sa removeEffect(), effects()
3212*/
3213
3214/*!
3215 \fn bool Phonon::Path::removeEffect(Effect *effect);
3216
3217 Removes the given \a effect from the path and returns true; otherwise returns false.
3218
3219 Removes an \a effect from the path.
3220
3221 If the effect is deleted while it is still connected, the effect will be removed
3222 automatically.
3223
3224 \omit
3225 \param effect The effect to be removed.
3226
3227 \return Returns whether the call was successful. If it returns
3228 \c false the effect could not be found in the path, meaning it
3229 has not been inserted before.
3230 \endomit
3231
3232 \sa insertEffect(), effects()
3233*/
3234
3235/*!
3236 \fn QList<Effect *> Phonon::Path::effects() const;
3237
3238 Returns a list of Effect objects that are currently
3239 used as effects. The order in the list determines the order the
3240 signal is sent through the effects.
3241
3242 \return A list with all current effects.
3243
3244 \sa insertEffect(), removeEffect()
3245*/
3246
3247/*!
3248 \fn bool Phonon::Path::reconnect(MediaNode *source, MediaNode *sink);
3249
3250 Changes the media nodes the path is connected to by connecting the path
3251 to the \a source and \a sink nodes specified. Returns true if successful;
3252 otherwise returns false.
3253
3254 If unsuccessful, the path remains connected to the same nodes as before.
3255
3256 \sa Phonon::createPath(), {Phonon Overview}
3257*/
3258
3259/*!
3260 \fn bool Phonon::Path::disconnect();
3261
3262 Tries to disconnect the path from the MediaNodes it is connected to, returning
3263 true if successful or false if unsuccessful.
3264
3265 If successful, the path is invalidated: isValid() will returns false.
3266*/
3267
3268/*!
3269 \fn Path &Phonon::Path::operator=(const Path &p);
3270
3271 Assigns \a p to this Path and returns a reference to this Path.
3272
3273 This operation is fast thanks to explicit sharing.
3274*/
3275
3276/*!
3277 \fn bool Phonon::Path::operator==(const Path &p) const;
3278
3279 Returns true if this Path is equal to \a p; otherwise returns false;
3280*/
3281
3282/*!
3283 \fn bool Phonon::Path::operator!=(const Path &p) const;
3284
3285 Returns true if this Path is not equal to \a p; otherwise returns false.
3286*/
3287
3288/*!
3289 \fn MediaNode *Phonon::Path::source() const;
3290
3291 Returns the source MediaNode used by the path.
3292*/
3293
3294/*!
3295 \fn MediaNode *Phonon::Path::sink() const;
3296
3297 Returns the sink MediaNode used by the path.
3298*/
3299
3300/*!
3301 \fn Path Phonon::createPath(MediaNode *source, MediaNode *sink);
3302
3303 \relates Phonon::Path
3304 Creates a new Path connecting the two MediaNodes \a source and \a sink.
3305
3306 The implementation will automatically select the right format and media type. E.g. connecting a
3307 MediaObject and AudioOutput will create a Path object connecting the audio. This might be
3308 represented as PCM or perhaps even AC3 depending on the AudioOutput object.
3309
3310 \param source The MediaNode to connect an output from
3311 \param sink The MediaNode to connect to.
3312*/
3313
3314/*!
3315 \class Phonon::PathPrivate
3316 \inmodule Phonon
3317 \since 4.4
3318 \internal
3319*/
3320
3321/*!
3322 \class Phonon::MediaObjectInterface
3323 \inmodule Phonon
3324 \since 4.4
3325 \internal
3326 \brief Backend interface for media sources.
3327
3328 The backend implementation has to provide two signals, that are not defined
3329 in this interface:
3330 \list
3331 \o \target phonon_MediaObjectInterface_stateChanged
3332 void stateChanged(Phonon::State newstate, Phonon::State oldstate)
3333
3334 Emitted when the state of the MediaObject has changed.
3335 In case you're not interested in the old state you can also
3336 connect to a slot that only has one State argument.
3337
3338 \param newstate The state the Player is in now.
3339 \param oldstate The state the Player was in before.
3340
3341 \o \target phonon_MediaObjectInterface_tick
3342 void tick(qint64 time)
3343
3344 This signal gets emitted every tickInterval milliseconds.
3345
3346 \param time The position of the media file in milliseconds.
3347
3348 \sa setTickInterval()
3349 \sa tickInterval()
3350 \endlist
3351
3352 \sa MediaObject
3353*/
3354
3355/*!
3356 \fn virtual Phonon::MediaObjectInterface::~MediaObjectInterface()
3357 \internal
3358*/
3359
3360/*!
3361 \fn virtual qint64 Phonon::MediaObjectInterface::remainingTime() const
3362 \internal
3363*/
3364
3365/*!
3366 \fn virtual qint32 Phonon::MediaObjectInterface::prefinishMark() const = 0
3367 \internal
3368*/
3369
3370/*!
3371 \fn virtual void Phonon::MediaObjectInterface::setPrefinishMark(qint32) = 0
3372 \internal
3373*/
3374
3375/*!
3376 \fn virtual qint32 Phonon::MediaObjectInterface::transitionTime() const = 0
3377 \internal
3378*/
3379
3380/*!
3381 \fn virtual void Phonon::MediaObjectInterface::setTransitionTime(qint32) = 0
3382 \internal
3383*/
3384
3385/*!
3386 \fn virtual void Phonon::MediaObjectInterface::play() = 0
3387 \internal
3388
3389 Requests the playback to start.
3390
3391 This method is only called if the state transition to PlayingState is possible.
3392
3393 The backend should react immediately
3394 by either going into PlayingState or BufferingState if the
3395 former is not possible.
3396*/
3397
3398/*!
3399 \fn virtual void Phonon::MediaObjectInterface::pause() = 0
3400 \internal
3401
3402 Requests the playback to pause.
3403
3404 This method is only called if the state transition to PausedState is possible.
3405
3406 The backend should react as fast as possible. Go to PausedState
3407 as soon as playback is paused.
3408*/
3409
3410/*!
3411 \fn virtual void Phonon::MediaObjectInterface::stop() = 0
3412 \internal
3413
3414 Requests the playback to be stopped.
3415
3416 This method is only called if the state transition to StoppedState is possible.
3417
3418 The backend should react as fast as possible. Go to StoppedState
3419 as soon as playback is stopped.
3420
3421 A subsequent call to play() will start playback at the beginning of
3422 the media.
3423*/
3424
3425/*!
3426 \fn virtual void Phonon::MediaObjectInterface::seek(qint64 milliseconds) = 0
3427 \internal
3428
3429 Requests the playback to be seeked to the given time.
3430
3431 The backend does not have to finish seeking while in this function
3432 (i.e. the backend does not need to block the thread until the seek is
3433 finished; even worse it might lead to deadlocks when using a
3434 ByteStream which gets its data from the thread this function would
3435 block).
3436
3437 As soon as the seek is done the currentTime() function and
3438 the tick() signal will report it.
3439
3440 \param milliseconds The time where playback should seek to in
3441 milliseconds.
3442*/
3443
3444/*!
3445 \fn virtual qint32 Phonon::MediaObjectInterface::tickInterval() const = 0
3446 \internal
3447
3448 Return the time interval in milliseconds between two ticks.
3449
3450 Returns the tick interval that it was set to (might not
3451 be the same as you asked for).
3452*/
3453
3454/*!
3455 \fn virtual void Phonon::MediaObjectInterface::setTickInterval(qint32 interval) = 0
3456 \internal
3457
3458 Change the interval the tick signal is emitted. Set \a interval to 0 to
3459 disable the signal.
3460
3461 \a interval tick interval in milliseconds
3462
3463 Returns the tick interval that it was set to (might not be the same as you
3464 asked for).
3465
3466*/
3467
3468/*!
3469 \fn virtual bool Phonon::MediaObjectInterface::hasVideo() const = 0
3470 \internal
3471
3472 Check whether the media data includes a video stream.
3473
3474 Returns true if the media contains video data.
3475*/
3476
3477/*!
3478 \fn virtual bool Phonon::MediaObjectInterface::isSeekable() const = 0
3479 \internal
3480
3481 If the current media may be seeked this function returns true;
3482 otherwise, false.
3483
3484 Returns whether the current media may be seeked.
3485*/
3486
3487/*!
3488 \fn virtual qint64 Phonon::MediaObjectInterface::currentTime() const = 0
3489 \internal
3490
3491 Get the current time (in milliseconds) of the file currently being played.
3492*/
3493
3494/*!
3495 \fn virtual Phonon::State Phonon::MediaObjectInterface::state() const = 0
3496 \internal
3497
3498 Get the current state.
3499*/
3500
3501/*!
3502 \fn virtual QString Phonon::MediaObjectInterface::errorString() const = 0
3503 \internal
3504
3505 A translated string describing the error.
3506*/
3507
3508/*!
3509 \fn virtual Phonon::ErrorType Phonon::MediaObjectInterface::errorType() const = 0
3510 \internal
3511
3512 Tells your program what to do about the error.
3513
3514 \sa Phonon::ErrorType
3515*/
3516
3517/*!
3518 \fn virtual qint64 Phonon::MediaObjectInterface::totalTime() const = 0
3519 \internal
3520
3521 Returns the total time of the media in milliseconds.
3522
3523 If the total time is not know return -1. Do not block until it is
3524 known, instead emit the totalTimeChanged signal as soon as the total
3525 time is known or changes.
3526*/
3527
3528/*!
3529 \fn virtual MediaSource Phonon::MediaObjectInterface::source() const = 0
3530 \internal
3531
3532 Returns the current source.
3533*/
3534
3535/*!
3536 \fn virtual void Phonon::MediaObjectInterface::setSource(const MediaSource &) = 0
3537 \internal
3538
3539 Sets the current source. When this function is called the MediaObject is
3540 expected to stop all current activity and start loading the new
3541 source (i.e. go into LoadingState).
3542
3543 It is expected that the
3544 backend now starts preloading the media data, filling the audio
3545 and video buffers and making all media meta data available. It
3546 will also trigger the totalTimeChanged signal.
3547
3548 If the backend does not know how to handle the source it needs to
3549 change state to Phonon::ErrorState. Don't bother about handling KIO
3550 URLs. It is enough to handle AbstractMediaStream sources correctly.
3551
3552 \warning Keep the MediaSource object around as long as the backend
3553 uses the AbstractMediaStream returned by the MediaSource. In case
3554 that no other reference to the MediaSource exists and it is set to
3555 MediaSource::autoDelete, the AbstractMediaStream is deleted when the
3556 last MediaSource ref is deleted.
3557*/
3558
3559/*!
3560 \fn virtual void Phonon::MediaObjectInterface::setNextSource(const MediaSource &source) = 0
3561 \internal
3562
3563 Sets the next source to be used for transitions. When a next source
3564 is set playback should continue with the new source. In that case
3565 finished and prefinishMarkReached are not emitted.
3566
3567 \param source The source to transition to (crossfade/gapless/gap). If
3568 \a source is an invalid MediaSource object then the queue is empty
3569 and the playback should stop normally.
3570
3571 \warning Keep the MediaSource object around as long as the backend
3572 uses the AbstractMediaStream returned by the MediaSource. In case
3573 that no other reference to the MediaSource exists and it is set to
3574 MediaSource::autoDelete, the AbstractMediaStream is deleted when the
3575 last MediaSource ref is deleted.
3576*/
3577
3578/*!
3579 \class Phonon::EffectWidget effectwidget.h Phonon/EffectWidget
3580 \inmodule Phonon
3581 \inheaderfile Phonon/EffectWidget
3582 \since 4.4
3583 \brief The EffectWidget class provides a widget to control the parameters of an Effect.
3584
3585 The EffectWidget class provides a widget, with which an effects
3586 parameters can be controlled. The widget does not have an API,
3587 and is constructed with the \l{Phonon::}{Effect}, of which
3588 parameters should be controlled.
3589
3590 \snippet doc/src/snippets/audioeffects.cpp 1
3591
3592 The following image shows an example of an effect widget.
3593
3594 \image effectwidget.png
3595
3596 Note that some audio effects do not have parameters, and the
3597 widget will then not \l{QWidget::}{show()} at all.
3598
3599 \sa Effect, BackendCapabilities, EffectDescription, {Phonon Module}
3600*/
3601
3602/*!
3603 \class Phonon::AbstractAudioOutput
3604 \inmodule Phonon
3605 \internal
3606 \brief Provides a common base class for all audio outputs.
3607
3608 \sa AudioOutput
3609*/
3610
3611/*!
3612 \fn Phonon::AbstractAudioOutput::~AbstractAudioOutput()
3613 \internal
3614*/
3615
3616/*!
3617 \class Phonon::AbstractAudioOutputPrivate
3618 \inmodule Phonon
3619 \since 4.4
3620 \internal
3621*/
3622
3623/*!
3624 \class AudioOutputAdaptor
3625 \inmodule Phonon
3626 \brief Provides an adaptor class for interface org.kde.Phonon.AudioOutput
3627 \internal
3628*/
3629
3630/*!
3631 \class Phonon::VolumeSlider
3632 \inmodule Phonon
3633 \inheaderfile Phonon/VolumeSlider
3634 \since 4.4
3635 \brief The VolumeSlider widget provides a slider that is used to control the volume of an audio output device.
3636
3637 The slider also displays an icon indicating if the volume of the
3638 \l{Phonon::}{AudioOutput} it is connected to is muted. The icon
3639 can be removed with setMuteVisible().
3640
3641 It is possible to set the \l{maximumVolume}{maximum} value of the
3642 slider. By default, the minimum and maximum values of the slider
3643 are 0.0 (no sound) to 1.0 (the maximum volume the audio output can
3644 produce).
3645
3646 Here follows a code example:
3647
3648 \snippet doc/src/snippets/volumeslider.cpp 0
3649
3650 \omit mention how to change the style of the slider. \endomit
3651
3652 \sa {Phonon Module}
3653*/
3654
3655/*!
3656 \property Phonon::VolumeSlider::maximumVolume
3657
3658 This property holds the maximum volume that can be set with this slider.
3659
3660 By default the maximum value is 1.0 (100%).
3661*/
3662
3663/*!
3664 \property Phonon::VolumeSlider::orientation
3665 This property holds the orientation of the slider.
3666
3667 The orientation must be Qt::Vertical (the default) or Qt::Horizontal.
3668*/
3669
3670/*!
3671 \property Phonon::VolumeSlider::tracking
3672 This property holds whether slider tracking is enabled.
3673
3674 If tracking is enabled (the default), the volume changes
3675 while the slider is being dragged. If tracking is
3676 disabled, the volume changes only when the user
3677 releases the slider.
3678*/
3679
3680/*!
3681 \property Phonon::VolumeSlider::pageStep
3682 This property holds the page step.
3683
3684 The larger of two natural steps that a slider provides and
3685 typically corresponds to the user pressing PageUp or PageDown.
3686
3687 Defaults to 5 (5% of the voltage).
3688*/
3689
3690/*!
3691 \property Phonon::VolumeSlider::singleStep
3692 This property holds the single step.
3693
3694 The smaller of two natural steps that a slider provides and
3695 typically corresponds to the user pressing an arrow key.
3696
3697 Defaults to 1 (1% of the voltage).
3698*/
3699
3700/*!
3701 \property Phonon::VolumeSlider::muteVisible
3702 This property holds whether the mute button/icon next to the slider is visible.
3703
3704 By default the mute button/icon is visible.
3705*/
3706
3707/*!
3708 \property Phonon::VolumeSlider::iconSize
3709 \brief the icon size used for the mute button/icon.
3710
3711 The default size is defined by the GUI style.
3712*/
3713
3714/*!
3715 \fn explicit Phonon::VolumeSlider::VolumeSlider(QWidget *parent = 0)
3716 Constructs a new volume slider with the given \a parent.
3717*/
3718
3719/*!
3720 \fn explicit Phonon::VolumeSlider::VolumeSlider(AudioOutput *output, QWidget *parent = 0)
3721 Constructs a new volume slider with the given \a output object and \a parent.
3722*/
3723
3724/*!
3725 \fn Phonon::VolumeSlider::~VolumeSlider()
3726*/
3727
3728/*!
3729 \fn AudioOutput *Phonon::VolumeSlider::audioOutput() const
3730*/
3731
3732/*!
3733 \fn void Phonon::VolumeSlider::setAudioOutput(Phonon::AudioOutput *output)
3734
3735 Sets the audio output object to be controlled by this slider to the specified
3736 \a output object.
3737*/
3738
3739/*!
3740 \class Phonon::VolumeSliderPrivate
3741 \inmodule Phonon
3742 \since 4.4
3743 \internal
3744*/
3745
3746/*!
3747 \class Phonon::MediaController
3748 \inmodule Phonon
3749 \inheaderfile Phonon/MediaController
3750 \since 4.4
3751 \brief The MediaController class controls optional features of a media file/device.
3752
3753 Some media sources have content that the \l{Phonon::}{MediaObject}
3754 does not provide control over, for instance, chapters in a DVD
3755 file. The functionality the media controller offers is
3756 dependent on the type of media source that is played back.
3757 Commonly, the media controller allows you to:
3758
3759 \list
3760 \o Navigate between \bold chapters.
3761 \o Navigate between \bold titles.
3762 \o Select between \bold angles.
3763 \endlist
3764
3765 The \l{Phonon::MediaController::}{Feature} enum explains these
3766 terms in more detail, and their context in playback of CD and DVD.
3767
3768 The media controller keeps a \l{Phonon::}{MediaObject}, of which
3769 \l{Phonon::MediaObject::currentSource()}{media source} is played
3770 back. You can still call the media object's functions, e.g.,
3771 \l{Phonon::MediaObject::}{stop()}; this is all handled correctly
3772 by the media controller. You have the option of letting the media
3773 controller play all titles of a source in sequence by setting the
3774 \l{autoplayTitles()}{autoplay titles} option.
3775
3776 To start a playback using a media object, you call
3777 \l{Phonon::MediaObject::}{play()} on the media object. To play a
3778 specific title, use setCurrentTitle() and then call
3779 \l{Phonon::MediaObject::}{play()}.
3780
3781 \warning The Phonon::MediaController class is not yet supported by
3782 Qt backends.
3783
3784 \sa {Phonon Module}
3785*/
3786
3787/*!
3788 \fn int Phonon::MediaController::availableAudioChannels() const
3789 \internal
3790*/
3791
3792/*!
3793 \fn void Phonon::MediaController::availableAudioChannelsChanged()
3794 \internal
3795*/
3796
3797/*!
3798 \fn QList<SubtitleDescription> Phonon::MediaController::availableSubtitles() const
3799 \internal
3800*/
3801
3802/*!
3803 \fn void Phonon::MediaController::availableSubtitlesChanged()
3804 \internal
3805*/
3806
3807/*!
3808 \fn AudioChannelDescription Phonon::MediaController::currentAudioChannel() const
3809 \internal
3810*/
3811
3812/*!
3813 \fn SubtitleDescription Phonon::MediaController::currentSubtitle() const
3814 \internal
3815*/
3816
3817/*!
3818 \fn void Phonon::MediaController::setCurrentAudioChannel(const Phonon::AudioChannelDescription &stream)
3819 \internal
3820*/
3821
3822/*!
3823 \fn void Phonon::MediaController::setCurrentSubtitle(const Phonon::SubtitleDescription &stream)
3824 \internal
3825*/
3826
3827/*!
3828 \fn Phonon::BackendCapabilities::availableAudioCaptureDevices()
3829 \internal
3830*/
3831
3832/*!
3833 \fn Phonon::BackendCapabilities::Notifier::availableAudioCaptureDevicesChanged()
3834 \internal
3835*/
3836
3837/*!
3838 \enum Phonon::MediaController::Feature
3839
3840 The values of this enum are interpreted differently depending on
3841 the type of media source, e.g., DVD or CD. We give examples for
3842 these sources.
3843
3844 \value Angles In the VOB (DVD) format, it is possible to to give
3845 several video streams of the same scene, each of which displays
3846 the scene from a different angle. The DVD viewer can then change
3847 between these angles.
3848
3849 \value Chapters In the VOB format, chapters are points in a
3850 single video stream that can be played and seeked to
3851 separately.
3852
3853 \value Titles On a CD, a title is a separate sound track. On DVD,
3854 a title is a separate VOB file.
3855
3856*/
3857
3858/*!
3859 \fn Phonon::MediaController::MediaController(MediaObject *parent)
3860
3861 Constructs a new MediaController with the media object (\a parent)
3862 to be used by the media controller.
3863
3864 \sa MediaObject, Feature
3865*/
3866
3867/*!
3868 \fn Phonon::MediaController::~MediaController()
3869*/
3870
3871/*!
3872 \fn Features Phonon::MediaController::supportedFeatures() const
3873*/
3874
3875/*!
3876 \fn int Phonon::MediaController::availableAngles() const
3877
3878 Returns the available angles that is available for the current
3879 media source.
3880
3881 \sa Feature
3882*/
3883
3884/*!
3885 \fn int Phonon::MediaController::currentAngle() const
3886
3887 Returns the angle that is currently used.
3888
3889 \sa Feature
3890*/
3891
3892/*!
3893 \fn int Phonon::MediaController::availableChapters() const
3894
3895 Returns the number of chapters the current media source
3896 contains.
3897
3898 \sa Feature
3899*/
3900
3901/*!
3902 \fn int Phonon::MediaController::currentChapter() const
3903
3904 Returns the chapter that is currently being played back.
3905
3906 \sa Feature
3907*/
3908
3909/*!
3910 \fn int Phonon::MediaController::availableTitles() const
3911
3912 Returns the number of titles that the current media source
3913 contains.
3914
3915 \sa Feature
3916*/
3917
3918/*!
3919 \fn int Phonon::MediaController::currentTitle() const
3920
3921 Returns the title that is currently played back.
3922
3923 The current title is 0 (the first) by default.
3924
3925 \sa Feature
3926*/
3927
3928/*!
3929 \fn bool Phonon::MediaController::autoplayTitles() const
3930
3931 Returns true if titles will automatically be played when the media
3932 is played; otherwise returns false.
3933
3934 The media controller will play the titles of the media source in
3935 sequence when the media object's \l{Phonon::MediaObject::}{play()}
3936 function is called. If the autoplay option is disabled, the media
3937 object will play the
3938 \l{Phonon::}{MediaController::currentTitle()}{current title} and then
3939 finish the playback.
3940
3941 \sa setAutoplayTitles(), currentTitle()
3942*/
3943
3944/*!
3945 \fn void Phonon::MediaController::setAutoplayTitles(bool enable)
3946
3947 Sets the titles to play automatically when the media is played if
3948 \a enable is true; otherwise disables this option.
3949
3950 The media controller will play the titles of the media source in
3951 sequence when the media object's \l{Phonon::MediaObject::}{play()}
3952 function is called. If the autoplay option is disabled, the media
3953 object will play the
3954 \l{Phonon::}{MediaController::currentTitle()}{current title} and then
3955 finish the playback.
3956
3957 \sa autoplayTitles(), currentTitle()
3958*/
3959
3960/*!
3961 \fn void Phonon::MediaController::setCurrentAngle(int angleNumber)
3962
3963 Sets the current angle to the given \a angleNumber if the media
3964 file or device supports navigation by angle number.
3965
3966 \sa Feature
3967*/
3968
3969/*!
3970 \fn void Phonon::MediaController::setCurrentChapter(int chapterNumber)
3971
3972 Sets the current chapter to the given \a chapterNumber if the media
3973 file or device supports navigation by chapter number.
3974
3975 \sa Feature
3976*/
3977
3978/*!
3979 \fn void Phonon::MediaController::setCurrentTitle(int titleNumber)
3980
3981 Skips to the given title \a titleNumber.
3982
3983 If it was playing before the title change it will start playback on the new title if
3984 autoplayTitles is enabled.
3985
3986 \sa Feature
3987*/
3988
3989/*!
3990 \fn void Phonon::MediaController::nextTitle()
3991
3992 Skips to the next title.
3993
3994 If it was playing before the title change it will start playback on the next title if
3995 autoplayTitles is enabled.
3996
3997 \sa Feature
3998*/
3999
4000/*!
4001 \fn void Phonon::MediaController::previousTitle()
4002
4003 Skips to the previous title.
4004
4005 If it was playing before the title change it will start playback on the previous title if
4006 autoplayTitles is enabled.
4007
4008 \sa Feature
4009*/
4010
4011/*!
4012 \fn void Phonon::MediaController::availableAnglesChanged(int availableAngles)
4013
4014 This signal is emitted whenever the number of available angles changes.
4015 The new number of available angles is given by \a availableAngles.
4016
4017 \sa Feature
4018*/
4019
4020/*!
4021 \fn void Phonon::MediaController::angleChanged(int angleNumber)
4022
4023 This signal is emitted whenever the current angle changes.
4024 The new angle number is given by \a angleNumber.
4025
4026 \sa Feature
4027*/
4028
4029/*!
4030 \fn void Phonon::MediaController::availableChaptersChanged(int availableChapters)
4031
4032 This signal is emitted whenever the number of available chapters changes.
4033 The new number of available chapters is given by \a availableChapters.
4034
4035 \sa Feature
4036*/
4037
4038/*!
4039 \fn void Phonon::MediaController::chapterChanged(int chapterNumber)
4040
4041 This signal is emitted whenever the current chapter changes.
4042 The new chapter number is given by \a chapterNumber.
4043
4044 \sa Feature
4045*/
4046
4047/*!
4048 \fn void Phonon::MediaController::availableTitlesChanged(int availableTitles)
4049
4050 This signal is emitted whenever the number of available titles changes.
4051 The new number of available titles is given by \a availableTitles.
4052
4053 \sa Feature
4054*/
4055
4056/*!
4057 \fn void Phonon::MediaController::titleChanged(int titleNumber)
4058
4059 This signal is emitted whenever the current title changes.
4060 The new title number is given by \a titleNumber.
4061
4062 \sa Feature
4063*/
4064
4065/*!
4066 \class Phonon::VideoWidget
4067 \inmodule Phonon
4068 \inheaderfile Phonon/VideoWidget
4069 \since 4.4
4070 \ingroup advanced
4071 \ingroup multimedia
4072 \brief The VideoWidget class provides a widget that is used to display video.
4073
4074 The VideoWidget class renders the video of a media stream on a
4075 QWidget. It is connected to the \l{Phonon::}{MediaObject}, of
4076 which video stream it should render. You connect the two objects
4077 using the Phonon::createPath() function.
4078
4079 The widget has some possibilities to manipulate the video
4080 stream. You can change the brightness(), hue(), saturation(),
4081 and contrast().
4082
4083 Resizing of the video is handled automatically, but you can affect
4084 the way the video is resized with the aspectRatio and scaleMode
4085 properties. By default, the widget will use the aspect ratio of
4086 the video stream itself.
4087
4088 The video widget takes the size of the video when it receives a new video
4089 stream (i.e., when a new MediaSource is set on the MediaObject to which it is
4090 connected). If you need to know the size of the video, you can call
4091 \l{QWidget::}{sizeHint()} after the video has been loaded (i.e., after the
4092 MediaObject leaves the \l{Phonon::}{LoadingState}).
4093
4094 It is also possible to go to \l{fullScreen}{full screen} mode.
4095
4096 A typical example of usage follows below:
4097
4098 \snippet doc/src/snippets/code/doc_src_phonon-api.qdoc 21
4099
4100 \sa {Phonon Module}
4101*/
4102
4103/*!
4104 \fn Phonon::VideoWidget::VideoWidget(QWidget *parent = 0)
4105
4106 Constructs a new video widget with the specified \a parent.
4107*/
4108
4109/*!
4110 \fn Phonon::VideoWidget::VideoWidget(VideoWidgetPrivate &d, QWidget *parent)
4111 \internal
4112
4113 Constructs a new video widget with the specified \a parent.
4114*/
4115
4116/*!
4117 \fn bool Phonon::VideoWidget::event(QEvent *)
4118 \reimp
4119*/
4120
4121/*!
4122 \fn void Phonon::VideoWidget::mouseMoveEvent(QMouseEvent *)
4123 \reimp
4124*/
4125
4126/*!
4127 \enum Phonon::VideoWidget::ScaleMode
4128
4129 The ScaleMode enum describes how to treat aspect ratio during
4130 resizing of video.
4131
4132 \value FitInView The video will be fitted to fill the view
4133 keeping aspect ratio.
4134 \value ScaleAndCrop The video is scaled
4135*/
4136
4137/*!
4138 \property Phonon::VideoWidget::fullScreen
4139 This property holds whether the video is shown using the complete
4140 screen.
4141
4142 The property differs from QWidget::fullScreen in that it is
4143 writeable.
4144
4145 By default the widget is not shown in fullScreen.
4146
4147 \warning When switching to full screen mode using setFullScreen(),
4148 the widget onto which the video is rendered is shown as a
4149 top-level window. Key event forwarding is handled by VideoWidget,
4150 but if you need to handle other events, e.g., mouse events, you
4151 should handle fullscreen mode yourself.
4152*/
4153
4154/*!
4155 \property Phonon::VideoWidget::aspectRatio
4156 Defaults to AspectRatioAuto.
4157
4158 \sa AspectRatio
4159*/
4160
4161/*!
4162 \property Phonon::VideoWidget::scaleMode
4163
4164 If the size of the widget and the size of the video are not equal.
4165 The video will be zoomed to fit the widget. The smaller zoom
4166 (AddBarsScaleMode) adds black bars at the left/right or top/bottom to
4167 make all of the image visible (default). The bigger zoom (ExpandMode)
4168 fills the widget completely, keeping all information in one direction
4169 and leaving parts of the image outside of the widget in the other
4170 direction.
4171*/
4172
4173/*!
4174 \property Phonon::VideoWidget::brightness
4175
4176 This property holds brightness of the video.
4177
4178 Default is 0. Acceptable values are in range of -1, 1.
4179*/
4180
4181/*!
4182 \property Phonon::VideoWidget::contrast
4183
4184 This property holds the contrast of the video.
4185
4186 Default is 0. Acceptable values are in range of -1, 1.
4187*/
4188
4189/*!
4190 \property Phonon::VideoWidget::hue
4191
4192 This property holds the hue of the video.
4193
4194 Default is 0. Acceptable values are in range of -1, 1.
4195*/
4196
4197/*!
4198 \property Phonon::VideoWidget::saturation
4199
4200 This property holds saturation of the video.
4201
4202 Default is 0. Acceptable values are in range of -1, 1.
4203*/
4204
4205/*!
4206 \enum Phonon::VideoWidget::AspectRatio
4207
4208 Defines the width:height to be used for the video.
4209
4210 \value AspectRatioAuto
4211 Let the decoder find the aspect ratio automatically from the
4212 media file (this is the default).
4213
4214 \value AspectRatioWidget
4215 Fits the video into the widget making the aspect ratio depend
4216 solely on the size of the widget. This way the aspect ratio
4217 is freely resizeable by the user.
4218
4219 \value AspectRatio4_3
4220 Make width/height == 4/3, which is the old TV size and
4221 monitor size (1024/768 == 4/3). (4:3)
4222
4223 \value AspectRatio16_9
4224 Make width/height == 16/9, which is the size of most current
4225 media. (16:9)
4226*/
4227
4228/*!
4229 \fn void Phonon::VideoWidget::exitFullScreen()
4230
4231 Convenience slot, calling setFullScreen(false)
4232*/
4233
4234
4235/*!
4236 \fn void Phonon::VideoWidget::enterFullScreen()
4237
4238 Convenience slot, calling setFullScreen(true)
4239*/
4240
4241/*!
4242 \class Phonon::VideoWidgetInterface
4243 \inmodule Phonon
4244 \since 4.4
4245 \internal
4246*/
4247
4248/*!
4249 \fn virtual Phonon::VideoWidgetInterface::~VideoWidgetInterface()
4250*/
4251
4252/*!
4253 \fn virtual Phonon::VideoWidget::AspectRatio Phonon::VideoWidgetInterface::aspectRatio() const = 0
4254 \internal
4255*/
4256
4257/*!
4258 \fn virtual void Phonon::VideoWidgetInterface::setAspectRatio(Phonon::VideoWidget::AspectRatio ratio) = 0
4259 \internal
4260*/
4261
4262/*!
4263 \fn virtual qreal Phonon::VideoWidgetInterface::brightness() const = 0
4264 \internal
4265*/
4266
4267/*!
4268 \fn virtual void Phonon::VideoWidgetInterface::setBrightness(qreal) = 0
4269 \internal
4270*/
4271
4272/*!
4273 \fn virtual Phonon::VideoWidget::ScaleMode Phonon::VideoWidgetInterface::scaleMode() const = 0
4274 \internal
4275*/
4276
4277/*!
4278 \fn virtual void Phonon::VideoWidgetInterface::setScaleMode(Phonon::VideoWidget::ScaleMode mode) = 0
4279 \internal
4280*/
4281
4282/*!
4283 \fn virtual qreal Phonon::VideoWidgetInterface::contrast() const = 0
4284 \internal
4285*/
4286
4287/*!
4288 \fn virtual void Phonon::VideoWidgetInterface::setContrast(qreal) = 0
4289 \internal
4290*/
4291
4292/*!
4293 \fn virtual qreal Phonon::VideoWidgetInterface::hue() const = 0
4294 \internal
4295*/
4296
4297/*!
4298 \fn virtual void Phonon::VideoWidgetInterface::setHue(qreal) = 0
4299 \internal
4300*/
4301
4302/*!
4303 \fn virtual qreal Phonon::VideoWidgetInterface::saturation() const = 0
4304 \internal
4305*/
4306
4307/*!
4308 \fn virtual void Phonon::VideoWidgetInterface::setSaturation(qreal) = 0
4309 \internal
4310*/
4311
4312/*!
4313 \fn virtual QWidget *Phonon::VideoWidgetInterface::widget() = 0
4314 \internal
4315*/
4316
4317/*!
4318 \class Phonon::PlatformPlugin
4319 \inmodule Phonon
4320 \since 4.4
4321 \internal
4322*/
4323
4324/*!
4325 \fn virtual AbstractMediaStream *Phonon::PlatformPlugin::createMediaStream(const QUrl &url, QObject *parent) = 0
4326
4327 Creates a AbstractMediaStream object with the given \a parent that provides the data
4328 for the given URL specified by \a url.
4329 \omit
4330 On KDE this uses KIO.
4331 \endomit
4332*/
4333
4334/*!
4335 \fn virtual QIcon Phonon::PlatformPlugin::icon(const QString &name) const = 0
4336
4337 Returns the icon for the given icon name.
4338*/
4339
4340/*!
4341 \fn virtual void Phonon::PlatformPlugin::notification(const char *notificationName, const QString &text,
4342 const QStringList &actions, QObject *receiver, const char *actionSlot) const = 0
4343
4344 Shows a notification pop-up with the given \a notificationName and \a text.
4345 Each action in the associated list of \a actions is connected to the \a actionSlot
4346 of the specified \a receiver object, which is expected to act on the actions as
4347 they are triggered by the user.
4348*/
4349
4350/*!
4351 \fn virtual QString Phonon::PlatformPlugin::applicationName() const = 0
4352
4353 Returns the name of the application. For most Qt application this is
4354 QCoreApplication::applicationName(), but for KDE this is overridden by KAboutData.
4355*/
4356
4357
4358/*!
4359 \fn virtual QObject *Phonon::PlatformPlugin::createBackend() = 0
4360
4361 Creates a backend object. This way the platform can decide the backend preference.
4362*/
4363
4364/*!
4365 \fn virtual QObject *Phonon::PlatformPlugin::createBackend(const QString &library, const QString &version) = 0
4366
4367 Using the library loader of the platform, loads a given backend provided the
4368 specified \a library and \a version.
4369*/
4370
4371/*!
4372 \fn virtual bool Phonon::PlatformPlugin::isMimeTypeAvailable(const QString &mimeType) const = 0
4373
4374 Tries to check whether the default backend supports the MIME type specified by \a mimeType
4375 without loading the actual backend library.
4376 \omit
4377 On KDE this reads the MIME type list from the .desktop file of
4378 the backend.
4379 \endomit
4380*/
4381
4382/*!
4383 \fn virtual void Phonon::PlatformPlugin::saveVolume(const QString &outputName, qreal volume) = 0
4384
4385 Saves the volume for the given output.
4386*/
4387
4388/*!
4389 \fn virtual qreal Phonon::PlatformPlugin::loadVolume(const QString &outputName) const = 0
4390
4391 Loads the volume for the given output.
4392*/
4393
4394/*!
4395 \class Phonon::MediaNode
4396 \inmodule Phonon
4397 \inheaderfile Phonon/MediaNode
4398 \since 4.4
4399 \brief The MediaNode class is the base class for all nodes in a media graph.
4400
4401 In all phonon applications, one builds a media graph consisting of
4402 MediaNodes. The graph will take multimedia content, e.g., from a
4403 file, as input. After its nodes have processed the multimedia, the
4404 graph will output the media again, e.g., to a sound card.
4405
4406 The multimedia content is streamed over \l{Phonon::}{Path}s
4407 between the nodes in the graph. You can query the paths that are
4408 connected to a media node with inputPaths() and outputPaths().
4409
4410 You can check whether the node is implemented by the current
4411 backend by calling isValid(). This does not guarantee that an
4412 instance of the class works as expected, but that the backend has
4413 implemented functionality for the class.
4414
4415 Currently, Phonon has four media nodes: \l{Phonon::}{MediaObject},
4416 \l{Phonon::}{AudioOutput}, \l{Phonon::}{VideoWidget}, and \l{Phonon::}{Effect}.
4417 Please refer to their class descriptions for details about their usage, and to
4418 find out which nodes can be connected to each other. See also \l{Building
4419 Graphs} in Phonon's \l{Phonon Overview}{overview} document.
4420
4421 Two nodes are connected to each other using the
4422 Phonon::createPath() or \l{Phonon::}{Path::insertEffect()}
4423 functions (only \l{Phonon::Effect}s use
4424 \l{Phonon::Path::}{insertEffect()}). We show a code example below,
4425 in which we build a media graph for video playback and then query
4426 its media nodes for their \l{Phonon::}{Path}s:
4427
4428 \snippet doc/src/snippets/medianodesnippet.cpp 0
4429
4430 When you create a Phonon application, you will likely build the
4431 graph yourself. This makes isValid() the most useful function of
4432 this class. The other two functions help navigate the graph, which
4433 you do not need to do as you created the nodes yourself.
4434
4435 \sa {Phonon Overview}, Phonon::MediaObject,
4436 Phonon::AudioOutput, Phonon::VideoWidget, {Phonon Module}
4437*/
4438
4439/*!
4440 \fn virtual Phonon::MediaNode::~MediaNode()
4441
4442 Destroys the media node and any paths connecting it to other
4443 nodes. Any \l{Phonon::}{Effect}s connected to these paths will
4444 also be deleted.
4445*/
4446
4447/*!
4448 \fn bool Phonon::MediaNode::isValid() const
4449
4450 Returns true if the backend provides an implementation of this
4451 class; otherwise returns false.
4452
4453 This does not guarantee that instances of the class works as
4454 expected, but that the backend has implemented the functionality
4455 for this class. For instance, Qt's GStreamer backend will return
4456 true for instances of the \l{Phonon::}{AudioOutput} class, even if
4457 there is a problem with GStreamer and it could not play sound.
4458
4459*/
4460
4461/*!
4462 \fn QList<Path> Phonon::MediaNode::inputPaths() const
4463
4464 Returns the paths that inputs multimedia to this media node.
4465
4466 \sa outputPaths()
4467*/
4468
4469/*!
4470 \fn QList<Path> Phonon::MediaNode::outputPaths() const
4471
4472 Returns the paths to which this media node outputs media.
4473
4474 \sa inputPaths()
4475*/
4476
4477/*!
4478 \fn Phonon::MediaNode::MediaNode(MediaNodePrivate &dd)
4479 \internal
4480*/
4481
4482/*!
4483 \class Phonon::GlobalConfig
4484 \inmodule Phonon
4485 \since 4.4
4486 \internal
4487*/
4488
4489/*!
4490 \fn Phonon::GlobalConfig::GlobalConfig()
4491 \internal
4492*/
4493
4494/*!
4495 \fn Phonon::GlobalConfig::~GlobalConfig()
4496 \internal
4497*/
4498
4499/*!
4500 \fn QList<int> Phonon::GlobalConfig::audioOutputDeviceListFor(Phonon::Category category, int override = AdvancedDevicesFromSettings) const
4501 \internal
4502*/
4503
4504/*!
4505 \fn int Phonon::GlobalConfig::audioOutputDeviceFor(Phonon::Category category, int override = AdvancedDevicesFromSettings) const
4506 \internal
4507*/
4508
4509/*!
4510 \class Phonon::ObjectDescriptionData
4511 \inmodule Phonon
4512 \since 4.4
4513 \internal
4514 \brief Data class for objects describing devices or features of the backend.
4515
4516 \sa Phonon::BackendCapabilities
4517*/
4518
4519/*!
4520 \fn bool Phonon::ObjectDescriptionData::operator==(const ObjectDescriptionData &otherDescription) const
4521
4522 Returns \c true if this ObjectDescription describes the same
4523 as \a otherDescription; otherwise returns \c false.
4524*/
4525
4526/*!
4527 \fn QString Phonon::ObjectDescriptionData::name() const
4528
4529 Returns the name of the capture source.
4530
4531 \return A string that should be presented to the user to
4532 choose the capture source.
4533*/
4534
4535/*!
4536 \fn QString Phonon::ObjectDescriptionData::description() const
4537
4538 Returns a description of the capture source. This text should
4539 make clear what sound source this is, which is sometimes hard
4540 to describe or understand from just the name.
4541
4542 \return A string describing the capture source.
4543*/
4544
4545/*!
4546 \fn QVariant Phonon::ObjectDescriptionData::property(const char *name) const
4547
4548 Returns a named property.
4549
4550 If the property is not set an invalid value is returned.
4551
4552 \sa propertyNames()
4553*/
4554
4555/*!
4556 \fn QList<QByteArray> Phonon::ObjectDescriptionData::propertyNames() const
4557
4558 Returns all names that return valid data when property() is called.
4559
4560 \sa property()
4561*/
4562
4563/*!
4564 \fn bool Phonon::ObjectDescriptionData::isValid() const
4565
4566 Returns true if the Tuple is valid (index != -1); otherwise returns
4567 false.
4568*/
4569
4570/*!
4571 \fn int Phonon::ObjectDescriptionData::index() const
4572
4573 A unique identifier for this device/. Used internally
4574 to distinguish between the devices/.
4575
4576 \return An integer that uniquely identifies every device.
4577*/
4578
4579/*!
4580 \fn static ObjectDescriptionData *Phonon::ObjectDescriptionData::fromIndex(ObjectDescriptionType type, int index)
4581 \internal
4582*/
4583
4584/*!
4585 \fn Phonon::ObjectDescriptionData::~ObjectDescriptionData()
4586 \internal
4587*/
4588
4589/*!
4590 \fn Phonon::ObjectDescriptionData::ObjectDescriptionData(ObjectDescriptionPrivate * = 0)
4591 \internal
4592*/
4593
4594/*!
4595 \class Phonon::AddonInterface
4596 \inmodule Phonon
4597 \since 4.4
4598 \internal
4599 \brief Interface for Menu, Chapter, Angle and Title/Track control.
4600*/
4601
4602/*!
4603 \fn virtual Phonon::AddonInterface::~AddonInterface()
4604 \internal
4605*/
4606
4607/*!
4608 \enum Phonon::AddonInterface::Interface
4609
4610 This enum describes the type of interface represented by an AddonInterface object.
4611
4612 \value NavigationInterface
4613 \value ChapterInterface
4614 \value AngleInterface
4615 \value TitleInterface
4616*/
4617
4618/*!
4619 \enum Phonon::AddonInterface::NavigationCommand
4620 \internal
4621 \value Menu1Button
4622*/
4623
4624/*!
4625 \enum Phonon::AddonInterface::ChapterCommand
4626 \internal
4627 \value availableChapters
4628 \value chapter
4629 \value setChapter
4630*/
4631
4632/*!
4633 \enum Phonon::AddonInterface::AngleCommand
4634 \internal
4635 \value availableAngles
4636 \value angle
4637 \value setAngle
4638*/
4639
4640/*!
4641 \enum Phonon::AddonInterface::TitleCommand
4642 \internal
4643 \value availableTitles
4644 \value title
4645 \value setTitle
4646 \value autoplayTitles
4647 \value setAutoplayTitles
4648*/
4649
4650/*!
4651 \fn virtual bool Phonon::AddonInterface::hasInterface(Interface iface) const = 0
4652 \internal
4653*/
4654
4655/*!
4656 \fn virtual QVariant Phonon::AddonInterface::interfaceCall(Interface iface, int command,
4657 const QList<QVariant> &arguments) = 0
4658 \internal
4659*/
4660
4661/*!
4662 \class Phonon::MediaNodePrivate
4663 \inmodule Phonon
4664 \since 4.4
4665 \internal
4666*/
4667
4668/*!
4669 \namespace Phonon::Factory
4670 \inmodule Phonon
4671 \internal
4672*/
4673
4674/*!
4675 \fn Sender *Phonon::Factory::sender()
4676
4677 Returns a pointer to the object emitting the signals.
4678
4679 \sa Sender::backendChanged()
4680*/
4681
4682/*!
4683 \fn QObject *Phonon::Factory::createMediaObject(QObject *parent = 0)
4684
4685 Create a new backend object for a MediaObject.
4686
4687 \return a pointer to the MediaObject the backend provides.
4688*/
4689
4690/*!
4691 \fn QObject *Phonon::Factory::createEffect(int effectId, QObject *parent = 0)
4692
4693 Create a new backend object for a Effect.
4694
4695 \return a pointer to the Effect the backend provides.
4696*/
4697
4698/*!
4699 \fn QObject *Phonon::Factory::createVolumeFaderEffect(QObject *parent = 0)
4700
4701 Create a new backend object for a VolumeFaderEffect.
4702
4703 \return a pointer to the VolumeFaderEffect the backend provides.
4704*/
4705
4706/*!
4707 \fn QObject *Phonon::Factory::createAudioOutput(QObject *parent = 0)
4708
4709 Create a new backend object for a AudioOutput.
4710
4711 \return a pointer to the AudioOutput the backend provides.
4712*/
4713
4714/*!
4715 \fn QObject *Phonon::Factory::createVideoWidget(QObject *parent = 0)
4716
4717 Create a new backend object for a VideoWidget.
4718
4719 \return a pointer to the VideoWidget the backend provides.
4720*/
4721
4722/*!
4723 \fn QObject *Phonon::Factory::backend(bool createWhenNull = true)
4724
4725 \return a pointer to the backend interface.
4726*/
4727
4728/*!
4729 \fn QString Phonon::Factory::identifier()
4730
4731 Unique identifier for the Backend. Can be used in configuration files
4732 for example.
4733*/
4734
4735
4736/*!
4737 \fn QString Phonon::Factory::backendName()
4738
4739 Get the name of the Backend.
4740 \omit
4741 It's the name from the .desktop file.
4742 \endomit
4743*/
4744
4745/*!
4746 \fn QString Phonon::Factory::backendComment()
4747
4748 Get the comment of the Backend.
4749 \omit
4750 It's the comment from the .desktop file.
4751 \endomit
4752*/
4753
4754/*!
4755 \fn QString Phonon::Factory::backendVersion()
4756
4757 Get the version of the Backend.
4758 \omit
4759 It's the version from the .desktop file.
4760 \endomit
4761
4762 The version is especially interesting if there are several versions
4763 available for binary incompatible versions of the backend's media
4764 framework.
4765*/
4766
4767/*!
4768 \fn QString Phonon::Factory::backendIcon()
4769
4770 Get the icon (name) of the Backend.
4771 \omit
4772 It's the icon from the .desktop file.
4773 \endomit
4774*/
4775
4776/*!
4777 \fn QString Phonon::Factory::backendWebsite()
4778
4779 Get the website of the Backend.
4780 \omit
4781 It's the website from the .desktop file.
4782 \endomit
4783*/
4784
4785/*!
4786 \fn QObject *Phonon::Factory::registerQObject(QObject *object)
4787
4788 Registers the given backend \a object with the factory.
4789*/
4790
4791/*!
4792 \fn bool Phonon::Factory::isMimeTypeAvailable(const QString &mimeType)
4793*/
4794
4795/*!
4796 \fn void Phonon::Factory::registerFrontendObject(MediaNodePrivate *)
4797 \internal
4798*/
4799
4800/*!
4801 \fn void Phonon::Factory::deregisterFrontendObject(MediaNodePrivate *)
4802 \internal
4803*/
4804
4805/*!
4806 \fn void Phonon::Factory::setBackend(QObject *)
4807*/
4808
4809/*!
4810 \fn PlatformPlugin *Phonon::Factory::platformPlugin()
4811*/
4812
4813/*!
4814/*!
4815 \class Phonon::AbstractMediaStreamPrivate
4816 \inmodule Phonon
4817 \since 4.4
4818 \internal
4819*/
4820
4821/*!
4822 \class Phonon::FrontendInterfacePrivate
4823 \inmodule Phonon
4824 \since 4.4
4825 \internal
4826*/
4827
4828/*!
4829 \class Phonon::EffectWidgetPrivate
4830 \inmodule Phonon
4831 \since 4.4
4832 \internal
4833*/
4834
4835/*!
4836 \class Phonon::IODeviceStream
4837 \inmodule Phonon
4838 \since 4.4
4839 \internal
4840*/
4841
4842/*!
4843 \fn explicit Phonon::IODeviceStream::IODeviceStream(QIODevice *ioDevice, QObject *parent = 0)
4844 \internal
4845
4846 Creates a new IODeviceStream with the given \a ioDevice and \a
4847 parent.
4848
4849*/
4850
4851/*!
4852 \fn Phonon::IODeviceStream::~IODeviceStream()
4853 \internal
4854*/
4855
4856/*!
4857 \fn void Phonon::IODeviceStream::reset()
4858 \internal
4859*/
4860
4861/*!
4862 \fn void Phonon::IODeviceStream::needData()
4863 \internal
4864*/
4865
4866/*!
4867 \fn void Phonon::IODeviceStream::seekStream(qint64)
4868 \internal
4869*/
4870
4871/*!
4872 \namespace Phonon::Platform
4873 \inmodule Phonon
4874 \internal
4875*/
4876
4877/*!
4878 \typedef Phonon::EffectDescriptionModel
4879 \inmodule Phonon
4880 \brief provides a item view model containing available audio effects.
4881
4882*/
4883
4884/*!
4885 \typedef Phonon::SubtitleDescription
4886 \inmodule Phonon
4887 \internal
4888*/
4889
4890/*!
4891 \typedef Phonon::SubtitleDescriptionModel
4892 \inmodule Phonon
4893 \internal
4894*/
4895
4896/*!
4897 \typedef Phonon::AudioChannelDescription
4898 \inmodule Phonon
4899 \internal
4900*/
4901
4902/*!
4903 \typedef Phonon::AudioChannelDescriptionModel
4904 \inmodule Phonon
4905 \internal
4906*/
4907
4908/*!
4909 \typedef Phonon::AudioCaptureDevice
4910 \inmodule Phonon
4911 \internal
4912*/
4913
4914/*!
4915 \typedef Phonon::AudioCaptureDeviceModel
4916 \inmodule Phonon
4917 \internal
4918*/
4919
4920/*!
4921 \typedef Phonon::CleanUpFunction
4922 \inmodule Phonon
4923 \internal
4924*/
4925
4926/*!
4927 \typedef Phonon::QObjectPair
4928 \inmodule Phonon
4929 \since 4.4
4930 \internal
4931
4932*/
4933
4934/*!
4935 \typedef Phonon::AudioOutputDeviceModel
4936 \inmodule Phonon
4937 \brief provides an item view model containing available audio output devices.
4938
4939*/
4940
4941/*!
4942 \fn uint Phonon::qHash(const Phonon::EffectParameter &param)
4943 \internal
4944
4945*/
4946
4947/*!
4948 \fn Phonon::CleanUpGlobalStatic::~CleanUpGlobalStatic()
4949 \internal
4950*/
4951
4952/*!
4953 \class Phonon::ConstIface
4954 \inmodule Phonon
4955 \since 4.4
4956 \internal
4957*/
4958
4959/*!
4960 \class Phonon::CleanUpGlobalStatic
4961 \inmodule Phonon
4962 \since 4.4
4963 \internal
4964*/
4965
4966/*!
4967 \class Phonon::EffectParameterPrivate
4968 \inmodule Phonon
4969 \since 4.4
4970 \internal
4971
4972*/
4973
4974/*!
4975 \class Phonon::QSettingsGroup
4976 \inmodule Phonon
4977 \since 4.4
4978 \internal
4979
4980*/
4981
4982/*!
4983 \class Phonon::MediaNodeDestructionHandler
4984 \inmodule Phonon
4985 \since 4.4
4986 \internal
4987
4988*/
4989
4990/*!
4991 \fn Phonon::MediaNodeDestructionHandler::~MediaNodeDestructionHandler()
4992 \internal
4993 Called from Base::~Base if this object was registered
4994 using BasePrivate::addDestructionHandler().
4995*/
4996
4997/*!
4998 \fn Phonon::MediaNodeDestructionHandler::phononObjectDestroyed(MediaNodePrivate *)
4999 \internal
5000*/
5001
5002/*!
5003 \fn explicit Phonon::EffectWidget::EffectWidget(Effect *effect, QWidget *parent = 0)
5004 \internal
5005
5006 Constructs a new EffectWidget for the specified \a effect and with
5007 the specified \a parent.
5008*/
5009
5010/*!
5011 \fn Phonon::EffectWidget::~EffectWidget()
5012 \internal
5013*/
5014
5015/*!
5016 \fn QDebug Phonon::operator<<(QDebug s, const ObjectDescription<T> &o)
5017 \internal
5018*/
5019
5020/*!
5021 \class Phonon::ListModelHelper
5022 \inmodule Phonon
5023 \since 4.4
5024 \internal
5025*/
5026
5027/*!
5028 \class AudioOutputInterface42
5029 \inmodule Phonon
5030 \since 4.4
5031 \internal
5032*/
5033
Note: See TracBrowser for help on using the repository browser.