[tracker] tracker-extract: Performance improvement for Qt-based albumart handling



commit aef1f93d8a87ca45b741eb791f150077e4386c73
Author: Philip Van Hoof <philip codeminded be>
Date:   Tue Feb 1 12:21:15 2011 +0100

    tracker-extract: Performance improvement for Qt-based albumart handling

 src/tracker-extract/tracker-albumart-qt.cpp |   49 ++++++++++++++++-----------
 1 files changed, 29 insertions(+), 20 deletions(-)
---
diff --git a/src/tracker-extract/tracker-albumart-qt.cpp b/src/tracker-extract/tracker-albumart-qt.cpp
index d00b65c..49ef7f1 100644
--- a/src/tracker-extract/tracker-albumart-qt.cpp
+++ b/src/tracker-extract/tracker-albumart-qt.cpp
@@ -88,35 +88,44 @@ tracker_albumart_buffer_to_jpeg (const unsigned char *buffer,
                                  const gchar         *buffer_mime,
                                  const gchar         *target)
 {
-	QImageReader *reader = NULL;
-	QByteArray array;
+	if (g_strcmp0 (buffer_mime, "image/jpeg") == 0 ||
+	    g_strcmp0 (buffer_mime, "JPG") == 0) {
 
-	array = QByteArray ((const char *) buffer, (int) len);
+		g_debug ("Saving album art using raw data as uri:'%s'",
+		         target);
 
-	QBuffer qbuffer (&array);
-	qbuffer.open (QIODevice::ReadOnly);
-
-	if (buffer_mime != NULL) {
-		reader = new QImageReader::QImageReader (&qbuffer, QByteArray (buffer_mime));
+		g_file_set_contents (target, (const gchar*) buffer, (gssize) len, NULL);
 	} else {
-		QByteArray format = QImageReader::imageFormat (&qbuffer);
+		QImageReader *reader = NULL;
+		QByteArray array;
+
+		array = QByteArray ((const char *) buffer, (int) len);
+
+		QBuffer qbuffer (&array);
+		qbuffer.open (QIODevice::ReadOnly);
 
-		if (!format.isEmpty ()) {
-			reader = new QImageReader::QImageReader (&qbuffer, format);
+		if (buffer_mime != NULL) {
+			reader = new QImageReader::QImageReader (&qbuffer, QByteArray (buffer_mime));
+		} else {
+			QByteArray format = QImageReader::imageFormat (&qbuffer);
+
+			if (!format.isEmpty ()) {
+				reader = new QImageReader::QImageReader (&qbuffer, format);
+			}
 		}
-	}
 
-	if (!reader) {
-		g_message ("Could not get QImageReader from buffer");
-		return FALSE;
-	}
+		if (!reader) {
+			g_message ("Could not get QImageReader from buffer");
+			return FALSE;
+		}
 
-	QImage image;
+		QImage image;
 
-	image = reader->read ();
-	image.save (QString (target), "jpeg");
+		image = reader->read ();
+		image.save (QString (target), "jpeg");
 
-	delete reader;
+		delete reader;
+	}
 
 	return TRUE;
 }



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]