1 | /*
|
---|
2 | This file is part of the KDE project
|
---|
3 | Copyright (C) 2005-2007 Matthias Kretz <[email protected]>
|
---|
4 | Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
|
---|
5 | Contact: Qt Software Information ([email protected])
|
---|
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 |
|
---|
1036 | \sa MediaSource::type()
|
---|
1037 | */
|
---|
1038 |
|
---|
1039 | /*!
|
---|
1040 | \fn Phonon::MediaSource::MediaSource()
|
---|
1041 | \internal
|
---|
1042 |
|
---|
1043 | Creates an invalid MediaSource object.
|
---|
1044 |
|
---|
1045 | \sa Invalid
|
---|
1046 | */
|
---|
1047 |
|
---|
1048 | /*!
|
---|
1049 | \fn Phonon::MediaSource::MediaSource(const QString &fileName)
|
---|
1050 |
|
---|
1051 | Creates a MediaSource object for the file specified by \a
|
---|
1052 | fileName. You can also use this constructor with \l{The Qt
|
---|
1053 | Resource System}{Qt resources}
|
---|
1054 |
|
---|
1055 | \omit
|
---|
1056 | \param fileName file name of a local media file or a Qt resource that was compiled in.
|
---|
1057 | \endomit
|
---|
1058 | */
|
---|
1059 |
|
---|
1060 | /*!
|
---|
1061 | \fn Phonon::MediaSource::MediaSource(const QUrl &url)
|
---|
1062 |
|
---|
1063 | Creates a MediaSource object for a the URL specified by \a url.
|
---|
1064 |
|
---|
1065 | If the multimedia content you would like to play back is on a
|
---|
1066 | remote network location, you should use this constructor; though,
|
---|
1067 | it also possible to specify an URL to a local file.
|
---|
1068 |
|
---|
1069 | \sa QUrl
|
---|
1070 | */
|
---|
1071 |
|
---|
1072 |
|
---|
1073 | /*!
|
---|
1074 | \fn Phonon::MediaSource::MediaSource(Phonon::DiscType discType, const QString &deviceName = QString())
|
---|
1075 |
|
---|
1076 | Creates a MediaSource object for the type of disc specified by \a discType in the named
|
---|
1077 | device referred to by \a deviceName.
|
---|
1078 |
|
---|
1079 | \note \a deviceName is a platform dependent device name. It can be useful to specify this
|
---|
1080 | if the computer has more than one CD drive. On KDE, it is recommended to use the Solid
|
---|
1081 | hardware discovery framework to retrieve the device name in a portable way.
|
---|
1082 | */
|
---|
1083 |
|
---|
1084 | /*!
|
---|
1085 | \fn Phonon::MediaSource::MediaSource(AbstractMediaStream *stream)
|
---|
1086 | \internal
|
---|
1087 | Creates a MediaSource object for a data stream.
|
---|
1088 |
|
---|
1089 | Your application can provide the media data by subclassing AbstractMediaStream and
|
---|
1090 | passing a pointer to that object. Phonon will never delete the \a stream.
|
---|
1091 |
|
---|
1092 | \param stream The AbstractMediaStream subclass to provide the media data.
|
---|
1093 |
|
---|
1094 | \sa setAutoDelete
|
---|
1095 | */
|
---|
1096 |
|
---|
1097 | /*!
|
---|
1098 | \fn Phonon::MediaSource::MediaSource(QIODevice *ioDevice)
|
---|
1099 |
|
---|
1100 | Creates a MediaSource object for the QIODevice specified by \a ioDevice.
|
---|
1101 |
|
---|
1102 | This constructor can be very handy in the combination of
|
---|
1103 | QByteArray and QBuffer.
|
---|
1104 |
|
---|
1105 | If you need to fetch multimedia data from a source that is not
|
---|
1106 | supported by MediaSource, you should subclass QIODevice and use
|
---|
1107 | this MediaSource constructor. It is important that you reimplement
|
---|
1108 | QIODevice::isSequential(), as it is used by MediaSource to
|
---|
1109 | determine if the media source is seekable.
|
---|
1110 |
|
---|
1111 | \a ioDevice is an arbitrary readable QIODevice subclass. If the device is not opened
|
---|
1112 | MediaSource will open it as QIODevice::ReadOnly.
|
---|
1113 |
|
---|
1114 | \note Sequential devices can also be used, but MediaObject::isSeekable() will
|
---|
1115 | return false as a result.
|
---|
1116 |
|
---|
1117 | \sa setAutoDelete()
|
---|
1118 | */
|
---|
1119 |
|
---|
1120 | /*!
|
---|
1121 | \fn Phonon::MediaSource::MediaSource(MediaSourcePrivate &)
|
---|
1122 | \internal
|
---|
1123 | */
|
---|
1124 |
|
---|
1125 | /*!
|
---|
1126 | \fn Phonon::MediaSource::~MediaSource()
|
---|
1127 |
|
---|
1128 | Destroys the MediaSource object. You should never delete a
|
---|
1129 | MediaSource yourself, the MediaObject will handle this.
|
---|
1130 |
|
---|
1131 | */
|
---|
1132 |
|
---|
1133 | /*!
|
---|
1134 | \fn Phonon::MediaSource::MediaSource(const MediaSource &other)
|
---|
1135 |
|
---|
1136 | Constructs a copy of the \a other media source.
|
---|
1137 |
|
---|
1138 | This constructor is fast thanks to explicit sharing.
|
---|
1139 | */
|
---|
1140 |
|
---|
1141 | /*!
|
---|
1142 | \fn MediaSource &Phonon::MediaSource::operator=(const MediaSource &other)
|
---|
1143 |
|
---|
1144 | Assigns the \a other media source to this media source and returns a
|
---|
1145 | reference to it.
|
---|
1146 |
|
---|
1147 | This operation is fast thanks to explicit sharing.
|
---|
1148 | */
|
---|
1149 |
|
---|
1150 | /*!
|
---|
1151 | \fn bool Phonon::MediaSource::operator==(const MediaSource &other) const
|
---|
1152 |
|
---|
1153 | Returns true if this media source is equal to the \a other media source;
|
---|
1154 | otherwise returns false.
|
---|
1155 | */
|
---|
1156 |
|
---|
1157 | /*!
|
---|
1158 | \fn void Phonon::MediaSource::setAutoDelete(bool enable)
|
---|
1159 |
|
---|
1160 | If \a enable is true, the media source will take ownership of the
|
---|
1161 | object passed in the \l{Phonon::}{MediaSource}'s constructor
|
---|
1162 | object that was passed in the constructor; otherwise, the
|
---|
1163 | programmer is responsible for deletion of this object.
|
---|
1164 |
|
---|
1165 | This setting is false by default. If you enable it, you should
|
---|
1166 | only access the stream or device as long as you keep the media
|
---|
1167 | source object around. As long as you keep the media source
|
---|
1168 | wrapping the stream or device, the object will not get deleted.
|
---|
1169 |
|
---|
1170 | \sa autoDelete()
|
---|
1171 | */
|
---|
1172 |
|
---|
1173 | /*!
|
---|
1174 | \fn bool Phonon::MediaSource::autoDelete() const
|
---|
1175 |
|
---|
1176 | Returns the setting of the auto-delete option. The default is
|
---|
1177 | false.
|
---|
1178 |
|
---|
1179 | \sa setAutoDelete()
|
---|
1180 | */
|
---|
1181 |
|
---|
1182 | /*!
|
---|
1183 | \fn Type Phonon::MediaSource::type() const
|
---|
1184 |
|
---|
1185 | Returns the type of the MediaSource (depends on the constructor
|
---|
1186 | that was used).
|
---|
1187 |
|
---|
1188 | \sa Type
|
---|
1189 | */
|
---|
1190 |
|
---|
1191 | /*!
|
---|
1192 | \fn QString Phonon::MediaSource::fileName() const
|
---|
1193 |
|
---|
1194 | Returns the file name of the MediaSource if type() ==
|
---|
1195 | LocalFile; otherwise, returns QString().
|
---|
1196 |
|
---|
1197 | \sa type()
|
---|
1198 | */
|
---|
1199 |
|
---|
1200 | /*!
|
---|
1201 | \fn QUrl Phonon::MediaSource::url() const
|
---|
1202 | Returns the URL of the MediaSource if type() == URL or type() == LocalFile;
|
---|
1203 | otherwise returns QUrl().
|
---|
1204 |
|
---|
1205 | \sa type()
|
---|
1206 | */
|
---|
1207 |
|
---|
1208 | /*!
|
---|
1209 | \fn Phonon::DiscType Phonon::MediaSource::discType() const
|
---|
1210 | Returns the disc type of the MediaSource if type() == Disc; otherwise
|
---|
1211 | returns NoDisc.
|
---|
1212 |
|
---|
1213 | \sa type()
|
---|
1214 | */
|
---|
1215 |
|
---|
1216 | /*!
|
---|
1217 | \fn QString Phonon::MediaSource::deviceName() const
|
---|
1218 |
|
---|
1219 | Returns the device name of the MediaSource if type() == Disc; otherwise
|
---|
1220 | returns QString().
|
---|
1221 |
|
---|
1222 | \sa type()
|
---|
1223 | */
|
---|
1224 |
|
---|
1225 | /*!
|
---|
1226 | \fn AbstractMediaStream *Phonon::MediaSource::stream() const
|
---|
1227 | \internal
|
---|
1228 | Returns the media stream of the MediaSource if type() == Stream; otherwise
|
---|
1229 | returns 0.
|
---|
1230 | QIODevices are handled as streams, too.
|
---|
1231 | */
|
---|
1232 |
|
---|
1233 | /*!
|
---|
1234 | \class Phonon::MediaSourcePrivate
|
---|
1235 | \inmodule Phonon
|
---|
1236 | \since 4.4
|
---|
1237 | \internal
|
---|
1238 | */
|
---|
1239 |
|
---|
1240 | /*!
|
---|
1241 | \class Phonon::SeekSlider
|
---|
1242 | \inmodule Phonon
|
---|
1243 | \inheaderfile Phonon/SeekSlider
|
---|
1244 | \since 4.4
|
---|
1245 | \brief The SeekSlider class provides a slider for seeking to positions in media streams.
|
---|
1246 |
|
---|
1247 | The SeekSlider connects to a \l{Phonon::}{MediaObject}, and
|
---|
1248 | controls the seek position in the object's media stream.
|
---|
1249 |
|
---|
1250 | The slider will connect to the necessary signals to keep track of
|
---|
1251 | the sliders maximum, minimum, and current values. It will also
|
---|
1252 | disable itself for non-seekable streams, and update the media
|
---|
1253 | object when the current value of the slider changes.
|
---|
1254 |
|
---|
1255 | Here follows a typical example of SeekSlider usage:
|
---|
1256 |
|
---|
1257 | \snippet doc/src/snippets/seekslider.cpp 0
|
---|
1258 |
|
---|
1259 | \sa Phonon::VolumeSlider, Phonon::VideoWidget, {Music Player Example}, {Phonon Module}
|
---|
1260 |
|
---|
1261 | */
|
---|
1262 |
|
---|
1263 | /*!
|
---|
1264 | \property Phonon::SeekSlider::iconVisible
|
---|
1265 | \brief whether the icon next to the slider is visible
|
---|
1266 |
|
---|
1267 | By default the icon is visible if the platform provides an icon; else
|
---|
1268 | it's hidden.
|
---|
1269 |
|
---|
1270 | */
|
---|
1271 |
|
---|
1272 | /*!
|
---|
1273 | \property Phonon::SeekSlider::tracking
|
---|
1274 | \brief whether slider tracking is enabled
|
---|
1275 |
|
---|
1276 | If tracking is enabled (the default), the media seeks
|
---|
1277 | while the slider is being dragged. If tracking is
|
---|
1278 | disabled, the media seeks only when the user
|
---|
1279 | releases the slider.
|
---|
1280 | */
|
---|
1281 |
|
---|
1282 | /*!
|
---|
1283 | \property Phonon::SeekSlider::pageStep
|
---|
1284 | \brief the page step interval
|
---|
1285 |
|
---|
1286 | The larger of two natural steps that a slider provides and
|
---|
1287 | typically corresponds to the user pressing PageUp or PageDown.
|
---|
1288 |
|
---|
1289 | Defaults to 5 seconds.
|
---|
1290 | */
|
---|
1291 |
|
---|
1292 | /*!
|
---|
1293 | \property Phonon::SeekSlider::singleStep
|
---|
1294 | \brief the single step interval
|
---|
1295 |
|
---|
1296 | The smaller of two natural steps that a slider provides and
|
---|
1297 | typically corresponds to the user pressing an arrow key.
|
---|
1298 |
|
---|
1299 | Defaults to 0.5 seconds.
|
---|
1300 | */
|
---|
1301 |
|
---|
1302 | /*!
|
---|
1303 | \property Phonon::SeekSlider::orientation
|
---|
1304 | \brief the orientation of the slider
|
---|
1305 |
|
---|
1306 | The orientation must be Qt::Vertical or Qt::Horizontal (the default).
|
---|
1307 | */
|
---|
1308 |
|
---|
1309 | /*!
|
---|
1310 | \property Phonon::SeekSlider::iconSize
|
---|
1311 | \brief the icon size used for the mute button/icon.
|
---|
1312 |
|
---|
1313 | The default size is defined by the GUI style.
|
---|
1314 | */
|
---|
1315 |
|
---|
1316 | /*!
|
---|
1317 | \fn explicit Phonon::SeekSlider::SeekSlider(QWidget *parent = 0)
|
---|
1318 |
|
---|
1319 | Constructs a seek slider widget with the given \a parent.
|
---|
1320 | */
|
---|
1321 |
|
---|
1322 | /*!
|
---|
1323 | \fn explicit Phonon::SeekSlider::SeekSlider(MediaObject *media, QWidget *parent = 0)
|
---|
1324 |
|
---|
1325 | Constructs a seek slider widget for the specified \a media with the
|
---|
1326 | given \a parent.
|
---|
1327 | */
|
---|
1328 |
|
---|
1329 | /*!
|
---|
1330 | \fn Phonon::SeekSlider::~SeekSlider()
|
---|
1331 | Destroys the seek slider.
|
---|
1332 | */
|
---|
1333 |
|
---|
1334 | /*!
|
---|
1335 | \fn Phonon::MediaObject *Phonon::SeekSlider::mediaObject() const
|
---|
1336 |
|
---|
1337 | Return the media object this SeekSlider controls.
|
---|
1338 | */
|
---|
1339 |
|
---|
1340 | /*!
|
---|
1341 | \class Phonon::SeekSliderPrivate
|
---|
1342 | \inmodule Phonon
|
---|
1343 | \since 4.4
|
---|
1344 | \internal
|
---|
1345 | */
|
---|
1346 |
|
---|
1347 | /*!
|
---|
1348 | \fn void Phonon::SeekSlider::setMediaObject(MediaObject *media)
|
---|
1349 |
|
---|
1350 | Sets the media object to be controlled by this slider to the \a media specified.
|
---|
1351 | */
|
---|
1352 |
|
---|
1353 | /*!
|
---|
1354 | \class Phonon::VideoPlayer
|
---|
1355 | \inmodule Phonon
|
---|
1356 | \inheaderfile Phonon/VideoPlayer
|
---|
1357 | \since 4.4
|
---|
1358 | \brief The VideoPlayer widget is used to perform playback of video.
|
---|
1359 |
|
---|
1360 | With VideoPlayer you can get results quickly and easily. You can
|
---|
1361 | do the standard playback tasks like play(), pause(), and stop(),
|
---|
1362 | but also set a playback volume and seek - if the media and backend
|
---|
1363 | supports seeking.
|
---|
1364 |
|
---|
1365 | VideoPlayer is provided for convenience and removes the need to
|
---|
1366 | create a media graph with a \l{Phonon::}{MediaObject},
|
---|
1367 | \l{Phonon::}{AudioOutput}, and \l{Phonon::}{VideoWidget}. If
|
---|
1368 | you need functionality not supported by the player, you can build
|
---|
1369 | this \l{Building Graphs}{graph} yourself.
|
---|
1370 |
|
---|
1371 | Keep in mind that when the VideoPlayer instance is deleted the
|
---|
1372 | playback will stop.
|
---|
1373 |
|
---|
1374 | Note also that most of the functions in this class are
|
---|
1375 | asynchronous. For instance, a media source may not play
|
---|
1376 | immediately after you call the play() function.
|
---|
1377 |
|
---|
1378 | A play and forget code example:
|
---|
1379 | \snippet doc/src/snippets/code/doc_src_phonon-api.qdoc 4
|
---|
1380 |
|
---|
1381 | \sa {Phonon Module}, MediaObject
|
---|
1382 | */
|
---|
1383 |
|
---|
1384 | /*!
|
---|
1385 | \fn Phonon::VideoPlayer::VideoPlayer(QWidget *parent = 0)
|
---|
1386 |
|
---|
1387 | Constructs a new video widget with a \a parent using
|
---|
1388 | Phonon::VideoCategory as its category.
|
---|
1389 |
|
---|
1390 | \param parent The QObject parent.
|
---|
1391 | */
|
---|
1392 |
|
---|
1393 | /*!
|
---|
1394 | \fn Phonon::VideoPlayer::VideoPlayer(Phonon::Category category, QWidget *parent = 0)
|
---|
1395 |
|
---|
1396 | Constructs a new VideoPlayer instance with the specified \a
|
---|
1397 | parent.
|
---|
1398 |
|
---|
1399 | \a category is the category used for the audio output device.
|
---|
1400 | */
|
---|
1401 |
|
---|
1402 | /*!
|
---|
1403 | \fn Phonon::VideoPlayer::~VideoPlayer()
|
---|
1404 |
|
---|
1405 | On destruction the playback is stopped, also the audio output is
|
---|
1406 | removed so that the desktop mixer will not show the application
|
---|
1407 | anymore. If you need a persistent audio output don't use
|
---|
1408 | VideoPlayer but MediaObject, VideoPath and VideoOutput.
|
---|
1409 | */
|
---|
1410 |
|
---|
1411 | /*!
|
---|
1412 | \fn qint64 Phonon::VideoPlayer::totalTime() const
|
---|
1413 |
|
---|
1414 | Get the total time (in milliseconds) of the file currently being played.
|
---|
1415 | */
|
---|
1416 |
|
---|
1417 | /*!
|
---|
1418 | \fn qint64 Phonon::VideoPlayer::currentTime() const
|
---|
1419 |
|
---|
1420 | Get the current time (in milliseconds) of the file currently being played.
|
---|
1421 | */
|
---|
1422 |
|
---|
1423 | /*!
|
---|
1424 | \fn float Phonon::VideoPlayer::volume() const
|
---|
1425 |
|
---|
1426 | This is the current volume of the output as voltage factor.
|
---|
1427 |
|
---|
1428 | 1.0 means 100%, 0.5 means 50% voltage/25% power, 0.0 means 0%
|
---|
1429 | */
|
---|
1430 |
|
---|
1431 | /*!
|
---|
1432 | \fn bool Phonon::VideoPlayer::isPlaying() const
|
---|
1433 |
|
---|
1434 | Returns true if it is currently playing; otherwise returns false if it
|
---|
1435 | is currently stopped or paused
|
---|
1436 | */
|
---|
1437 |
|
---|
1438 | /*!
|
---|
1439 | \fn bool Phonon::VideoPlayer::isPaused() const
|
---|
1440 |
|
---|
1441 | Returns true if it is currently paused; otherwise returns false if it
|
---|
1442 | is currently playing or stopped.
|
---|
1443 | */
|
---|
1444 |
|
---|
1445 | /*!
|
---|
1446 | \fn void Phonon::VideoPlayer::load(const Phonon::MediaSource &source)
|
---|
1447 |
|
---|
1448 | Starts pre-loading the media data from the specified \a source and
|
---|
1449 | filling audio buffers in the backend.
|
---|
1450 |
|
---|
1451 | When there's already a media playing (or paused) it will be stopped
|
---|
1452 | (the finished signal will not be emitted).
|
---|
1453 |
|
---|
1454 | \sa MediaObject::setCurrentSource()
|
---|
1455 | */
|
---|
1456 |
|
---|
1457 | /*!
|
---|
1458 | \fn void Phonon::VideoPlayer::play(const Phonon::MediaSource &source)
|
---|
1459 |
|
---|
1460 | Plays the media from the given \a source. Starts playback as fast as
|
---|
1461 | possible.
|
---|
1462 | This can take a considerable time depending on the URL and the
|
---|
1463 | backend.
|
---|
1464 |
|
---|
1465 | If you need low latency between calling play() and the sound actually
|
---|
1466 | starting to play on your output device you need to use MediaObject
|
---|
1467 | and be able to set the URL before calling play(). Note that
|
---|
1468 | \snippet doc/src/snippets/code/doc_src_phonon-api.qdoc 5
|
---|
1469 | doesn't make a difference: the application should be idle between the
|
---|
1470 | load and play calls so that the backend can start preloading the
|
---|
1471 | media and fill audio buffers.
|
---|
1472 | */
|
---|
1473 |
|
---|
1474 | /*!
|
---|
1475 | \fn void Phonon::VideoPlayer::play()
|
---|
1476 |
|
---|
1477 | Continues playback of paused media. Restarts playback of a stopped
|
---|
1478 | (or newly loaded) media.
|
---|
1479 |
|
---|
1480 | \sa MediaObject::play(), play()
|
---|
1481 | */
|
---|
1482 |
|
---|
1483 | /*!
|
---|
1484 | \fn void Phonon::VideoPlayer::pause()
|
---|
1485 |
|
---|
1486 | Pauses the playback.
|
---|
1487 |
|
---|
1488 | \sa MediaObject::pause()
|
---|
1489 | */
|
---|
1490 |
|
---|
1491 | /*!
|
---|
1492 | \fn void Phonon::VideoPlayer::stop()
|
---|
1493 |
|
---|
1494 | Stops the playback.
|
---|
1495 |
|
---|
1496 | \sa MediaObject::stop()
|
---|
1497 | */
|
---|
1498 |
|
---|
1499 | /*!
|
---|
1500 | \fn void Phonon::VideoPlayer::seek(qint64 ms)
|
---|
1501 |
|
---|
1502 | Seeks to the requested time. Note that the backend is free to
|
---|
1503 | ignore the seek request if the media source isn't seekable; you
|
---|
1504 | can check this by asking the media object of the VideoPlayer.
|
---|
1505 |
|
---|
1506 | \snippet doc/src/snippets/videomedia.cpp 0
|
---|
1507 |
|
---|
1508 | The \a ms parameter is the time in milliseconds from the start of
|
---|
1509 | the media.
|
---|
1510 |
|
---|
1511 | The call is asynchronous, so currentTime() can still be the old
|
---|
1512 | value right after this method was called. If all you need is a
|
---|
1513 | slider that shows the current position and allows the user to
|
---|
1514 | seek, use the class SeekSlider.
|
---|
1515 |
|
---|
1516 | \sa MediaObject::seek(), MediaObject::isSeekable(), mediaObject()
|
---|
1517 | */
|
---|
1518 |
|
---|
1519 | /*!
|
---|
1520 | \fn void Phonon::VideoPlayer::setVolume(float volume)
|
---|
1521 |
|
---|
1522 | Sets the \a volume of the output as voltage factor.
|
---|
1523 |
|
---|
1524 | 1.0 means 100%, 0.5 means 50% voltage/25% power, 0.0 means 0%
|
---|
1525 | */
|
---|
1526 |
|
---|
1527 | /*!
|
---|
1528 | \fn MediaObject *Phonon::VideoPlayer::mediaObject() const
|
---|
1529 |
|
---|
1530 | Returns the media object being used by the player.
|
---|
1531 |
|
---|
1532 | The media object can be accessed directly instead of using the
|
---|
1533 | \l{VideoPlayer}s convenience functions, e.g., play() and stop().
|
---|
1534 | It is also possible to give the object to other Phonon widgets,
|
---|
1535 | e.g., a \l{Phonon::}{SeekSlider} or a \l{Phonon::}{VolumeSlider}.
|
---|
1536 |
|
---|
1537 | \sa Phonon::SeekSlider, Phonon::MediaObject
|
---|
1538 | */
|
---|
1539 |
|
---|
1540 | /*!
|
---|
1541 | \fn AudioOutput *Phonon::VideoPlayer::audioOutput() const
|
---|
1542 |
|
---|
1543 | Returns the audio output object being used by the player.
|
---|
1544 |
|
---|
1545 | */
|
---|
1546 |
|
---|
1547 | /*!
|
---|
1548 | \fn VideoWidget *Phonon::VideoPlayer::videoWidget() const
|
---|
1549 |
|
---|
1550 | Returns the video widget being used by the player.
|
---|
1551 | */
|
---|
1552 |
|
---|
1553 | /*!
|
---|
1554 | \fn void Phonon::VideoPlayer::finished()
|
---|
1555 |
|
---|
1556 | This signal is emitted when the playback finished.
|
---|
1557 |
|
---|
1558 | */
|
---|
1559 |
|
---|
1560 | /*!
|
---|
1561 | \class Phonon::VideoWidgetPrivate
|
---|
1562 | \inmodule Phonon
|
---|
1563 | \since 4.4
|
---|
1564 | \internal
|
---|
1565 | */
|
---|
1566 |
|
---|
1567 | /*!
|
---|
1568 | \class Phonon::MediaObject
|
---|
1569 | \inmodule Phonon
|
---|
1570 | \inheaderfile Phonon/MediaObject
|
---|
1571 | \since 4.4
|
---|
1572 | \brief The MediaObject class provides an interface for media playback.
|
---|
1573 |
|
---|
1574 |
|
---|
1575 | The media object manages a \l{Phonon::}{MediaSource}, which
|
---|
1576 | supplies the media object with multimedia content, e.g., from a
|
---|
1577 | file. A playback in Phonon is always started by calling the
|
---|
1578 | \l{Phonon::MediaObject::}{play()} function.
|
---|
1579 |
|
---|
1580 | The state of play (play, pause, stop, seek) is controlled by the
|
---|
1581 | media object, and you can also query the current
|
---|
1582 | \l{Phonon::MediaObject::}{state()}. It keeps track of the playback
|
---|
1583 | position in the media stream, and emits the
|
---|
1584 | \l{Phonon::MediaObject::}{tick()} signal when the current position
|
---|
1585 | in the stream changes.
|
---|
1586 |
|
---|
1587 | Notice that most functions of this class are asynchronous, so you
|
---|
1588 | cannot rely on that a state is entered after a function call
|
---|
1589 | before you receive the \l{Phonon::MediaObject::}{stateChanged()}
|
---|
1590 | signal. The description of the \l{Phonon::}{State} enum gives a
|
---|
1591 | description of the different states.
|
---|
1592 |
|
---|
1593 | Before play() is called, the media object should be connected to
|
---|
1594 | \l{Sinks}{output nodes}, which outputs the media to the
|
---|
1595 | underlying hardware. The output nodes required are dependent on
|
---|
1596 | the contents of the multimedia file that is played back. Phonon
|
---|
1597 | has currently two output nodes: the \l{Phonon::}{AudioOutput} for
|
---|
1598 | audio content and \l{Phonon::}{VideoWidget} for video content. If
|
---|
1599 | a \l{Phonon::}{MediaSource} contains both audio and video, both
|
---|
1600 | nodes need to be connected to the media object.
|
---|
1601 |
|
---|
1602 | \snippet snippets/phonon.cpp 4
|
---|
1603 | \snippet snippets/phonon.cpp 5
|
---|
1604 |
|
---|
1605 | The media object can queue sources for playback. When it has
|
---|
1606 | finished to play one source, it will start playing the next in the
|
---|
1607 | queue; the new source is then removed from the queue. The
|
---|
1608 | queue can be altered at any time.
|
---|
1609 |
|
---|
1610 | \snippet doc/src/snippets/code/doc_src_phonon-api.qdoc 7
|
---|
1611 |
|
---|
1612 | You can also make use of the
|
---|
1613 | \l{Phonon::MediaObject::}{aboutToFinish()} signal, which is
|
---|
1614 | guaranteed to be emitted in time for altering the queue.
|
---|
1615 |
|
---|
1616 | \snippet doc/src/snippets/code/doc_src_phonon-api.qdoc 8
|
---|
1617 |
|
---|
1618 | When playback is finishing, i.e., when a media source has been
|
---|
1619 | played to the end and the queue is empty, several signals are
|
---|
1620 | emitted. First, the media object will emit aboutToFinish() -
|
---|
1621 | shortly before the playback has finished - and then finished().
|
---|
1622 | The stateChanged() signal will also be emitted with
|
---|
1623 | \l{Phonon::}{PausedState}, which is the state the media object
|
---|
1624 | takes when the playback is finished. If you wish to enter another
|
---|
1625 | state, you can connect a slot to finished() and set a new state
|
---|
1626 | there.
|
---|
1627 |
|
---|
1628 | The media object resolves the meta information, such as title,
|
---|
1629 | artist, and album. The meta data is not resolved immediately after
|
---|
1630 | a new source is provided, but will be resolved before the object
|
---|
1631 | leaves the \l{Phonon::}{LoadingState}. The data is queried by
|
---|
1632 | string keys - which should follow the Ogg Vorbis specification
|
---|
1633 | \l http://xiph.org/vorbis/doc/v-comment.html - or by using the
|
---|
1634 | \l{Phonon::}{MetaData} enum. The data available will depend on the
|
---|
1635 | type and content of the individual media files. metaDataChanged()
|
---|
1636 | will be emitted when the media object has resolved new meta data.
|
---|
1637 |
|
---|
1638 | Errors encountered during playback and loading of media sources
|
---|
1639 | are reported by emitting a state changed signal with
|
---|
1640 | \l{Phonon::}{ErrorState}. The severity of the error can be queried
|
---|
1641 | by the \l{Phonon::}{ErrorType}. With a \l{Phonon::}{NormalError},
|
---|
1642 | it might be possible to continue the playback, for instance, if
|
---|
1643 | only audio playback fails for a media source which also has video.
|
---|
1644 | A \l{Phonon::}{FatalError} indicates that Phonon cannot continue
|
---|
1645 | playback of the current source, but it is possible to try with a
|
---|
1646 | different one. A user readable error message is given by
|
---|
1647 | errorString().
|
---|
1648 |
|
---|
1649 | \sa Phonon::MediaSource, Phonon::AudioOutput, VideoWidget,
|
---|
1650 | {Music Player Example}, {Phonon Overview}, Phonon::VideoPlayer,
|
---|
1651 | Phonon::createPlayer(), {Phonon Module}
|
---|
1652 |
|
---|
1653 | */
|
---|
1654 |
|
---|
1655 | /*!
|
---|
1656 | \property Phonon::MediaObject::transitionTime
|
---|
1657 | \brief Defines the time between playback of two media sources
|
---|
1658 | in the media queue.
|
---|
1659 |
|
---|
1660 | A positive transition time defines a gap of silence between queued
|
---|
1661 | media sources.
|
---|
1662 |
|
---|
1663 | A transition time of 0 ms requests gapless playback (i.e., the
|
---|
1664 | next source in the media queue starts immediately after the
|
---|
1665 | playback of the current source finishes).
|
---|
1666 |
|
---|
1667 | A negative transition time defines a crossfade between the queued
|
---|
1668 | media sources.
|
---|
1669 |
|
---|
1670 | Defaults to 0 (gapless playback).
|
---|
1671 |
|
---|
1672 | \warning This feature might not work reliably with every
|
---|
1673 | backend.
|
---|
1674 | */
|
---|
1675 |
|
---|
1676 | /*!
|
---|
1677 | \property Phonon::MediaObject::prefinishMark
|
---|
1678 | \brief the time when the prefinishMarkReached signal is emitted before playback ends.
|
---|
1679 |
|
---|
1680 | This property specifies the time in milliseconds the
|
---|
1681 | prefinishMarkReached() signal is emitted before the playback
|
---|
1682 | finishes. A value of \c 0 disables the signal. The signal is only
|
---|
1683 | emitted for the last source in the \l{queue()}{media queue}.
|
---|
1684 |
|
---|
1685 | Defaults to \c 0 (disabled).
|
---|
1686 |
|
---|
1687 | \warning For some media data the total time cannot be determined
|
---|
1688 | accurately, therefore the accuracy of the prefinishMarkReached signal
|
---|
1689 | can be bad sometimes. Still, it is better to use this method than to
|
---|
1690 | look at totalTime() and currentTime() to emulate the behavior
|
---|
1691 | because the backend might have more information available than your
|
---|
1692 | application does through totalTime() and currentTime().
|
---|
1693 |
|
---|
1694 | \sa prefinishMarkReached()
|
---|
1695 | */
|
---|
1696 |
|
---|
1697 | /*!
|
---|
1698 | \property Phonon::MediaObject::tickInterval
|
---|
1699 | \brief The time interval in milliseconds between two ticks.
|
---|
1700 |
|
---|
1701 | The tick() signal is emitted continuously during playback.
|
---|
1702 | The tick interval is the time that elapses between the emission of two tick signals.
|
---|
1703 | If you set the interval to \c 0 the tick signal gets disabled.
|
---|
1704 |
|
---|
1705 | The tick() signal can, for instance, be used to update widgets
|
---|
1706 | that show the current position in the playback of a media source.
|
---|
1707 |
|
---|
1708 | Defaults to \c 0 (disabled).
|
---|
1709 |
|
---|
1710 | \warning The back-end is free to choose a different tick interval close
|
---|
1711 | to what you asked for. This means that the following code \c may fail:
|
---|
1712 | \snippet doc/src/snippets/code/doc_src_phonon-api.qdoc 9
|
---|
1713 | On the other hand the following is guaranteed:
|
---|
1714 | \snippet doc/src/snippets/code/doc_src_phonon-api.qdoc 10
|
---|
1715 |
|
---|
1716 | \sa tick()
|
---|
1717 | */
|
---|
1718 |
|
---|
1719 | /*!
|
---|
1720 | \fn Phonon::MediaObject::~MediaObject()
|
---|
1721 |
|
---|
1722 | Destroys the MediaObject.
|
---|
1723 | */
|
---|
1724 |
|
---|
1725 | /*!
|
---|
1726 | \fn State Phonon::MediaObject::state() const
|
---|
1727 |
|
---|
1728 | Returns the current Phonon::State of the object.
|
---|
1729 |
|
---|
1730 | \sa Phonon::State, stateChanged()
|
---|
1731 | */
|
---|
1732 |
|
---|
1733 | /*!
|
---|
1734 | \fn bool Phonon::MediaObject::hasVideo() const
|
---|
1735 |
|
---|
1736 | Check whether the current media source includes a video stream.
|
---|
1737 |
|
---|
1738 | \warning This information is not resolved immediately after a
|
---|
1739 | media object gets a new source. Listen to the hasVideoChanged()
|
---|
1740 | signal instead.
|
---|
1741 |
|
---|
1742 | \snippet doc/src/snippets/code/doc_src_phonon-api.qdoc 11
|
---|
1743 |
|
---|
1744 | Returns \c true if the media contains video data; otherwise,
|
---|
1745 | returns \c false.
|
---|
1746 |
|
---|
1747 | \sa hasVideoChanged()
|
---|
1748 | */
|
---|
1749 |
|
---|
1750 | /*!
|
---|
1751 | \fn bool Phonon::MediaObject::isSeekable() const
|
---|
1752 |
|
---|
1753 | Check whether it is possible to seek, i.e., change the
|
---|
1754 | playback position in the media stream.
|
---|
1755 |
|
---|
1756 | \warning This information is not solved immediately after the
|
---|
1757 | media object gets a new media source. The hasVideoChanged() signal
|
---|
1758 | is emitted after this information is available.
|
---|
1759 |
|
---|
1760 | \snippet doc/src/snippets/code/doc_src_phonon-api.qdoc 12
|
---|
1761 |
|
---|
1762 | Returns \c true if the current media may be seeked; otherwise,
|
---|
1763 | returns \c false.
|
---|
1764 |
|
---|
1765 | \sa seekableChanged()
|
---|
1766 | */
|
---|
1767 |
|
---|
1768 | /*!
|
---|
1769 | \fn QStringList Phonon::MediaObject::metaData(const QString &key) const
|
---|
1770 |
|
---|
1771 | Returns the strings associated with the given \a key.
|
---|
1772 |
|
---|
1773 | Backends should use the keys specified in the Ogg Vorbis
|
---|
1774 | documentation: \l http://xiph.org/vorbis/doc/v-comment.html
|
---|
1775 |
|
---|
1776 | Therefore the following should work with every backend:
|
---|
1777 |
|
---|
1778 | Note that meta data is not resolved before the \c
|
---|
1779 | metaDataChanged() signal is emitted.
|
---|
1780 |
|
---|
1781 | A typical usage looks like this:
|
---|
1782 |
|
---|
1783 | \snippet doc/src/snippets/code/doc_src_phonon-api.qdoc 13
|
---|
1784 | */
|
---|
1785 |
|
---|
1786 | /*!
|
---|
1787 | \fn QStringList Phonon::MediaObject::metaData(Phonon::MetaData key) const
|
---|
1788 |
|
---|
1789 | Returns the strings associated with the given \a key.
|
---|
1790 |
|
---|
1791 | Same as above except that the keys are defined in the
|
---|
1792 | Phonon::MetaData enum.
|
---|
1793 |
|
---|
1794 | \sa metaDataChanged()
|
---|
1795 | */
|
---|
1796 |
|
---|
1797 | /*!
|
---|
1798 | \fn QMultiMap<QString, QString> Phonon::MediaObject::metaData() const
|
---|
1799 |
|
---|
1800 | Returns all meta data in a multi map.
|
---|
1801 |
|
---|
1802 | \sa metaDataChanged()
|
---|
1803 | */
|
---|
1804 |
|
---|
1805 | /*!
|
---|
1806 | \fn QString Phonon::MediaObject::errorString() const
|
---|
1807 |
|
---|
1808 | Returns a human-readable description of the last error that occurred.
|
---|
1809 | The strings given may vary between backends.
|
---|
1810 |
|
---|
1811 | The error description can be used to give a message to the user -
|
---|
1812 | and the developer - when the stateChanged() signal is emitted with
|
---|
1813 | \l{Phonon::}{ErrorState}.
|
---|
1814 |
|
---|
1815 | \section1 Qt Backends
|
---|
1816 |
|
---|
1817 | On Windows, Qt fetches its error messages from the DirectShow
|
---|
1818 | backend. This usually includes an error number, which can be
|
---|
1819 | looked up in the DirectShow documentation:
|
---|
1820 | \l{http://msdn.microsoft.com/archive/default.asp?url=/archive/en-us/dx81_c/directx_cpp/htm/errorandsuccesscodes.asp}.
|
---|
1821 |
|
---|
1822 | On Linux and Mac, the error strings are not fetched directly from
|
---|
1823 | the backend, but are created in the backend.
|
---|
1824 |
|
---|
1825 | \sa Phonon::ErrorState, stateChanged()
|
---|
1826 | */
|
---|
1827 |
|
---|
1828 | /*!
|
---|
1829 | \fn ErrorType Phonon::MediaObject::errorType() const
|
---|
1830 |
|
---|
1831 | Tells your program what to do about the last error that occurred.
|
---|
1832 | Use this function after receiving a stateChanged() signal with
|
---|
1833 | \l{Phonon::}{ErrorState}.
|
---|
1834 |
|
---|
1835 | \sa Phonon::ErrorType, Phonon::ErrorState, stateChanged()
|
---|
1836 | */
|
---|
1837 |
|
---|
1838 | /*!
|
---|
1839 | \fn MediaSource Phonon::MediaObject::currentSource() const
|
---|
1840 |
|
---|
1841 | Returns the current media source, i.e., the media source that is
|
---|
1842 | being played back. The current source is either set with
|
---|
1843 | setCurrentSource() or taken from the media queue() when a media
|
---|
1844 | source has finished playing.
|
---|
1845 |
|
---|
1846 | \sa setCurrentSource()
|
---|
1847 | */
|
---|
1848 |
|
---|
1849 | /*!
|
---|
1850 | \fn void Phonon::MediaObject::setCurrentSource(const MediaSource &source)
|
---|
1851 |
|
---|
1852 | Set the media source the MediaObject should use.
|
---|
1853 |
|
---|
1854 | After the media object receives a new source, it will enter the
|
---|
1855 | \l{Phonon::}{LoadingState}. When it is ready to play, it
|
---|
1856 | enters the \l{Phonon::}{StoppedState} unless another state
|
---|
1857 | has been requested, e.g., by calling play().
|
---|
1858 |
|
---|
1859 | \a source is the MediaSource object to the media data. You can
|
---|
1860 | just as well use a QUrl or QString (for a local file) here.
|
---|
1861 |
|
---|
1862 | We show an example:
|
---|
1863 |
|
---|
1864 | \snippet doc/src/snippets/code/doc_src_phonon-api.qdoc 14
|
---|
1865 |
|
---|
1866 | \sa currentSource()
|
---|
1867 | */
|
---|
1868 |
|
---|
1869 | /*!
|
---|
1870 | \fn QList<MediaSource> Phonon::MediaObject::queue() const
|
---|
1871 |
|
---|
1872 | Returns the queued media sources.
|
---|
1873 |
|
---|
1874 | This does list does not include the current source,
|
---|
1875 | returned by currentSource().
|
---|
1876 |
|
---|
1877 | \sa enqueue()
|
---|
1878 | */
|
---|
1879 |
|
---|
1880 | /*!
|
---|
1881 | \fn void Phonon::MediaObject::setQueue(const QList<MediaSource> &sources)
|
---|
1882 |
|
---|
1883 | Set the \a sources to play when the current source has finished.
|
---|
1884 |
|
---|
1885 | This function will overwrite the current queue.
|
---|
1886 |
|
---|
1887 | \sa clearQueue(), enqueue()
|
---|
1888 | */
|
---|
1889 |
|
---|
1890 | /*!
|
---|
1891 | \fn void Phonon::MediaObject::setQueue(const QList<QUrl> &urls)
|
---|
1892 |
|
---|
1893 | Set the \a urls to play when the current media has finished.
|
---|
1894 |
|
---|
1895 | This function overwrites the current queue.
|
---|
1896 |
|
---|
1897 | \sa clearQueue(), enqueue()
|
---|
1898 | */
|
---|
1899 |
|
---|
1900 | /*!
|
---|
1901 | \fn void Phonon::MediaObject::enqueue(const MediaSource &source)
|
---|
1902 |
|
---|
1903 | Appends \a source to the queue.
|
---|
1904 |
|
---|
1905 | You can use this function to provide the next source after the
|
---|
1906 | aboutToFinish() signal has been emitted.
|
---|
1907 |
|
---|
1908 | \sa aboutToFinish(), setQueue(), clearQueue()
|
---|
1909 | */
|
---|
1910 |
|
---|
1911 | /*!
|
---|
1912 | \fn void Phonon::MediaObject::enqueue(const QList<MediaSource> &sources)
|
---|
1913 |
|
---|
1914 | Appends multiple \a sources to the queue.
|
---|
1915 |
|
---|
1916 | \sa setQueue(), clearQueue()
|
---|
1917 | */
|
---|
1918 |
|
---|
1919 | /*!
|
---|
1920 | \fn void Phonon::MediaObject::enqueue(const QList<QUrl> &urls)
|
---|
1921 |
|
---|
1922 | Appends the URLs in \a urls to the media source queue.
|
---|
1923 |
|
---|
1924 | The function will create \l{MediaSource}s from the \l{QUrl}s, and
|
---|
1925 | append these to the queue.
|
---|
1926 |
|
---|
1927 | \sa setQueue(), clearQueue()
|
---|
1928 | */
|
---|
1929 |
|
---|
1930 | /*!
|
---|
1931 | \fn void Phonon::MediaObject::clearQueue()
|
---|
1932 |
|
---|
1933 | Clears the queue of media sources.
|
---|
1934 |
|
---|
1935 | \sa queue(), enqueue()
|
---|
1936 | */
|
---|
1937 |
|
---|
1938 | /*!
|
---|
1939 | \fn qint64 Phonon::MediaObject::currentTime() const
|
---|
1940 |
|
---|
1941 | Returns the current time (in milliseconds), i.e., position in the
|
---|
1942 | media stream, of the file currently being played.
|
---|
1943 |
|
---|
1944 | \sa tick(), totalTime(), remainingTime()
|
---|
1945 | */
|
---|
1946 |
|
---|
1947 | /*!
|
---|
1948 | \fn qint64 Phonon::MediaObject::totalTime() const
|
---|
1949 |
|
---|
1950 | Get the total time (in milliseconds) of the file currently being played.
|
---|
1951 |
|
---|
1952 | Returns the total time in milliseconds.
|
---|
1953 |
|
---|
1954 | \warning The total time is not defined before the media object
|
---|
1955 | enters the \l{Phonon::}{LoadingState}.
|
---|
1956 |
|
---|
1957 | \sa totalTimeChanged()
|
---|
1958 | */
|
---|
1959 |
|
---|
1960 | /*!
|
---|
1961 | \fn qint64 Phonon::MediaObject::remainingTime() const
|
---|
1962 |
|
---|
1963 | Get the remaining time (in milliseconds) of the file currently being played.
|
---|
1964 |
|
---|
1965 | Returns the remaining time in milliseconds.
|
---|
1966 |
|
---|
1967 | \sa totalTime(), currentTime(), totalTimeChanged()
|
---|
1968 | */
|
---|
1969 |
|
---|
1970 | /*!
|
---|
1971 | \fn void Phonon::MediaObject::play()
|
---|
1972 |
|
---|
1973 | Requests playback of the media data to start.
|
---|
1974 |
|
---|
1975 | Playback starts when the stateChanged() signal is emitted with
|
---|
1976 | \l{Phonon::}{PlayingState}.
|
---|
1977 |
|
---|
1978 | If the media object is already in a
|
---|
1979 | \l{Phonon::}{PlayingState}, nothing happens.
|
---|
1980 |
|
---|
1981 | \sa stop(), pause(), stateChanged()
|
---|
1982 | */
|
---|
1983 |
|
---|
1984 | /*!
|
---|
1985 | \fn void Phonon::MediaObject::pause()
|
---|
1986 |
|
---|
1987 | Requests playback to pause, and the media object to enter the
|
---|
1988 | \l{Phonon::}{PausedState}. If it was paused already, nothing
|
---|
1989 | changes.
|
---|
1990 |
|
---|
1991 | This function is asynchronous and the media might not be paused
|
---|
1992 | immediately.
|
---|
1993 |
|
---|
1994 | \sa play(), stop(), stateChanged()
|
---|
1995 | */
|
---|
1996 |
|
---|
1997 | /*!
|
---|
1998 | \fn void Phonon::MediaObject::stop()
|
---|
1999 |
|
---|
2000 | Requests playback to stop, and the media object to enter the
|
---|
2001 | \l{Phonon::}{StoppedState}. If it was stopped before
|
---|
2002 | nothing changes.
|
---|
2003 |
|
---|
2004 | This function is asynchronous and the media might not be
|
---|
2005 | stopped immediately.
|
---|
2006 |
|
---|
2007 | \sa play(), pause(), stateChanged()
|
---|
2008 | */
|
---|
2009 |
|
---|
2010 | /*!
|
---|
2011 | \fn void Phonon::MediaObject::seek(qint64 time)
|
---|
2012 |
|
---|
2013 | Requests a seek to the \a time indicated, specified in milliseconds.
|
---|
2014 |
|
---|
2015 | You can only seek if state() is PlayingState, BufferingState or PausedState.
|
---|
2016 |
|
---|
2017 | The call is asynchronous, so currentTime can still be the old
|
---|
2018 | value right after this method was called. If all you need is a
|
---|
2019 | slider that shows the current position and allows the user to
|
---|
2020 | seek, use the class SeekSlider.
|
---|
2021 |
|
---|
2022 | If the current source of the media object is not seekable, calls
|
---|
2023 | to this functions do nothing.
|
---|
2024 |
|
---|
2025 | \sa SeekSlider, tick()
|
---|
2026 | */
|
---|
2027 |
|
---|
2028 | /*!
|
---|
2029 | \fn void Phonon::MediaObject::stateChanged(Phonon::State newstate, Phonon::State oldstate)
|
---|
2030 |
|
---|
2031 | This signal is emitted when the state of the MediaObject has changed.
|
---|
2032 | The \a oldstate and \a newstate parameters indicate the previous
|
---|
2033 | state and current state of the media object.
|
---|
2034 |
|
---|
2035 | If you are only interested in the new state of the media object, you can
|
---|
2036 | connect this signal to a slot that accepts only one State argument.
|
---|
2037 | */
|
---|
2038 |
|
---|
2039 | /*!
|
---|
2040 | \fn void Phonon::MediaObject::tick(qint64 time)
|
---|
2041 |
|
---|
2042 | This signal is emitted in intervals defined by the
|
---|
2043 | \l{tickInterval} property. The current position of the media
|
---|
2044 | object in the stream is given by the \a time parameter. The \a
|
---|
2045 | time is specified in milliseconds.
|
---|
2046 |
|
---|
2047 | \sa tickInterval
|
---|
2048 | */
|
---|
2049 |
|
---|
2050 | /*!
|
---|
2051 | \fn void Phonon::MediaObject::metaDataChanged()
|
---|
2052 |
|
---|
2053 | This signal is emitted when the media object has resolved new meta
|
---|
2054 | data. This will happen before the media object leaves the
|
---|
2055 | \l{Phonon::}{LoadingState} after a new source has been set.
|
---|
2056 |
|
---|
2057 | This signal is not emitted when the media object removes the
|
---|
2058 | current data, i.e., when a new source is set or an error has
|
---|
2059 | occurred. If you need to know this, you can listen for the
|
---|
2060 | \l{Phonon::}{ErrorState}, and connect to the
|
---|
2061 | \l{Phonon::MediaObject::}{currentSourceChanged()} signal.
|
---|
2062 |
|
---|
2063 | You can get the new meta data with the metaData methods.
|
---|
2064 |
|
---|
2065 | \sa metaData(), currentSourceChanged(), stateChanged(), Phonon::State
|
---|
2066 | */
|
---|
2067 |
|
---|
2068 | /*!
|
---|
2069 | \fn void Phonon::MediaObject::seekableChanged(bool isSeekable)
|
---|
2070 |
|
---|
2071 | This signal is emitted when the media object's ability to seek in
|
---|
2072 | the media stream changes. \a isSeekable is true if it is possible
|
---|
2073 | to seek(); otherwise, it is false.
|
---|
2074 |
|
---|
2075 | Change in the ability to seek in the stream usually happens when
|
---|
2076 | the current source changes or when an error occurs.
|
---|
2077 |
|
---|
2078 | \omit Emitted whenever the return value of isSeekable()
|
---|
2079 | changes. \endomit
|
---|
2080 |
|
---|
2081 | Normally you'll check isSeekable() after setting a new media
|
---|
2082 | source, and then let this signal tell you when seeking is
|
---|
2083 | possible. That way you don't have to poll isSeekable().
|
---|
2084 | */
|
---|
2085 |
|
---|
2086 | /*!
|
---|
2087 | \fn void Phonon::MediaObject::hasVideoChanged(bool hasVideo)
|
---|
2088 |
|
---|
2089 | Emitted whenever the return value of hasVideo() changes, i.e.,
|
---|
2090 | the media source being played back contains video.
|
---|
2091 |
|
---|
2092 | Normally you'll check hasVideo() first and then let this signal
|
---|
2093 | tell you whether video is available now or not. That way you
|
---|
2094 | don't have to poll hasVideo().
|
---|
2095 |
|
---|
2096 | \a hasVideo is true when the stream contains video and adding a
|
---|
2097 | VideoWidget will show a video, and false if there is no video data
|
---|
2098 | in the stream and adding a VideoWidget will show an empty (black)
|
---|
2099 | VideoWidget.
|
---|
2100 | */
|
---|
2101 |
|
---|
2102 | /*!
|
---|
2103 | \fn void Phonon::MediaObject::bufferStatus(int percentFilled)
|
---|
2104 |
|
---|
2105 | Provides information about the status of the buffer.
|
---|
2106 |
|
---|
2107 | When a MediaObject is in the \l{Phonon::}{BufferingState}, it will
|
---|
2108 | send this signal regularly. \a percentFilled is a number between 0
|
---|
2109 | and 100 telling you how much the buffer is filled.
|
---|
2110 |
|
---|
2111 | You can use this signal to show a progress bar to the user when
|
---|
2112 | in BufferingState:
|
---|
2113 |
|
---|
2114 | \snippet doc/src/snippets/code/doc_src_phonon-api.qdoc 15
|
---|
2115 |
|
---|
2116 | Note that the \l{Phonon::}{BufferingState} is commonly used when
|
---|
2117 | waiting for data over a network connection, but this might not be
|
---|
2118 | true for all backends.
|
---|
2119 | */
|
---|
2120 |
|
---|
2121 | /*!
|
---|
2122 | \fn void Phonon::MediaObject::finished()
|
---|
2123 |
|
---|
2124 | Emitted when the object has finished playback. It is not emitted
|
---|
2125 | if you call stop(), pause() or load(). It is emitted only when the
|
---|
2126 | current media source has finished playing and the media queue() is
|
---|
2127 | empty, or when a \l{Phonon::FatalError}{fatal error} occurs.
|
---|
2128 |
|
---|
2129 | \warning This signal is not emitted when the current source has
|
---|
2130 | finished and there's another source in the queue. It is only
|
---|
2131 | emitted when the queue is empty.
|
---|
2132 |
|
---|
2133 | \sa currentSourceChanged(), aboutToFinish(), prefinishMarkReached()
|
---|
2134 | */
|
---|
2135 |
|
---|
2136 | /*!
|
---|
2137 | \fn void Phonon::MediaObject::currentSourceChanged(const Phonon::MediaSource &newSource)
|
---|
2138 |
|
---|
2139 | Emitted when the MediaObject fetches a new MediaSource from the
|
---|
2140 | queue() and before it enters the \l{Phonon::}{LoadingState} for
|
---|
2141 | the new source. The media object will take a new source from the
|
---|
2142 | queue() when it has finished the playback of the
|
---|
2143 | \l{currentSource()}{current source}.
|
---|
2144 |
|
---|
2145 | \a newSource is the source that starts to play at the time the
|
---|
2146 | signal is emitted.
|
---|
2147 | */
|
---|
2148 |
|
---|
2149 | /*!
|
---|
2150 | \fn void Phonon::MediaObject::aboutToFinish()
|
---|
2151 |
|
---|
2152 | Emitted before the playback of the whole queue ends. When this
|
---|
2153 | signal is emitted you still have time to enqueue() a new
|
---|
2154 | MediaSource, so that playback continues.
|
---|
2155 |
|
---|
2156 | If you need a signal to be emitted at a specific time before
|
---|
2157 | playback is finished, you should use the prefinishMarkReached()
|
---|
2158 | signal instead.
|
---|
2159 |
|
---|
2160 | \sa enqueue(), prefinishMark, prefinishMarkReached()
|
---|
2161 | */
|
---|
2162 |
|
---|
2163 | /*!
|
---|
2164 | \fn void Phonon::MediaObject::prefinishMarkReached(qint32 msecToEnd)
|
---|
2165 |
|
---|
2166 | Emitted when there are only \a msecToEnd milliseconds left
|
---|
2167 | of playback.
|
---|
2168 |
|
---|
2169 | \warning This signal is not emitted when there is another source
|
---|
2170 | in the queue. It is only emitted when the queue is empty.
|
---|
2171 |
|
---|
2172 | \sa setPrefinishMark(), prefinishMark(), aboutToFinish(), finished()
|
---|
2173 | */
|
---|
2174 |
|
---|
2175 | /*!
|
---|
2176 | \fn void Phonon::MediaObject::totalTimeChanged(qint64 newTotalTime)
|
---|
2177 |
|
---|
2178 | This signal is emitted as soon as the total time of the media file is
|
---|
2179 | known or has changed. For most non-local media data the total
|
---|
2180 | time of the media can only be known after some time. At that time the
|
---|
2181 | totalTime function can not return useful information. You have
|
---|
2182 | to wait for this signal to know the real total time.
|
---|
2183 |
|
---|
2184 | \a newTotalTime is the length of the media file in milliseconds.
|
---|
2185 |
|
---|
2186 | \sa totalTime()
|
---|
2187 | */
|
---|
2188 |
|
---|
2189 | /*!
|
---|
2190 | \fn MediaObject *Phonon::createPlayer(Phonon::Category category, const MediaSource &source = MediaSource())
|
---|
2191 |
|
---|
2192 | Convenience function to create a MediaObject and AudioOutput
|
---|
2193 | connected by a path. The \l{Phonon::}{MediaObject} return will
|
---|
2194 | have \a source set as its current source and the specified \a
|
---|
2195 | category.
|
---|
2196 |
|
---|
2197 | */
|
---|
2198 |
|
---|
2199 | /*!
|
---|
2200 | \class Phonon::MediaObjectPrivate
|
---|
2201 | \inmodule Phonon
|
---|
2202 | \since 4.4
|
---|
2203 | \internal
|
---|
2204 | */
|
---|
2205 |
|
---|
2206 | /*!
|
---|
2207 | \namespace Phonon::BackendCapabilities
|
---|
2208 | \inmodule Phonon
|
---|
2209 | \since 4.4
|
---|
2210 | \brief The BackendCapabilities namespace contains functions to describe the capabilities of the multimedia backend.
|
---|
2211 |
|
---|
2212 | */
|
---|
2213 |
|
---|
2214 | /*!
|
---|
2215 | \class Phonon::BackendCapabilitiesPrivate
|
---|
2216 | \inmodule Phonon
|
---|
2217 | \since 4.4
|
---|
2218 | \internal
|
---|
2219 | */
|
---|
2220 |
|
---|
2221 | /*!
|
---|
2222 | \class Phonon::BackendCapabilities::Notifier
|
---|
2223 | \since 4.4
|
---|
2224 | \inmodule Phonon
|
---|
2225 | \inheaderfile Phonon/BackendCapabilities
|
---|
2226 |
|
---|
2227 | Notifications about backend capabilities.
|
---|
2228 | */
|
---|
2229 |
|
---|
2230 | /*!
|
---|
2231 | \fn void Phonon::BackendCapabilities::Notifier::capabilitiesChanged()
|
---|
2232 |
|
---|
2233 | This signal is emitted if the capabilities have changed. This can
|
---|
2234 | happen if the user has requested a backend change.
|
---|
2235 | */
|
---|
2236 |
|
---|
2237 | /*!
|
---|
2238 | \fn void Phonon::BackendCapabilities::Notifier::availableAudioOutputDevicesChanged()
|
---|
2239 |
|
---|
2240 | This signal is emitted when audio output devices were plugged or
|
---|
2241 | unplugged.
|
---|
2242 |
|
---|
2243 | Check BackendCapabilities::availableAudioOutputDevices to get the
|
---|
2244 | current list of available devices.
|
---|
2245 | */
|
---|
2246 |
|
---|
2247 | /*!
|
---|
2248 | \fn Notifier *Phonon::BackendCapabilities::notifier()
|
---|
2249 |
|
---|
2250 | Use this function to get a QObject pointer to connect to the capabilitiesChanged signal.
|
---|
2251 |
|
---|
2252 | \return a pointer to a QObject.
|
---|
2253 |
|
---|
2254 | The capabilitiesChanged signal is emitted if the capabilities have changed. This can
|
---|
2255 | happen if the user has requested a backend change.
|
---|
2256 |
|
---|
2257 | To connect to this signal do the following:
|
---|
2258 | \snippet doc/src/snippets/code/doc_src_phonon-api.qdoc 16
|
---|
2259 |
|
---|
2260 | \sa Notifier::capabilitiesChanged()
|
---|
2261 | */
|
---|
2262 |
|
---|
2263 | /*!
|
---|
2264 | \fn QStringList Phonon::BackendCapabilities::availableMimeTypes()
|
---|
2265 |
|
---|
2266 | Returns a list of mime types that the Backend can decode.
|
---|
2267 |
|
---|
2268 | \sa isMimeTypeAvailable()
|
---|
2269 | */
|
---|
2270 |
|
---|
2271 | /*!
|
---|
2272 | \fn bool Phonon::BackendCapabilities::isMimeTypeAvailable(const QString &mimeType)
|
---|
2273 |
|
---|
2274 | Often all you want to know is whether one given MIME type can be
|
---|
2275 | decoded by the backend. Use this method in favor of
|
---|
2276 | availableMimeTypes() as it can give you a negative answer without
|
---|
2277 | having a backend loaded.
|
---|
2278 |
|
---|
2279 | Returns true if the given \a mimeType is supported by the backend;
|
---|
2280 | otherwise, returns false.
|
---|
2281 |
|
---|
2282 | \sa availableMimeTypes()
|
---|
2283 | */
|
---|
2284 |
|
---|
2285 | /*!
|
---|
2286 | \fn QList<AudioOutputDevice> Phonon::BackendCapabilities::availableAudioOutputDevices()
|
---|
2287 |
|
---|
2288 | Returns the audio output devices the backend supports.
|
---|
2289 |
|
---|
2290 | \return A list of AudioOutputDevice objects that give a name and
|
---|
2291 | description for every supported audio output device.
|
---|
2292 | */
|
---|
2293 |
|
---|
2294 | /*!
|
---|
2295 | \fn QList<EffectDescription> Phonon::BackendCapabilities::availableAudioEffects()
|
---|
2296 |
|
---|
2297 | Returns descriptions for the audio effects the backend supports.
|
---|
2298 |
|
---|
2299 | \return A list of AudioEffectDescription objects that give a name and
|
---|
2300 | description for every supported audio effect.
|
---|
2301 | */
|
---|
2302 |
|
---|
2303 | /*!
|
---|
2304 | \internal
|
---|
2305 | \class ObjectDescriptionModelData
|
---|
2306 | \internal
|
---|
2307 | \inmodule Phonon
|
---|
2308 | \brief Data class for models for ObjectDescription objects.
|
---|
2309 | */
|
---|
2310 |
|
---|
2311 | /*!
|
---|
2312 | \typedef Phonon::EffectDescription
|
---|
2313 | \relates Phonon::ObjectDescription
|
---|
2314 |
|
---|
2315 | EffectDescription gives a description of an \l{Processors}{audio
|
---|
2316 | effect}. It is a typedef of the \l{Phonon::}{ObjectDescription}
|
---|
2317 | class. Please see its class description for details.
|
---|
2318 |
|
---|
2319 | EffectDescription is used to create audio \l{Phonon::}{Effect}s,
|
---|
2320 | which can be inserted into a media graph, altering an audio
|
---|
2321 | stream.
|
---|
2322 |
|
---|
2323 | \sa Phonon::ObjectDescription, {Capabilities Example}, {Media
|
---|
2324 | Player}
|
---|
2325 |
|
---|
2326 | */
|
---|
2327 |
|
---|
|
---|