equal
deleted
inserted
replaced
76 m_buffer.set(new QBuffer); |
76 m_buffer.set(new QBuffer); |
77 m_buffer->setData(imageData); |
77 m_buffer->setData(imageData); |
78 m_buffer->open(QIODevice::ReadOnly | QIODevice::Unbuffered); |
78 m_buffer->open(QIODevice::ReadOnly | QIODevice::Unbuffered); |
79 m_reader.set(new QImageReader(m_buffer.get(), m_format)); |
79 m_reader.set(new QImageReader(m_buffer.get(), m_format)); |
80 |
80 |
|
81 // This will force the JPEG decoder to use JDCT_IFAST |
|
82 m_reader->setQuality(49); |
|
83 |
81 // QImageReader only allows retrieving the format before reading the image |
84 // QImageReader only allows retrieving the format before reading the image |
82 m_format = m_reader->format(); |
85 m_format = m_reader->format(); |
83 } |
86 } |
84 |
87 |
85 bool ImageDecoderQt::isSizeAvailable() |
88 bool ImageDecoderQt::isSizeAvailable() |
184 } |
187 } |
185 |
188 |
186 bool ImageDecoderQt::internalHandleCurrentImage(size_t frameIndex) |
189 bool ImageDecoderQt::internalHandleCurrentImage(size_t frameIndex) |
187 { |
190 { |
188 QPixmap pixmap; |
191 QPixmap pixmap; |
189 bool pixmapLoaded; |
192 |
190 const int imageCount = m_reader->imageCount(); |
193 #if QT_VERSION >= QT_VERSION_CHECK(4, 7, 0) |
191 if (imageCount == 0 || imageCount == 1) |
194 pixmap = QPixmap::fromImageReader(m_reader.get()); |
192 pixmapLoaded = pixmap.loadFromData((const uchar*)(m_data->data()), m_data->size(), m_format); |
195 #else |
193 else { |
196 QImage img; |
194 QImage img; |
197 if (m_reader->read(&img)) |
195 const bool imageLoaded = m_reader->read(&img); |
198 pixmap = QPixmap::fromImage(img); |
196 if (imageLoaded) { |
199 #endif |
197 pixmap = QPixmap::fromImage(img); |
200 |
198 pixmapLoaded = true; |
201 if (pixmap.isNull()) { |
199 } |
|
200 } |
|
201 |
|
202 if (!pixmapLoaded) { |
|
203 frameCount(); |
202 frameCount(); |
204 repetitionCount(); |
203 repetitionCount(); |
205 clearPointers(); |
204 clearPointers(); |
206 return false; |
205 return false; |
207 } |
206 } |