diff --git a/src/CacheDisk.cpp b/src/CacheDisk.cpp
index b3fd119f..c8eb5d8d 100644
--- a/src/CacheDisk.cpp
+++ b/src/CacheDisk.cpp
@@ -235,7 +235,7 @@ std::shared_ptr CacheDisk::GetFrame(int64_t frame_number)
image->load(frame_path);
// Set pixel formatimage->
- image = std::make_shared(image->convertToFormat(QImage::Format_RGBA8888));
+ image = std::make_shared(image->convertToFormat(QImage::Format_ARGB32_Premultiplied));
// Create frame object
auto frame = std::make_shared();
diff --git a/src/FFmpegReader.cpp b/src/FFmpegReader.cpp
index dcdad2c0..2e8260c5 100644
--- a/src/FFmpegReader.cpp
+++ b/src/FFmpegReader.cpp
@@ -1342,7 +1342,7 @@ void FFmpegReader::ProcessVideoPacket(int64_t requested_frame) {
scale_mode = SWS_BICUBIC;
}
SwsContext *img_convert_ctx = sws_getContext(info.width, info.height, AV_GET_CODEC_PIXEL_FORMAT(pStream, pCodecCtx), width,
- height, PIX_FMT_RGBA, scale_mode, NULL, NULL, NULL);
+ height, AV_PIX_FMT_RGB32, scale_mode, NULL, NULL, NULL);
// Resize / Convert to RGB
sws_scale(img_convert_ctx, my_frame->data, my_frame->linesize, 0,
@@ -1352,7 +1352,7 @@ void FFmpegReader::ProcessVideoPacket(int64_t requested_frame) {
std::shared_ptr f = CreateFrame(current_frame);
// Add Image data to frame
- f->AddImage(width, height, 4, QImage::Format_RGBA8888, buffer);
+ f->AddImage(width, height, 4, QImage::Format_ARGB32_Premultiplied, buffer);
// Update working cache
working_cache.Add(f);
diff --git a/src/Frame.cpp b/src/Frame.cpp
index 8be00246..5c233aa2 100644
--- a/src/Frame.cpp
+++ b/src/Frame.cpp
@@ -221,8 +221,7 @@ std::shared_ptr Frame::GetWaveform(int width, int height, int Red, int G
}
// Create blank image
- wave_image = std::make_shared(
- total_width, total_height, QImage::Format_RGBA8888);
+ wave_image = std::make_shared(total_width, total_height, QImage::Format_ARGB32_Premultiplied);
wave_image->fill(QColor(0,0,0,0));
// Load QPainter with wave_image device
@@ -253,7 +252,7 @@ std::shared_ptr Frame::GetWaveform(int width, int height, int Red, int G
else
{
// No audio samples present
- wave_image = std::make_shared(width, height, QImage::Format_RGBA8888);
+ wave_image = std::make_shared(width, height, QImage::Format_ARGB32_Premultiplied);
wave_image->fill(QColor(QString::fromStdString("#000000")));
}
@@ -614,7 +613,7 @@ void Frame::Thumbnail(std::string path, int new_width, int new_height, std::stri
// Create blank thumbnail image & fill background color
auto thumbnail = std::make_shared(
- new_width, new_height, QImage::Format_RGBA8888);
+ new_width, new_height, QImage::Format_ARGB32_Premultiplied);
thumbnail->fill(QColor(QString::fromStdString(background_color)));
// Create painter
@@ -676,7 +675,7 @@ void Frame::Thumbnail(std::string path, int new_width, int new_height, std::stri
// Set pixel format
overlay = std::make_shared(
- overlay->convertToFormat(QImage::Format_RGBA8888));
+ overlay->convertToFormat(QImage::Format_ARGB32_Premultiplied));
// Resize to fit
overlay = std::make_shared(overlay->scaled(
@@ -696,7 +695,7 @@ void Frame::Thumbnail(std::string path, int new_width, int new_height, std::stri
// Set pixel format
mask = std::make_shared(
- mask->convertToFormat(QImage::Format_RGBA8888));
+ mask->convertToFormat(QImage::Format_ARGB32_Premultiplied));
// Resize to fit
mask = std::make_shared(mask->scaled(
@@ -753,7 +752,7 @@ void Frame::AddColor(int new_width, int new_height, std::string new_color)
const GenericScopedLock lock(addingImageSection);
#pragma omp critical (AddImage)
{
- image = std::make_shared(new_width, new_height, QImage::Format_RGBA8888);
+ image = std::make_shared(new_width, new_height, QImage::Format_ARGB32_Premultiplied);
// Fill with solid color
image->fill(QColor(QString::fromStdString(color)));
@@ -805,9 +804,9 @@ void Frame::AddImage(std::shared_ptr new_image)
{
image = new_image;
- // Always convert to RGBA8888 (if different)
- if (image->format() != QImage::Format_RGBA8888)
- *image = image->convertToFormat(QImage::Format_RGBA8888);
+ // Always convert to Format_ARGB32_Premultiplied (if different)
+ if (image->format() != QImage::Format_ARGB32_Premultiplied)
+ *image = image->convertToFormat(QImage::Format_ARGB32_Premultiplied);
// Update height and width
width = image->width();
@@ -836,9 +835,8 @@ void Frame::AddImage(std::shared_ptr new_image, bool only_odd_lines)
if (image == new_image || image->size() != new_image->size()) {
ret = true;
}
- else if (new_image->format() != image->format()) {
- new_image = std::make_shared(
- new_image->convertToFormat(image->format()));
+ else if (new_image->format() != QImage::Format_ARGB32_Premultiplied) {
+ new_image = std::make_shared(new_image->convertToFormat(QImage::Format_ARGB32_Premultiplied));
}
}
if (ret) {
@@ -979,7 +977,7 @@ void Frame::AddMagickImage(std::shared_ptr new_image)
// Create QImage of frame data
image = std::make_shared(
- qbuffer, width, height, width * BPP, QImage::Format_RGBA8888,
+ qbuffer, width, height, width * BPP, QImage::Format_ARGB32_Premultiplied,
(QImageCleanupFunction) &cleanUpBuffer, (void*) qbuffer);
// Update height and width
diff --git a/src/QtHtmlReader.cpp b/src/QtHtmlReader.cpp
index 4925d3a8..4da756ff 100644
--- a/src/QtHtmlReader.cpp
+++ b/src/QtHtmlReader.cpp
@@ -62,7 +62,7 @@ void QtHtmlReader::Open()
if (!is_open)
{
// create image
- image = std::make_shared(width, height, QImage::Format_RGBA8888);
+ image = std::make_shared(width, height, QImage::Format_ARGB32_Premultiplied);
image->fill(QColor(background_color.c_str()));
//start painting
diff --git a/src/QtImageReader.cpp b/src/QtImageReader.cpp
index 86040bd4..b22ef22b 100644
--- a/src/QtImageReader.cpp
+++ b/src/QtImageReader.cpp
@@ -98,10 +98,6 @@ void QtImageReader::Open()
throw InvalidFile("File could not be opened.", path.toStdString());
}
- // Convert to proper format
- image = std::make_shared(
- image->convertToFormat(QImage::Format_RGBA8888));
-
// Update image properties
info.has_audio = false;
info.has_video = true;
@@ -255,9 +251,6 @@ std::shared_ptr QtImageReader::GetFrame(int64_t requested_frame)
max_width, max_height, Qt::KeepAspectRatio, Qt::SmoothTransformation));
}
- cached_image = std::make_shared(
- cached_image->convertToFormat(QImage::Format_RGBA8888));
-
// Set max size (to later determine if max_size is changed)
max_size.setWidth(max_width);
max_size.setHeight(max_height);
diff --git a/src/QtTextReader.cpp b/src/QtTextReader.cpp
index bd157ebd..0bb1d741 100644
--- a/src/QtTextReader.cpp
+++ b/src/QtTextReader.cpp
@@ -67,7 +67,7 @@ void QtTextReader::Open()
if (!is_open)
{
// create image
- image = std::make_shared(width, height, QImage::Format_RGBA8888);
+ image = std::make_shared(width, height, QImage::Format_ARGB32_Premultiplied);
image->fill(QColor(background_color.c_str()));
QPainter painter;
diff --git a/src/effects/Bars.cpp b/src/effects/Bars.cpp
index e653b7dd..d0dd8dbf 100644
--- a/src/effects/Bars.cpp
+++ b/src/effects/Bars.cpp
@@ -69,7 +69,7 @@ std::shared_ptr Bars::GetFrame(std::shared_ptr frame, int64_t fram
// Get bar color (and create small color image)
auto tempColor = std::make_shared(
- frame_image->width(), 1, QImage::Format_RGBA8888);
+ frame_image->width(), 1, QImage::Format_ARGB32_Premultiplied);
tempColor->fill(QColor(QString::fromStdString(color.GetColorHex(frame_number))));
// Get current keyframe values
diff --git a/src/effects/Crop.cpp b/src/effects/Crop.cpp
index f0e0aa95..aa587a02 100644
--- a/src/effects/Crop.cpp
+++ b/src/effects/Crop.cpp
@@ -69,7 +69,7 @@ std::shared_ptr Crop::GetFrame(std::shared_ptr frame, int64_t fram
// Get transparent color (and create small transparent image)
auto tempColor = std::make_shared(
- frame_image->width(), 1, QImage::Format_RGBA8888);
+ frame_image->width(), 1, QImage::Format_ARGB32_Premultiplied);
tempColor->fill(QColor(QString::fromStdString("transparent")));
// Get current keyframe values
diff --git a/src/effects/Deinterlace.cpp b/src/effects/Deinterlace.cpp
index 984336aa..16c104c0 100644
--- a/src/effects/Deinterlace.cpp
+++ b/src/effects/Deinterlace.cpp
@@ -73,7 +73,7 @@ std::shared_ptr Deinterlace::GetFrame(std::shared_ptr frame, int64
const unsigned char* pixels = image->bits();
// Create a smaller, new image
- QImage deinterlaced_image(image->width(), image->height() / 2, QImage::Format_RGBA8888);
+ QImage deinterlaced_image(image->width(), image->height() / 2, QImage::Format_ARGB32_Premultiplied);
const unsigned char* deinterlaced_pixels = deinterlaced_image.bits();
// Loop through the scanlines of the image (even or odd)