diff --git a/src/AVDemuxThread.cpp b/src/AVDemuxThread.cpp index 9e192fce1..f86ff1136 100644 --- a/src/AVDemuxThread.cpp +++ b/src/AVDemuxThread.cpp @@ -595,6 +595,7 @@ void AVDemuxThread::run() if (!(mediaEndAction() & MediaEndAction_Pause)) break; pause(true); + Q_EMIT mediaEndReached(); Q_EMIT requestClockPause(true); if (aqueue) aqueue->blockEmpty(true); diff --git a/src/AVDemuxThread.h b/src/AVDemuxThread.h index f2a9080b9..2e7ffcf25 100644 --- a/src/AVDemuxThread.h +++ b/src/AVDemuxThread.h @@ -66,6 +66,7 @@ class AVDemuxThread : public QThread void seekFinished(qint64 timestamp); void stepFinished(); void internalSubtitlePacketRead(int index, const QtAV::Packet& packet); + void mediaEndReached(); // emitted at the end of media if MediaEndAction_Pause is set private slots: void seekOnPauseFinished(); void frameDeliveredOnStepForward(); diff --git a/src/AVPlayer.cpp b/src/AVPlayer.cpp index c1a36396c..a5f857507 100644 --- a/src/AVPlayer.cpp +++ b/src/AVPlayer.cpp @@ -95,6 +95,7 @@ AVPlayer::AVPlayer(QObject *parent) : connect(d->read_thread, SIGNAL(bufferProgressChanged(qreal)), this, SIGNAL(bufferProgressChanged(qreal))); connect(d->read_thread, SIGNAL(seekFinished(qint64)), this, SLOT(onSeekFinished(qint64)), Qt::DirectConnection); connect(d->read_thread, SIGNAL(internalSubtitlePacketRead(int, QtAV::Packet)), this, SIGNAL(internalSubtitlePacketRead(int, QtAV::Packet)), Qt::DirectConnection); + connect(d->read_thread, SIGNAL(mediaEndReached()), this, SIGNAL(mediaEndReached()), Qt::DirectConnection); d->vcapture = new VideoCapture(this); } diff --git a/src/QtAV/AVPlayer.h b/src/QtAV/AVPlayer.h index e297b0370..6ef00460b 100644 --- a/src/QtAV/AVPlayer.h +++ b/src/QtAV/AVPlayer.h @@ -604,6 +604,7 @@ public Q_SLOTS: */ void internalSubtitleHeaderRead(const QByteArray& codec, const QByteArray& data); void internalSubtitlePacketRead(int track, const QtAV::Packet& packet); + void mediaEndReached(); // emitted at the end of media if MediaEndAction_Pause is set private Q_SLOTS: void loadInternal(); // simply load void playInternal(); // simply play