Title: [120964] trunk/Source/WebCore
- Revision
- 120964
- Author
- [email protected]
- Date
- 2012-06-21 14:23:56 -0700 (Thu, 21 Jun 2012)
Log Message
[Qt] REGRESSION(r120790): broke video rendering
https://bugs.webkit.org/show_bug.cgi?id=89619
Reviewed by Alexis Menard.
Invert the pixel components of the Image on little endian architectures.
* platform/graphics/gstreamer/ImageGStreamerQt.cpp:
(ImageGStreamer::ImageGStreamer):
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (120963 => 120964)
--- trunk/Source/WebCore/ChangeLog 2012-06-21 21:23:28 UTC (rev 120963)
+++ trunk/Source/WebCore/ChangeLog 2012-06-21 21:23:56 UTC (rev 120964)
@@ -1,3 +1,15 @@
+2012-06-21 Philippe Normand <[email protected]>
+
+ [Qt] REGRESSION(r120790): broke video rendering
+ https://bugs.webkit.org/show_bug.cgi?id=89619
+
+ Reviewed by Alexis Menard.
+
+ Invert the pixel components of the Image on little endian architectures.
+
+ * platform/graphics/gstreamer/ImageGStreamerQt.cpp:
+ (ImageGStreamer::ImageGStreamer):
+
2012-06-21 James Simonsen <[email protected]>
[Resource Timing] Implement Resource Timing interface
Modified: trunk/Source/WebCore/platform/graphics/gstreamer/ImageGStreamerQt.cpp (120963 => 120964)
--- trunk/Source/WebCore/platform/graphics/gstreamer/ImageGStreamerQt.cpp 2012-06-21 21:23:28 UTC (rev 120963)
+++ trunk/Source/WebCore/platform/graphics/gstreamer/ImageGStreamerQt.cpp 2012-06-21 21:23:56 UTC (rev 120964)
@@ -50,18 +50,32 @@
uchar* bufferData = reinterpret_cast<uchar*>(GST_BUFFER_DATA(buffer));
#endif
QImage::Format imageFormat;
+ QImage::InvertMode invertMode;
#if G_BYTE_ORDER == G_LITTLE_ENDIAN
- imageFormat = (format == GST_VIDEO_FORMAT_BGRA) ? QImage::Format_RGB32 : QImage::Format_RGB888;
+ if (format == GST_VIDEO_FORMAT_BGRA) {
+ imageFormat = QImage::Format_ARGB32;
+ invertMode = QImage::InvertRgba;
+ } else {
+ imageFormat = QImage::Format_RGB32;
+ invertMode = QImage::InvertRgb;
+ }
#else
- imageFormat = (format == GST_VIDEO_FORMAT_ARGB) ? QImage::Format_ARGB32 : QImage::Format_RGB888;
+ imageFormat = (format == GST_VIDEO_FORMAT_ARGB) ? QImage::Format_ARGB32 : QImage::Format_RGB32;
#endif
QImage image(bufferData, size.width(), size.height(), imageFormat);
+#if G_BYTE_ORDER == G_LITTLE_ENDIAN
+ image.invertPixels(invertMode);
+#endif
+
surface->convertFromImage(image);
m_image = BitmapImage::create(surface);
#ifdef GST_API_VERSION_1
+ if (GstVideoCropMeta* cropMeta = gst_buffer_get_video_crop_meta(buffer))
+ setCropRect(FloatRect(cropMeta->x, cropMeta->y, cropMeta->width, cropMeta->height));
+
gst_buffer_unmap(buffer, &info);
#endif
}
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes