[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