From ce79cbc21b6559f54d11da95fef7364616c3d872 Mon Sep 17 00:00:00 2001 From: trialuser02 Date: Fri, 8 Jun 2018 20:59:57 +0000 Subject: optimization git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@8007 90c681e8-e032-0410-971d-27865f9a5e38 --- src/plugins/Input/ffmpeg/decoderffmpegfactory.cpp | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) (limited to 'src/plugins/Input/ffmpeg/decoderffmpegfactory.cpp') diff --git a/src/plugins/Input/ffmpeg/decoderffmpegfactory.cpp b/src/plugins/Input/ffmpeg/decoderffmpegfactory.cpp index c1ea7c370..944ac98ec 100644 --- a/src/plugins/Input/ffmpeg/decoderffmpegfactory.cpp +++ b/src/plugins/Input/ffmpeg/decoderffmpegfactory.cpp @@ -156,7 +156,11 @@ Decoder *DecoderFFmpegFactory::create(const QString &path, QIODevice *input) QList DecoderFFmpegFactory::createPlayList(const QString &path, TrackInfo::Parts parts, QStringList *) { - QList list; + TrackInfo *info = new TrackInfo(path); + + if(parts == TrackInfo::NoParts) + return QList() << info; + AVFormatContext *in = 0; #ifdef Q_OS_WIN @@ -166,9 +170,10 @@ QList DecoderFFmpegFactory::createPlayList(const QString &path, Tra #endif { qDebug("DecoderFFmpegFactory: unable to open file"); - return list; + delete info; + return QList(); } - TrackInfo *info = new TrackInfo(path); + avformat_find_stream_info(in, 0); if(parts & TrackInfo::MetaData) @@ -225,14 +230,12 @@ QList DecoderFFmpegFactory::createPlayList(const QString &path, Tra info->setValue(Qmmp::BITS_PER_SAMPLE, c->bits_per_raw_sample); //info->setValue(Qmmp::FORMAT_NAME, QString::fromLatin1(avcodec_get_name(c->codec_id))); - + info->setDuration(in->duration * 1000 / AV_TIME_BASE); } } - info->setDuration(in->duration * 1000 / AV_TIME_BASE); avformat_close_input(&in); - list << info; - return list; + return QList() << info; } MetaDataModel* DecoderFFmpegFactory::createMetaDataModel(const QString &path, QObject *parent) -- cgit v1.2.3-13-gbd6f