[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 14:51:58
Message-ID: 1239893518.029583.7900.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 954938 by gulino:

using qimage, starting phonon backend

 M  +1 -1      CMakeLists.txt  
 M  +4 -3      mplayervideobackend.cpp  
 M  +31 -2     phononbackend.cpp  
 M  +12 -0     phononbackend.h  
 M  +11 -5     previewingfile.cpp  
 M  +3 -1      previewingfile.h  
 M  +10 -12    thumbnail.cpp  
 M  +5 -5      thumbnail.h  
 M  +7 -7      videopreview.cpp  


--- trunk/kdereview/mplayerthumbs/src/CMakeLists.txt #954937:954938
@@ -9,7 +9,7 @@
 
 kde4_add_plugin(videopreview ${videopreview_PART_SRCS})
 
-target_link_libraries(videopreview ${KDE4_KIO_LIBS})
+target_link_libraries(videopreview ${KDE4_KIO_LIBS} ${PHONON_LIBRARY} )
 
 install(TARGETS videopreview DESTINATION ${PLUGIN_INSTALL_DIR})
 
--- trunk/kdereview/mplayerthumbs/src/mplayervideobackend.cpp #954937:954938
@@ -89,7 +89,8 @@
         kDebug(DBG_AREA) << "videopreview: No information found, exiting\n";
         return false;
     }
-    previewingFile->setStreamInformation(findInfos.cap(1).toInt(), \
findInfos.cap(2).toInt() * 1000); +    \
previewingFile->setTotalTime(findInfos.cap(2).toInt() * 1000); +    \
previewingFile->setFPS(findInfos.cap(1).toInt());  
     kDebug(DBG_AREA) << "videopreview: find length=" << \
previewingFile->getMillisecondsLength() << " ms, fps=" << previewingFile->getFPS() << \
endl;  return true;
@@ -131,8 +132,8 @@
 
     QString lastframe=QDir(tmpDirPath ).entryList( QStringList("*.jpg") ).last();
     kDebug(DBG_AREA) << "videopreview: LastFrame==" << lastframe << endl;
-    QPixmap *retpix = new QPixmap(tmpDirPath.append( lastframe ));
-    return new Thumbnail(retpix, previewingFile);
+    QImage *retImage = new QImage(tmpDirPath.append( lastframe ));
+    return new Thumbnail(retImage, previewingFile);
 }
 
 
--- trunk/kdereview/mplayerthumbs/src/phononbackend.cpp #954937:954938
@@ -20,15 +20,44 @@
 #include "phononbackend.h"
 #include <QtCore/QtGlobal>
 #include <phonon/phononnamespace.h>
+#include <phonon/mediaobject.h>
+#include "previewingfile.h"
+// #include <phonon/experimental/videowidget.h>
+#include "thumbnail.h"
+
 using namespace Phonon;
+
+// TODO: it seems that phonon MediaObject is not sync.
+// How to handle stream information?
+
+PhononBackend::PhononBackend(PreviewingFile* previewingFile, MPlayerThumbsCfg* cfg) 
+  : VideoBackendIFace(previewingFile, cfg)
+{
+  mediaObject=new MediaObject(previewingFile);
+  mediaObject->setCurrentSource(previewingFile->getFilePath());
+  QObject::connect(mediaObject, SIGNAL(totalTimeChanged (qint64)), previewingFile, \
SLOT(setTotalTime(quint64 ))); +//   videoWidget=new Experimental::VideoWidget();
+//   videoWidget->setVisible(false);
+//   createPath(mediaObject, videoWidget);
+}
+
+PhononBackend::~PhononBackend() {
+//   delete videoWidget;
+}
+
+
 Thumbnail* PhononBackend::preview(FrameSelector *frameSelector)
 {
-  return NULL;
+  mediaObject->pause();
+  mediaObject->seek(frameSelector->framePositionInMilliseconds(previewingFile));
+//   return new Thumbnail(new QImage(videoWidget->snapshot()), previewingFile);
 }
 
 bool PhononBackend::readStreamInformation()
 {
-  return false;
+  // FPS unneeded, probably
+  previewingFile->setTotalTime(mediaObject->totalTime());
+  return mediaObject->hasVideo();
 }
 
 bool PhononBackend::playerCannotPreview()
--- trunk/kdereview/mplayerthumbs/src/phononbackend.h #954937:954938
@@ -20,14 +20,26 @@
 #ifndef PHONONBACKEND_H
 #define PHONONBACKEND_H
 #include "videobackendiface.h"
+namespace Phonon {
+  class MediaObject;
+  namespace Experimental
+  {
+    class VideoWidget;
+  }
+}
 class PhononBackend : public VideoBackendIFace
 {
 public:
+  PhononBackend(PreviewingFile *previewingFile, MPlayerThumbsCfg* cfg);
+  virtual ~PhononBackend();
   virtual Thumbnail* preview (FrameSelector *frameSelector);
   virtual bool readStreamInformation ();
 
 protected:
   virtual bool playerCannotPreview ();
+private:
+  Phonon::MediaObject *mediaObject;
+  Phonon::Experimental::VideoWidget *videoWidget;
 };
 
 #endif // PHONONBACKEND_H
--- trunk/kdereview/mplayerthumbs/src/previewingfile.cpp #954937:954938
@@ -60,11 +60,6 @@
     return false;
 }
 
-void PreviewingFile::setStreamInformation(unsigned int fps, quint64 \
                millisecondsLength) {
-  d->fps=fps;
-  d->millisecondsLength=millisecondsLength;
-}
-
 Thumbnail* PreviewingFile::getPreview(VideoBackendIFace* videoBackend, uint \
minVariance, unsigned int maxTries) {  kDebug() << "getPreview with minVariance: " << \
minVariance << " and max tries: " << maxTries << endl;  ThumbnailsMap thumbnailsMap;
@@ -106,6 +101,17 @@
   return d->scalingWidth;
 }
 
+
+
+void PreviewingFile::setTotalTime(quint64 totalTime) {
+  d->millisecondsLength=totalTime;
+}
+
+void PreviewingFile::setFPS(unsigned int fps) {
+  d->fps=fps;
+}
+
+
 #include "previewingfile.moc"
 
 
--- trunk/kdereview/mplayerthumbs/src/previewingfile.h #954937:954938
@@ -31,7 +31,6 @@
   PreviewingFile(const QString &filePath, uint scalingWidth, uint scalingHeight, \
QObject *parent = 0);  ~PreviewingFile();
   bool isBlacklisted(const QStringList &blacklistedExtensions);
-  void setStreamInformation(uint fps, quint64 millisecondsLength);
   quint64 getMillisecondsLength();
   uint getFPS();
   QString getFilePath() const;
@@ -39,6 +38,9 @@
   uint getScalingWidth();
   uint getScalingHeight();
   Thumbnail *getPreview(VideoBackendIFace *videoBackend, uint minVariance, uint \
maxTries); +public slots:
+  void setTotalTime(quint64 totalTime);
+  void setFPS(uint fps);
 
 private:
   PreviewingFilePrivate *d;
--- trunk/kdereview/mplayerthumbs/src/thumbnail.cpp #954937:954938
@@ -19,25 +19,24 @@
 
 #include "thumbnail.h"
 #include "constants.h"
-#include <QPixmap>
 #include <kdebug.h>
 #include <QImage>
 #include <QVarLengthArray>
 
-Thumbnail::Thumbnail(QPixmap* pixmap, QObject* parent) :
+Thumbnail::Thumbnail(QImage* image, QObject* parent) :
   QObject(parent)
 {
   this->variance=0;
-  this->pixmap=pixmap;
-  if(pixmapIsValid() ) calculateVariance();
+  this->image=image;
+  if(imageIsValid() ) calculateVariance();
 }
 
 Thumbnail::~Thumbnail() {
-  delete pixmap;
+  delete image;
 }
 
-bool Thumbnail::pixmapIsValid() {
-  return pixmap && ! pixmap->isNull();
+bool Thumbnail::imageIsValid() {
+  return image && ! image->isNull();
 }
 
 
@@ -45,20 +44,19 @@
   return variance;
 }
 
-QPixmap* Thumbnail::getPixmap() {
-  return pixmap;
+QImage* Thumbnail::getImage() {
+  return image;
 }
 
 
 void Thumbnail::calculateVariance() {
-    QImage image = pixmap->toImage();
     uint delta=0;
     uint avg=0;
-    uint bytes=image.numBytes();
+    uint bytes=image->numBytes();
     uint STEPS=bytes/2;
     QVarLengthArray<uchar> 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<STEPS ; i++ ){
         pivot[i]=bits[i*(bytes/STEPS)];
--- trunk/kdereview/mplayerthumbs/src/thumbnail.h #954937:954938
@@ -20,21 +20,21 @@
 #ifndef THUMBNAIL_H
 #define THUMBNAIL_H
 #include <QObject>
-class QPixmap;
+class QImage;
 class Thumbnail : public QObject
 {
 Q_OBJECT
 public:
-  explicit Thumbnail(QPixmap *pixmap, QObject *parent=0);
+  explicit Thumbnail(QImage *image, QObject *parent=0);
   ~Thumbnail();
   uint getVariance();
-  QPixmap *getPixmap();
-  bool pixmapIsValid();
+  QImage *getImage();
+  bool imageIsValid();
 
 private:
   void calculateVariance();
   uint variance;
-  QPixmap *pixmap;
+  QImage *image;
 };
 
 #endif // THUMBNAIL_H
--- trunk/kdereview/mplayerthumbs/src/videopreview.cpp #954937:954938
@@ -71,32 +71,32 @@
     }
     
     Thumbnail *thumbnail=previewingFile->getPreview(videoBackend, 40, 4);
-    if(!thumbnail || ! thumbnail->pixmapIsValid() ) return false;
+    if(!thumbnail || ! thumbnail->imageIsValid() ) return false;
     delete videoBackend;
     kDebug(DBG_AREA) << "got valid thumbnail, image variance: " << \
thumbnail->getVariance() << endl;  /* From videocreator.cpp - xine_artsplugin
     Copyright (C) 2002 Simon MacMullen
     Copyright (C) 2003 Ewald Snel <ewald@rambo.its.tudelft.nl>
      * */
-    QPixmap *pix=thumbnail->getPixmap();
+    QPixmap pix=QPixmap::fromImage(*(thumbnail->getImage()));
     if(cfg->createStrips() ) {
-        QPainter painter( pix );
+        QPainter painter( &pix );
         QPixmap sprocket;
 
         kDebug(DBG_AREA) << "videopreview: using strip image sprocket: " << \
                KStandardDirs::locate( "data", "videothumbnail/sprocket-small.png" ) \
                << endl;
-        if (pix->height() < 60)
+        if (pix.height() < 60)
             sprocket = QPixmap(KStandardDirs::locate( "data", \
                "videothumbnail/sprocket-small.png" ));
-        else if (pix->height() < 90)
+        else if (pix.height() < 90)
             sprocket = QPixmap(KStandardDirs::locate( "data", \
"videothumbnail/sprocket-medium.png" ));  else
             sprocket = QPixmap(KStandardDirs::locate( "data", \
"videothumbnail/sprocket-large.png" ));  
-        for (int y = 0; y < pix->height() + sprocket.height(); y += \
sprocket.height()) { +        for (int y = 0; y < pix.height() + sprocket.height(); y \
+= sprocket.height()) {  painter.drawPixmap( 0, y, sprocket );
         }
 }
         // End of xine-artsplugin code
-    img = pix->toImage();
+    img = pix.toImage();
 
     return true;
 }


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

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