[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    kdereview/mplayerthumbs/src
From:       Marco Gulino <marco.gulino () gmail ! com>
Date:       2009-04-16 9:56:58
Message-ID: 1239875818.725349.17458.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 954782 by gulino:

more refactoring


 M  +36 -15    mplayervideobackend.cpp  
 M  +10 -1     mplayervideobackend.h  


--- trunk/kdereview/mplayerthumbs/src/mplayervideobackend.cpp #954781:954782
@@ -29,9 +29,39 @@
 #include "previewingfile.h"
 #include "thumbnail.h"
 
+ArgsCalculator::ArgsCalculator(PreviewingFile* previewingFile)
+{
+  this->previewingFile=previewingFile;
+}
+
+class RandomArgsCalculator : public ArgsCalculator {
+  public:
+    RandomArgsCalculator(PreviewingFile *previewingFile) : \
ArgsCalculator(previewingFile) {} +    virtual QStringList args(FrameSelector \
*frameSelector) { +      kDebug(DBG_AREA) << "videopreview: framerandom\n";
+      return QStringList() << "-ss" << QString::number( \
frameSelector->framePositionInMilliseconds(previewingFile) / 1000 ) << "-frames" << \
"4"; +    }
+};
+
+
+class FromStartArgsCalculator : public ArgsCalculator {
+  public:
+    FromStartArgsCalculator(PreviewingFile *previewingFile) : \
ArgsCalculator(previewingFile) {} +    virtual QStringList args(FrameSelector \
*frameSelector) { +        kDebug(DBG_AREA) << "videopreview: framestart\n";
+	int fps=previewingFile->getFPS();
+        if(!fps) fps=25; // if we've not autodetected a fps rate, let's assume \
25fps.. even if it's wrong it shouldn't hurt. +        // If we can't skip to a \
random frame, let's try playing N seconds. +        return QStringList() << "-frames" \
<< QString::number( fps * frameSelector->framePositionInMilliseconds(previewingFile) \
/ 1000 ); +    }
+};
+
+
 MPlayerVideoBackend::MPlayerVideoBackend(PreviewingFile *previewingfile, \
MPlayerThumbsCfg* cfg)   : VideoBackendIFace(previewingfile, cfg)
 {
+  seekArguments.insert(FrameSelector::FromStart, new \
FromStartArgsCalculator(previewingfile) ); +  \
seekArguments.insert(FrameSelector::Random, new \
RandomArgsCalculator(previewingfile));  }
 
 
@@ -67,9 +97,10 @@
 
 
 MPlayerVideoBackend::~MPlayerVideoBackend() {
-    delete mplayerprocess;
-    tryUnlink(tmpdir);
-    delete tmpdir;
+  foreach(ArgsCalculator *argsCalculator, seekArguments.values()) delete \
argsCalculator; +  delete mplayerprocess;
+  tryUnlink(tmpdir);
+  delete tmpdir;
 }
 
 
@@ -80,21 +111,11 @@
     args.clear();
     int scalingWidth=previewingFile->getScalingWidth();
     int scalingHeight=previewingFile->getScalingHeight();
-    int fps=previewingFile->getFPS();
     args << playerBin << "\"" + previewingFile->getFilePath() + "\"";
     if(previewingFile->isWide()) scalingHeight=-2; else scalingWidth=-2;
 
-    if( frameSelector->seekStrategy() & FrameSelector::Random )
-    {
-        kDebug(DBG_AREA) << "videopreview: framerandom\n";
-        args << "-ss" << QString::number( \
frameSelector->framePositionInMilliseconds(previewingFile) / 1000 ) << "-frames" << \
                "4";
-    } else if (frameSelector->seekStrategy() & FrameSelector::FromStart)
-    {
-        kDebug(DBG_AREA) << "videopreview: framestart\n";
-        if(!fps) fps=25; // if we've not autodetected a fps rate, let's assume \
                25fps.. even if it's wrong it shouldn't hurt.
-        // If we can't skip to a random frame, let's try playing 10 seconds.
-        args << "-frames" << QString::number( fps* \
                frameSelector->framePositionInMilliseconds(previewingFile) / 1000 );
-    }
+    args << seekArguments[frameSelector->seekStrategy()]->args(frameSelector);
+
     KMD5 md5builder(previewingFile->getFilePath().toLatin1() );
     QString md5file=md5builder.hexDigest().data();
     QString tmpDirPath = tmpdir->name() + md5file + QDir::separator();
--- trunk/kdereview/mplayerthumbs/src/mplayervideobackend.h #954781:954782
@@ -19,10 +19,18 @@
 
 #ifndef MPLAYERVIDEOBACKEND_H
 #define MPLAYERVIDEOBACKEND_H
-
+#include <QtCore/QMap>
 #include <videobackendiface.h>
 class KTempDir;
 class QProcess;
+class ArgsCalculator {
+	public:
+		ArgsCalculator(PreviewingFile* previewingFile);
+		virtual QStringList args(FrameSelector *frameSelector) = 0;
+		virtual ~ArgsCalculator() {};
+	protected:
+		PreviewingFile *previewingFile;
+};
 class MPlayerVideoBackend : public VideoBackendIFace
 {
 public:
@@ -41,6 +49,7 @@
   QProcess *mplayerprocess;
   QStringList customargs;
 	KTempDir *tmpdir;
+	QMap<FrameSelector::SeekStrategy, ArgsCalculator*> seekArguments;
 };
 
 #endif // MPLAYERVIDEOBACKEND_H


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic