qtmobility/plugins/multimedia/gstreamer/qgstreamervideooverlay.cpp
changeset 4 90517678cc4f
parent 1 2b40d63a9c3d
child 11 06b8e2af4411
--- a/qtmobility/plugins/multimedia/gstreamer/qgstreamervideooverlay.cpp	Fri Apr 16 15:51:22 2010 +0300
+++ b/qtmobility/plugins/multimedia/gstreamer/qgstreamervideooverlay.cpp	Mon May 03 13:18:40 2010 +0300
@@ -50,7 +50,7 @@
     : QVideoWindowControl(parent)
     , m_surface(new QX11VideoSurface)
     , m_videoSink(reinterpret_cast<GstElement*>(QVideoSurfaceGstSink::createSink(m_surface)))
-    , m_aspectRatioMode(QVideoWidget::KeepAspectRatio)
+    , m_aspectRatioMode(Qt::KeepAspectRatio)
     , m_fullScreen(false)
 {
     if (m_videoSink) {
@@ -92,12 +92,12 @@
     setScaledDisplayRect();
 }
 
-QVideoWidget::AspectRatioMode QGstreamerVideoOverlay::aspectRatioMode() const
+Qt::AspectRatioMode QGstreamerVideoOverlay::aspectRatioMode() const
 {
     return m_aspectRatioMode;
 }
 
-void QGstreamerVideoOverlay::setAspectRatioMode(QVideoWidget::AspectRatioMode mode)
+void QGstreamerVideoOverlay::setAspectRatioMode(Qt::AspectRatioMode mode)
 {
     m_aspectRatioMode = mode;
 
@@ -190,21 +190,36 @@
 
 void QGstreamerVideoOverlay::setScaledDisplayRect()
 {
+    QRect formatViewport = m_surface->surfaceFormat().viewport();
+
     switch (m_aspectRatioMode) {
-    case QVideoWidget::KeepAspectRatio:
+    case Qt::KeepAspectRatio:
         {
-            QSize size = m_surface->surfaceFormat().viewport().size();
-
+            QSize size = formatViewport.size();
             size.scale(m_displayRect.size(), Qt::KeepAspectRatio);
 
             QRect rect(QPoint(0, 0), size);
             rect.moveCenter(m_displayRect.center());
 
             m_surface->setDisplayRect(rect);
+            m_surface->setViewport(formatViewport);
         }
         break;
-    case QVideoWidget::IgnoreAspectRatio:
+    case Qt::IgnoreAspectRatio:
         m_surface->setDisplayRect(m_displayRect);
+        m_surface->setViewport(formatViewport);
+        break;
+    case Qt::KeepAspectRatioByExpanding:
+        {
+            QSize size = m_displayRect.size();
+            size.scale(formatViewport.size(), Qt::KeepAspectRatio);
+
+            QRect viewport(QPoint(0, 0), size);
+            viewport.moveCenter(formatViewport.center());
+
+            m_surface->setDisplayRect(m_displayRect);
+            m_surface->setViewport(viewport);
+        }
         break;
     };
 }