From: Jean-Baptiste Mardelle Date: Mon, 19 Jan 2009 12:09:46 +0000 (+0000) Subject: Westley thumbnailer: reindent + cleanup useless includes X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=21fa2f24bb1096be8e8cb4f969198b3e2bc0e913;p=kdenlive Westley thumbnailer: reindent + cleanup useless includes svn path=/branches/KDE4/; revision=2930 --- diff --git a/thumbnailer/westleypreview.cpp b/thumbnailer/westleypreview.cpp index af1a58c0..c792f7da 100644 --- a/thumbnailer/westleypreview.cpp +++ b/thumbnailer/westleypreview.cpp @@ -24,19 +24,13 @@ #include #include -#include -#include -#include #include #include -#include #include #include #include #include -#include #include -#include #include #include @@ -46,157 +40,153 @@ #define DBG_AREA //#include "config.h" -extern "C" -{ - KDE_EXPORT ThumbCreator *new_creator() - { +extern "C" { + KDE_EXPORT ThumbCreator *new_creator() { return new WestleyPreview; } } WestleyPreview::WestleyPreview() -{ + : m_rand(0), m_inigoprocess(0) { } -WestleyPreview::~WestleyPreview() -{ - delete rand; - delete inigoprocess; +WestleyPreview::~WestleyPreview() { + delete m_rand; + delete m_inigoprocess; } bool WestleyPreview::startAndWaitProcess(const QStringList &args) { kDebug(DBG_AREA) << "westleypreview: starting process with args: " << args << endl; - inigoprocess->start( args.join(" ") ); - if(! inigoprocess->waitForStarted() ) { + m_inigoprocess->start(args.join(" ")); + if (! m_inigoprocess->waitForStarted()) { kDebug(DBG_AREA) << "westleypreview: PROCESS NOT STARTED!!! exiting\n"; return false; } - if(! inigoprocess->waitForFinished() ) { + if (! m_inigoprocess->waitForFinished()) { kDebug(DBG_AREA) << "westleypreview: PROCESS DIDN'T FINISH!! exiting\n"; - inigoprocess->close(); + m_inigoprocess->close(); return false; } - kDebug() << "westleypreview: process started and ended correctly\n"; - return true; + kDebug() << "westleypreview: process started and ended correctly\n"; + return true; } -bool WestleyPreview::create(const QString &path, int width, int height, QImage &img) -{ +bool WestleyPreview::create(const QString &path, int width, int height, QImage &img) { QFileInfo fi(path); /*if (fi.suffix().trimmed() != "westley" && fi.suffix().trimmed() != "kdenlive") { kDebug(DBG_AREA) << "westleypreview: matched extension " << fi.suffix().prepend('.') << "; exiting.\n"; return false; }*/ - playerBin=KStandardDirs::findExe("inigo"); - if(playerBin.isEmpty()) - { - kDebug(DBG_AREA) << "westleypreview: inigo not found, exiting.\n"; + playerBin = KStandardDirs::findExe("inigo"); + if (playerBin.isEmpty()) { + kDebug(DBG_AREA) << "westleypreview: inigo not found, exiting.\n"; return false; } - fileinfo.seconds=0; - fileinfo.fps=0; + fileinfo.seconds = 0; + fileinfo.fps = 0; - rand=new KRandomSequence(QDateTime::currentDateTime().toTime_t()); - inigoprocess=new QProcess(); + m_rand = new KRandomSequence(QDateTime::currentDateTime().toTime_t()); + m_inigoprocess = new QProcess(); KUrl furl(path); kDebug(DBG_AREA) << "videopreview: url=" << furl << "; local:" << furl.isLocalFile() << endl; - fileinfo.towidth=width; - fileinfo.toheight=height; + fileinfo.towidth = width; + fileinfo.toheight = height; QPixmap pix; // if(furl.isLocalFile()) // { QStringList args; - //TODO: modify inigo so that it can return some infos about a westley clip (duration, track number,fps,...) + //TODO: modify inigo so that it can return some infos about a westley clip (duration, track number,fps,...) // without actually playing the file -/* - args << playerBin << QString("\"" + path + "\"") << "-file-info"; - - kDebug(DBG_AREA) << "videopreview: starting process: --_" << " " << args.join(" ") << "_--\n"; - if (! startAndWaitProcess(args) ) return NULL; - - QString information=QString(inigoprocess->readAllStandardOutput() ); - QRegExp findInfos("ID_VIDEO_FPS=([\\d]*).*ID_LENGTH=([\\d]*).*"); - if(findInfos.indexIn( information) == -1 ) - { - kDebug(DBG_AREA) << "videopreview: No information found, exiting\n"; - return NULL; - } - fileinfo.seconds =findInfos.cap(2).toInt(); - fileinfo.fps=findInfos.cap(1).toInt(); - */ + /* + args << playerBin << QString("\"" + path + "\"") << "-file-info"; + + kDebug(DBG_AREA) << "videopreview: starting process: --_" << " " << args.join(" ") << "_--\n"; + if (! startAndWaitProcess(args) ) return NULL; + + QString information=QString(inigoprocess->readAllStandardOutput() ); + QRegExp findInfos("ID_VIDEO_FPS=([\\d]*).*ID_LENGTH=([\\d]*).*"); + if(findInfos.indexIn( information) == -1 ) + { + kDebug(DBG_AREA) << "videopreview: No information found, exiting\n"; + return NULL; + } + fileinfo.seconds =findInfos.cap(2).toInt(); + fileinfo.fps=findInfos.cap(1).toInt(); + */ fileinfo.seconds = 250; fileinfo.fps = 25; - + //kDebug(DBG_AREA) << "videopreview: find length=" << fileinfo.seconds << ", fps=" << fileinfo.fps << endl; const int LASTTRY = 3; - for(int i=0; i<=LASTTRY; i++) - { - pix=getFrame(path); - if(!pix.isNull()) { - uint variance=imageVariance(pix.toImage()/*.bits(),( (width+ 7) & ~0x7), width, height, 1 */); - kDebug(DBG_AREA) << "videopreview: " << QFileInfo(path).fileName() << " frame variance: " << variance << "; " << - ((variance<=40 && ( i!=LASTTRY-1))? "!!!DROPPING!!!" : "GOOD :-)" ) << endl; - if(variance>40 || i==LASTTRY-1 ) break; + for (int i = 0; i <= LASTTRY; i++) { + pix = getFrame(path); + if (!pix.isNull()) { + uint variance = imageVariance(pix.toImage()/*.bits(),( (width+ 7) & ~0x7), width, height, 1 */); + kDebug(DBG_AREA) << "videopreview: " << QFileInfo(path).fileName() << " frame variance: " << variance << "; " << + ((variance <= 40 && (i != LASTTRY - 1)) ? "!!!DROPPING!!!" : "GOOD :-)") << endl; + if (variance > 40 || i == LASTTRY - 1) break; } } - if(pix.isNull() ) - { + if (pix.isNull()) { return false; } img = pix.toImage(); return true; } -QPixmap WestleyPreview::getFrame(const QString &path) -{ +QPixmap WestleyPreview::getFrame(const QString &path) { QStringList args; - #define START ((fileinfo.seconds*15)/100) - #define END ((fileinfo.seconds*70)/100) +#define START ((fileinfo.seconds*15)/100) +#define END ((fileinfo.seconds*70)/100) args.clear(); args << playerBin << "\"" + path + "\""; - if(fileinfo.towidth>fileinfo.toheight) fileinfo.toheight=-2; else fileinfo.towidth=-2; + if (fileinfo.towidth > fileinfo.toheight) fileinfo.toheight = -2; + else fileinfo.towidth = -2; // switch( flags ){ // case random // } - unsigned long start=(unsigned long)(START+(rand->getDouble() * (END - START) ) ); - args << QString("in=%1").arg(start)<< QString("out=%1").arg(start)<<"-consumer"; + unsigned long start = (unsigned long)(START + (m_rand->getDouble() * (END - START))); + args << QString("in=%1").arg(start) << QString("out=%1").arg(start) << "-consumer"; KTemporaryFile temp; temp.setSuffix(".png"); temp.open(); - args << QString("avformat:%1").arg(temp.fileName()) << "vframes=1"<< "f=rawvideo"<< "vcodec=png"<< QString("s=%1x%2").arg(fileinfo.towidth).arg(fileinfo.toheight); - if (! startAndWaitProcess(args) ) return NULL; + args << QString("avformat:%1").arg(temp.fileName()) << "vframes=1" << "f=rawvideo" << "vcodec=png" << QString("s=%1x%2").arg(fileinfo.towidth).arg(fileinfo.toheight); + if (! startAndWaitProcess(args)) return NULL; QPixmap retpix(temp.fileName()); temp.close(); return retpix; } -uint WestleyPreview::imageVariance(QImage image ) -{ - uint delta=0; - uint avg=0; - uint bytes=image.numBytes(); - uint STEPS=bytes/2; +uint WestleyPreview::imageVariance(QImage image) { + uint delta = 0; + uint avg = 0; + uint bytes = image.numBytes(); + uint STEPS = bytes / 2; QVarLengthArray pivot(STEPS); kDebug(DBG_AREA) << "Using " << STEPS << " steps\n"; - uchar *bits=image.bits(); + uchar *bits = image.bits(); // First pass: get pivots and taking average - for( uint i=0; i -#include #include #include +#include class QProcess; -class Q3CString; class KTempDir; class KRandomSequence; -#include -class WestleyPreview : public QObject, public ThumbCreator -{ -Q_OBJECT - public: - WestleyPreview(); - virtual ~WestleyPreview(); - virtual bool create(const QString &path, int width, int height, QImage &img); - protected: - QPixmap getFrame(const QString &path); - static uint imageVariance(QImage image ); - - private: - QPixmap m_pixmap; - QProcess *inigoprocess; - QStringList customargs; - KRandomSequence *rand; - QString playerBin; - bool startAndWaitProcess(const QStringList &args); - enum frameflags { framerandom=0x1, framestart=0x2, frameend=0x4 }; - struct { int towidth; int toheight; int fps; int seconds; } fileinfo; + +class WestleyPreview : public QObject, public ThumbCreator { + Q_OBJECT +public: + WestleyPreview(); + virtual ~WestleyPreview(); + virtual bool create(const QString &path, int width, int height, QImage &img); + virtual Flags flags() const; + +protected: + QPixmap getFrame(const QString &path); + static uint imageVariance(QImage image); + +private: + QPixmap m_pixmap; + QProcess *m_inigoprocess; + QStringList customargs; + KRandomSequence *m_rand; + QString playerBin; + bool startAndWaitProcess(const QStringList &args); + enum frameflags { framerandom = 0x1, framestart = 0x2, frameend = 0x4 }; + struct { + int towidth; + int toheight; + int fps; + int seconds; + } fileinfo; }; #endif