![]() |
Qt 6.x
The Qt SDK
|
#include <avfmediaplayer_p.h>
Public Slots | |
void | setPlaybackRate (qreal rate) override |
void | nativeSizeChanged (QSize size) |
void | setPosition (qint64 pos) override |
void | play () override |
void | pause () override |
void | stop () override |
void | setVolume (float volume) |
void | setMuted (bool muted) |
void | audioOutputChanged () |
void | processEOS () |
void | processLoadStateChange (QMediaPlayer::PlaybackState newState) |
void | processPositionChange () |
void | processMediaLoadError () |
void | processLoadStateChange () |
void | processLoadStateFailure () |
void | processBufferStateChange (int bufferProgress) |
void | processDurationChange (qint64 duration) |
void | streamReady () |
void | streamDestroyed () |
void | updateTracks () |
void | setActiveTrack (QPlatformMediaPlayer::TrackType type, int index) override |
int | activeTrack (QPlatformMediaPlayer::TrackType type) override |
int | trackCount (TrackType) override |
QMediaMetaData | trackMetaData (TrackType type, int trackNumber) override |
![]() | |
void | deleteLater () |
\threadsafe | |
Public Member Functions | |
AVFMediaPlayer (QMediaPlayer *parent) | |
virtual | ~AVFMediaPlayer () |
void | setVideoSink (QVideoSink *sink) override |
void | setVideoOutput (AVFVideoRendererControl *output) |
AVAsset * | currentAssetHandle () |
QMediaPlayer::PlaybackState | state () const override |
QMediaPlayer::MediaStatus | mediaStatus () const override |
QUrl | media () const override |
QIODevice * | mediaStream () const override |
void | setMedia (const QUrl &content, QIODevice *stream) override |
qint64 | position () const override |
qint64 | duration () const override |
float | bufferProgress () const override |
bool | isAudioAvailable () const override |
bool | isVideoAvailable () const override |
bool | isSeekable () const override |
QMediaTimeRange | availablePlaybackRanges () const override |
qreal | playbackRate () const override |
void | setAudioOutput (QPlatformAudioOutput *output) override |
QMediaMetaData | metaData () const override |
![]() | |
Q_INVOKABLE | QObject (QObject *parent=nullptr) |
Constructs an object with parent object parent. | |
virtual | ~QObject () |
Destroys the object, deleting all its child objects. | |
virtual bool | event (QEvent *event) |
This virtual function receives events to an object and should return true if the event e was recognized and processed. | |
virtual bool | eventFilter (QObject *watched, QEvent *event) |
Filters events if this object has been installed as an event filter for the watched object. | |
QString | objectName () const |
Q_WEAK_OVERLOAD void | setObjectName (const QString &name) |
Sets the object's name to name. | |
void | setObjectName (QAnyStringView name) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. | |
QBindable< QString > | bindableObjectName () |
bool | isWidgetType () const |
Returns true if the object is a widget; otherwise returns false . | |
bool | isWindowType () const |
Returns true if the object is a window; otherwise returns false . | |
bool | isQuickItemType () const |
Returns true if the object is a QQuickItem; otherwise returns false . | |
bool | signalsBlocked () const noexcept |
Returns true if signals are blocked; otherwise returns false . | |
bool | blockSignals (bool b) noexcept |
If block is true, signals emitted by this object are blocked (i.e., emitting a signal will not invoke anything connected to it). | |
QThread * | thread () const |
Returns the thread in which the object lives. | |
void | moveToThread (QThread *thread) |
Changes the thread affinity for this object and its children. | |
int | startTimer (int interval, Qt::TimerType timerType=Qt::CoarseTimer) |
This is an overloaded function that will start a timer of type timerType and a timeout of interval milliseconds. | |
int | startTimer (std::chrono::milliseconds time, Qt::TimerType timerType=Qt::CoarseTimer) |
void | killTimer (int id) |
Kills the timer with timer identifier, id. | |
template<typename T > | |
T | findChild (const QString &aName=QString(), Qt::FindChildOptions options=Qt::FindChildrenRecursively) const |
Returns the child of this object that can be cast into type T and that is called name, or \nullptr if there is no such object. | |
template<typename T > | |
QList< T > | findChildren (const QString &aName, Qt::FindChildOptions options=Qt::FindChildrenRecursively) const |
Returns all children of this object with the given name that can be cast to type T, or an empty list if there are no such objects. | |
template<typename T > | |
QList< T > | findChildren (Qt::FindChildOptions options=Qt::FindChildrenRecursively) const |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. | |
const QObjectList & | children () const |
Returns a list of child objects. | |
void | setParent (QObject *parent) |
Makes the object a child of parent. | |
void | installEventFilter (QObject *filterObj) |
Installs an event filter filterObj on this object. | |
void | removeEventFilter (QObject *obj) |
Removes an event filter object obj from this object. | |
QMetaObject::Connection | connect (const QObject *sender, const char *signal, const char *member, Qt::ConnectionType type=Qt::AutoConnection) const |
bool | disconnect (const char *signal=nullptr, const QObject *receiver=nullptr, const char *member=nullptr) const |
bool | disconnect (const QObject *receiver, const char *member=nullptr) const |
void | dumpObjectTree () const |
Dumps a tree of children to the debug output. | |
void | dumpObjectInfo () const |
Dumps information about signal connections, etc. | |
bool | setProperty (const char *name, const QVariant &value) |
Sets the value of the object's name property to value. | |
bool | setProperty (const char *name, QVariant &&value) |
QVariant | property (const char *name) const |
Returns the value of the object's name property. | |
QList< QByteArray > | dynamicPropertyNames () const |
QBindingStorage * | bindingStorage () |
const QBindingStorage * | bindingStorage () const |
QObject * | parent () const |
Returns a pointer to the parent object. | |
bool | inherits (const char *classname) const |
Returns true if this object is an instance of a class that inherits className or a QObject subclass that inherits className; otherwise returns false . | |
![]() | |
virtual | ~QPlatformMediaPlayer () |
virtual QMediaPlayer::PlaybackState | state () const |
virtual QMediaPlayer::MediaStatus | mediaStatus () const |
virtual qint64 | duration () const =0 |
virtual qint64 | position () const |
virtual void | setPosition (qint64 position)=0 |
virtual float | bufferProgress () const =0 |
virtual bool | isAudioAvailable () const |
virtual bool | isVideoAvailable () const |
virtual bool | isSeekable () const |
virtual QMediaTimeRange | availablePlaybackRanges () const =0 |
virtual qreal | playbackRate () const =0 |
virtual void | setPlaybackRate (qreal rate)=0 |
virtual QUrl | media () const =0 |
virtual const QIODevice * | mediaStream () const =0 |
virtual void | setMedia (const QUrl &media, QIODevice *stream)=0 |
virtual void | play ()=0 |
virtual void | pause ()=0 |
virtual void | stop ()=0 |
virtual bool | streamPlaybackSupported () const |
virtual void | setAudioOutput (QPlatformAudioOutput *) |
virtual QMediaMetaData | metaData () const |
virtual void | setVideoSink (QVideoSink *)=0 |
virtual int | trackCount (TrackType) |
virtual QMediaMetaData | trackMetaData (TrackType, int) |
virtual int | activeTrack (TrackType) |
virtual void | setActiveTrack (TrackType, int) |
void | durationChanged (qint64 duration) |
void | positionChanged (qint64 position) |
void | audioAvailableChanged (bool audioAvailable) |
void | videoAvailableChanged (bool videoAvailable) |
void | seekableChanged (bool seekable) |
void | playbackRateChanged (qreal rate) |
void | bufferProgressChanged (float progress) |
void | metaDataChanged () |
void | tracksChanged () |
void | activeTracksChanged () |
void | stateChanged (QMediaPlayer::PlaybackState newState) |
void | mediaStatusChanged (QMediaPlayer::MediaStatus status) |
void | error (int error, const QString &errorString) |
void | resetCurrentLoop () |
bool | doLoop () |
int | loops () |
virtual void | setLoops (int loops) |
Static Public Member Functions | |
static void | videoOrientationForAssetTrack (AVAssetTrack *track, QVideoFrame::RotationAngle &angle, bool &mirrored) |
![]() | |
static QMetaObject::Connection | connect (const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType=Qt::AutoConnection) |
\threadsafe | |
static QMetaObject::Connection | connect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method, Qt::ConnectionType type=Qt::AutoConnection) |
template<typename Func1 , typename Func2 > | |
static QMetaObject::Connection | connect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, const typename QtPrivate::ContextTypeForFunctor< Func2 >::ContextType *context, Func2 &&slot, Qt::ConnectionType type=Qt::AutoConnection) |
template<typename Func1 , typename Func2 > | |
static QMetaObject::Connection | connect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, Func2 &&slot) |
static bool | disconnect (const QObject *sender, const char *signal, const QObject *receiver, const char *member) |
\threadsafe | |
static bool | disconnect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &member) |
static bool | disconnect (const QMetaObject::Connection &) |
Disconnect a connection. | |
template<typename Func1 , typename Func2 > | |
static bool | disconnect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, const typename QtPrivate::FunctionPointer< Func2 >::Object *receiver, Func2 slot) |
template<typename Func1 > | |
static bool | disconnect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, const QObject *receiver, void **zero) |
Public Attributes | |
QPlatformAudioOutput * | m_audioOutput = nullptr |
QList< QMediaMetaData > | tracks [QPlatformMediaPlayer::NTrackTypes] |
QList< AVPlayerItemTrack * > | nativeTracks [QPlatformMediaPlayer::NTrackTypes] |
Additional Inherited Members | |
![]() | |
enum | TrackType { VideoStream , AudioStream , SubtitleStream , NTrackTypes } |
![]() | |
void | destroyed (QObject *=nullptr) |
This signal is emitted immediately before the object obj is destroyed, after any instances of QPointer have been notified, and cannot be blocked. | |
void | objectNameChanged (const QString &objectName, QPrivateSignal) |
This signal is emitted after the object's name has been changed. | |
![]() | |
QObject * | sender () const |
Returns a pointer to the object that sent the signal, if called in a slot activated by a signal; otherwise it returns \nullptr. | |
int | senderSignalIndex () const |
int | receivers (const char *signal) const |
Returns the number of receivers connected to the signal. | |
bool | isSignalConnected (const QMetaMethod &signal) const |
virtual void | timerEvent (QTimerEvent *event) |
This event handler can be reimplemented in a subclass to receive timer events for the object. | |
virtual void | childEvent (QChildEvent *event) |
This event handler can be reimplemented in a subclass to receive child events. | |
virtual void | customEvent (QEvent *event) |
This event handler can be reimplemented in a subclass to receive custom events. | |
virtual void | connectNotify (const QMetaMethod &signal) |
virtual void | disconnectNotify (const QMetaMethod &signal) |
QObject (QObjectPrivate &dd, QObject *parent=nullptr) | |
![]() | |
QPlatformMediaPlayer (QMediaPlayer *parent=nullptr) | |
![]() | |
QScopedPointer< QObjectData > | d_ptr |
![]() | |
QString | objectName |
the name of this object | |
![]() | |
template< class T > T | qobject_cast (const QObject *object) |
Returns the given object cast to type T if the object is of type T (or of a subclass); otherwise returns \nullptr. | |
template< typename T > T | qFindChildqFindChildren (const QObject *obj, const QString &name)() |
template< typename T > QList< T > | qFindChildrenqFindChildren (const QObject *obj, const QString &name)() |
QObjectList | |
\macro Q_CLASSINFO(Name, Value) | |
Definition at line 40 of file avfmediaplayer_p.h.
AVFMediaPlayer::AVFMediaPlayer | ( | QMediaPlayer * | parent | ) |
Definition at line 451 of file avfmediaplayer.mm.
References QObject::connect(), processPositionChange(), setVideoOutput(), and QTimer::timeout().
|
virtual |
Definition at line 470 of file avfmediaplayer.mm.
References AVFMediaPlayerObserver::detatchSession, Q_FUNC_INFO, and qDebug.
|
overrideslot |
Definition at line 1145 of file avfmediaplayer.mm.
References i, and nativeTracks.
|
slot |
Definition at line 903 of file avfmediaplayer.mm.
References QPlatformAudioOutput::device, QString::fromUtf8(), QAudioDevice::id, QByteArray::isEmpty(), m_audioOutput, player, and str.
Referenced by setAudioOutput().
|
overridevirtual |
Implements QPlatformMediaPlayer.
Definition at line 685 of file avfmediaplayer.mm.
References QMediaTimeRange::addInterval(), duration(), QMediaTimeRange::isEmpty(), and startTime.
|
overridevirtual |
Implements QPlatformMediaPlayer.
Definition at line 635 of file avfmediaplayer.mm.
References Q_FUNC_INFO, and qDebug.
Referenced by processBufferStateChange().
AVAsset * AVFMediaPlayer::currentAssetHandle | ( | ) |
Definition at line 506 of file avfmediaplayer.mm.
References Q_FUNC_INFO, and qDebug.
|
overridevirtual |
Implements QPlatformMediaPlayer.
Definition at line 627 of file avfmediaplayer.mm.
References Q_FUNC_INFO, and qDebug.
Referenced by availablePlaybackRanges(), processDurationChange(), and setPosition().
|
overridevirtual |
Reimplemented from QPlatformMediaPlayer.
Definition at line 652 of file avfmediaplayer.mm.
|
overridevirtual |
Reimplemented from QPlatformMediaPlayer.
Definition at line 671 of file avfmediaplayer.mm.
Referenced by setPosition().
|
overridevirtual |
Reimplemented from QPlatformMediaPlayer.
Definition at line 666 of file avfmediaplayer.mm.
|
overridevirtual |
Implements QPlatformMediaPlayer.
Definition at line 525 of file avfmediaplayer.mm.
|
overridevirtual |
Reimplemented from QPlatformMediaPlayer.
Definition at line 520 of file avfmediaplayer.mm.
|
overridevirtual |
Implements QPlatformMediaPlayer.
Definition at line 530 of file avfmediaplayer.mm.
|
overridevirtual |
Reimplemented from QPlatformMediaPlayer.
Definition at line 727 of file avfmediaplayer.mm.
Referenced by updateTracks().
Definition at line 1182 of file avfmediaplayer.mm.
References AVFVideoSink::setNativeSize().
|
overrideslot |
Definition at line 830 of file avfmediaplayer.mm.
References QMediaPlayer::EndOfMedia, QMediaPlayer::NoMedia, QMediaPlayer::PausedState, position(), QPlatformMediaPlayer::positionChanged(), Q_EMIT, Q_FUNC_INFO, qDebug, AVFVideoRendererControl::setLayer(), setPosition(), QPlatformMediaPlayer::stateChanged(), and QTimer::stop().
|
overrideslot |
Definition at line 797 of file avfmediaplayer.mm.
References QMediaPlayer::BufferedMedia, QMediaPlayer::EndOfMedia, QMediaPlayer::InvalidMedia, QMediaPlayer::LoadedMedia, QMediaPlayer::NoMedia, QMediaPlayer::PlayingState, processLoadStateChange(), Q_EMIT, Q_FUNC_INFO, qDebug, QPlatformMediaPlayer::resetCurrentLoop(), AVFVideoRendererControl::setLayer(), setPosition(), QTimer::start(), and QPlatformMediaPlayer::stateChanged().
|
overridevirtual |
Implements QPlatformMediaPlayer.
Definition at line 704 of file avfmediaplayer.mm.
|
overridevirtual |
Reimplemented from QPlatformMediaPlayer.
Definition at line 613 of file avfmediaplayer.mm.
References time.
Referenced by pause(), processEOS(), processMediaLoadError(), processPositionChange(), setMedia(), and setPosition().
|
slot |
Definition at line 1009 of file avfmediaplayer.mm.
References QMediaPlayer::BufferedMedia, bufferProgress(), QPlatformMediaPlayer::bufferProgressChanged(), QPlatformMediaPlayer::mediaStatusChanged(), QMediaPlayer::PlayingState, Q_EMIT, QMediaPlayer::StalledMedia, and QTimer::start().
Definition at line 1034 of file avfmediaplayer.mm.
References duration(), QPlatformMediaPlayer::durationChanged(), and Q_EMIT.
|
slot |
Definition at line 918 of file avfmediaplayer.mm.
References QPlatformMediaPlayer::doLoop(), QMediaPlayer::EndOfMedia, QPlatformMediaPlayer::mediaStatusChanged(), position(), QPlatformMediaPlayer::positionChanged(), Q_EMIT, Q_FUNC_INFO, qDebug, AVFVideoRendererControl::setLayer(), setPosition(), QPlatformMediaPlayer::stateChanged(), and QMediaPlayer::StoppedState.
|
slot |
Definition at line 998 of file avfmediaplayer.mm.
References processLoadStateChange().
|
slot |
Definition at line 941 of file avfmediaplayer.mm.
References QMediaPlayer::BufferedMedia, AVFMetaData::fromAsset(), QMediaPlayer::LoadedMedia, QPlatformMediaPlayer::mediaStatusChanged(), QPlatformMediaPlayer::metaDataChanged(), newState(), QMediaPlayer::NoMedia, player, QMediaPlayer::PlayingState, Q_EMIT, Q_FUNC_INFO, qDebug, setPosition(), QTimer::start(), QMediaPlayer::StoppedState, updateTracks(), and AVFMediaPlayerObserver::videoTrack.
Referenced by play(), and processLoadStateChange().
|
slot |
Definition at line 1004 of file avfmediaplayer.mm.
References Q_EMIT, QPlatformMediaPlayer::stateChanged(), and QMediaPlayer::StoppedState.
|
slot |
Definition at line 1051 of file avfmediaplayer.mm.
References error, QMediaPlayer::FormatError, QMediaPlayer::InvalidMedia, QPlatformMediaPlayer::mediaStatusChanged(), position(), QPlatformMediaPlayer::positionChanged(), Q_EMIT, and tr.
|
slot |
Definition at line 1043 of file avfmediaplayer.mm.
References position(), QPlatformMediaPlayer::positionChanged(), Q_EMIT, and QMediaPlayer::StoppedState.
Referenced by AVFMediaPlayer().
|
overrideslot |
Definition at line 1121 of file avfmediaplayer.mm.
References QPlatformMediaPlayer::activeTracksChanged(), emit, i, AVFMediaPlayerObserver::m_playerItem, nativeTracks, and QPlatformMediaPlayer::SubtitleStream.
Referenced by updateTracks().
|
overridevirtual |
Reimplemented from QPlatformMediaPlayer.
Definition at line 709 of file avfmediaplayer.mm.
References audioOutputChanged(), QObject::connect(), QAudioOutput::deviceChanged(), QObject::disconnect(), m_audioOutput, QPlatformAudioOutput::muted, QAudioOutput::mutedChanged(), output, QPlatformAudioOutput::q, setMuted(), setVolume(), QPlatformAudioOutput::volume, and QAudioOutput::volumeChanged().
Implements QPlatformMediaPlayer.
Definition at line 547 of file avfmediaplayer.mm.
References QList< T >::clear(), QMediaMetaData::clear(), QPlatformMediaPlayer::durationChanged(), i, QUrl::isEmpty(), QMediaMetaData::isEmpty(), QMediaPlayer::LoadingMedia, QPlatformMediaPlayer::mediaStatusChanged(), QPlatformMediaPlayer::metaDataChanged(), nativeTracks, QMediaPlayer::NoMedia, QPlatformMediaPlayer::NTrackTypes, position(), QPlatformMediaPlayer::positionChanged(), Q_EMIT, Q_FUNC_INFO, qDebug, QVideoFrame::Rotation0, setStreamURL(), setURL(), QIODevice::size(), QPlatformMediaPlayer::stateChanged(), QMediaPlayer::StoppedState, QUrl::toEncoded(), tracks, QPlatformMediaPlayer::tracksChanged(), and QUrl::url().
|
slot |
Definition at line 892 of file avfmediaplayer.mm.
References player, Q_FUNC_INFO, and qDebug.
Referenced by setAudioOutput().
Definition at line 732 of file avfmediaplayer.mm.
References QPlatformMediaPlayer::playbackRateChanged(), player, QMediaPlayer::PlayingState, Q_EMIT, Q_FUNC_INFO, qDebug, and qFuzzyCompare().
Definition at line 750 of file avfmediaplayer.mm.
References QMediaPlayer::BufferedMedia, duration(), QMediaPlayer::EndOfMedia, isSeekable(), QMediaPlayer::LoadedMedia, QPlatformMediaPlayer::mediaStatusChanged(), QMediaPlayer::PausedState, pos, position(), QPlatformMediaPlayer::positionChanged(), Q_EMIT, Q_FUNC_INFO, qDebug, qMax(), and qMin().
Referenced by pause(), play(), processEOS(), processLoadStateChange(), and stop().
void AVFMediaPlayer::setVideoOutput | ( | AVFVideoRendererControl * | output | ) |
Definition at line 486 of file avfmediaplayer.mm.
References output, Q_FUNC_INFO, qDebug, AVFVideoRendererControl::setLayer(), and QMediaPlayer::StoppedState.
Referenced by AVFMediaPlayer().
|
overridevirtual |
Implements QPlatformMediaPlayer.
Definition at line 480 of file avfmediaplayer.mm.
References AVFVideoSinkInterface::setVideoSink().
|
slot |
Definition at line 881 of file avfmediaplayer.mm.
References player, Q_FUNC_INFO, and qDebug.
Referenced by setAudioOutput().
|
overridevirtual |
Reimplemented from QPlatformMediaPlayer.
Definition at line 515 of file avfmediaplayer.mm.
|
overrideslot |
Definition at line 858 of file avfmediaplayer.mm.
References QMediaPlayer::BufferedMedia, QMediaPlayer::LoadedMedia, QPlatformMediaPlayer::mediaStatusChanged(), Q_EMIT, Q_FUNC_INFO, qDebug, AVFVideoRendererControl::setLayer(), setPosition(), QPlatformMediaPlayer::stateChanged(), QTimer::stop(), and QMediaPlayer::StoppedState.
|
slot |
Definition at line 1068 of file avfmediaplayer.mm.
|
slot |
Definition at line 1063 of file avfmediaplayer.mm.
References setStreamURL(), and QUrl::toEncoded().
|
overrideslot |
Definition at line 1154 of file avfmediaplayer.mm.
References QList< T >::count(), and nativeTracks.
|
overrideslot |
Definition at line 1159 of file avfmediaplayer.mm.
References tracks.
|
slot |
Definition at line 1073 of file avfmediaplayer.mm.
References QList< T >::append(), QPlatformMediaPlayer::AudioStream, QList< T >::clear(), AVFMetaData::fromAssetTrack(), i, metaData(), nativeTracks, QPlatformMediaPlayer::NTrackTypes, Q_EMIT, QVideoFrame::Rotation0, setActiveTrack(), QPlatformMediaPlayer::SubtitleStream, tracks, QPlatformMediaPlayer::tracksChanged(), videoOrientationForAssetTrack(), QPlatformMediaPlayer::VideoStream, and AVFMediaPlayerObserver::videoTrack.
Referenced by processLoadStateChange().
|
static |
Definition at line 1198 of file avfmediaplayer.mm.
References qAbs(), qAtan2(), qFuzzyCompare(), qPow(), qRadiansToDegrees(), qSqrt(), QVideoFrame::Rotation0, QVideoFrame::Rotation180, QVideoFrame::Rotation270, and QVideoFrame::Rotation90.
Referenced by AVFMetaData::fromAssetTrack(), and updateTracks().
QPlatformAudioOutput* AVFMediaPlayer::m_audioOutput = nullptr |
Definition at line 72 of file avfmediaplayer_p.h.
Referenced by audioOutputChanged(), and setAudioOutput().
QList<AVPlayerItemTrack *> AVFMediaPlayer::nativeTracks[QPlatformMediaPlayer::NTrackTypes] |
Definition at line 116 of file avfmediaplayer_p.h.
Referenced by activeTrack(), setActiveTrack(), setMedia(), trackCount(), and updateTracks().
QList<QMediaMetaData> AVFMediaPlayer::tracks[QPlatformMediaPlayer::NTrackTypes] |
Definition at line 115 of file avfmediaplayer_p.h.
Referenced by setMedia(), trackMetaData(), and updateTracks().