From c6db720ffabf1fe466bd31999575dbb4f5afa2a4 Mon Sep 17 00:00:00 2001 From: wang-bin Date: Wed, 9 Apr 2014 22:58:47 +0800 Subject: [PATCH] seek backward to a key frame for accurate seek --- src/AVDemuxer.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/AVDemuxer.cpp b/src/AVDemuxer.cpp index 2539e298..e1625a3b 100644 --- a/src/AVDemuxer.cpp +++ b/src/AVDemuxer.cpp @@ -155,7 +155,7 @@ AVDemuxer::AVDemuxer(const QString& fileName, QObject *parent) , _file_name(fileName) , m_pQAVIO(0) , mSeekUnit(SeekByTime) - , mSeekTarget(SeekTarget_KeyFrame) + , mSeekTarget(SeekTarget_AccurateFrame) , mpDict(0) { mpInterrup = new InterruptHandler(this); @@ -379,6 +379,9 @@ bool AVDemuxer::seek(qint64 pos) * from AV_TIME_BASE units to the stream specific time_base. */ int seek_flag = (backward ? AVSEEK_FLAG_BACKWARD : 0); + if (mSeekTarget == SeekTarget_AccurateFrame) { + seek_flag = AVSEEK_FLAG_BACKWARD; + } if (mSeekTarget == SeekTarget_AnyFrame) { seek_flag = AVSEEK_FLAG_ANY; }