Kaydet (Commit) 18138417 authored tarafından Mark Hung's avatar Mark Hung Kaydeden (comit) Caolán McNamara

avmedia: set gstreamer gst_video_overlay size and position.

Have video fit to the media object size on the slide,
allow more complicated interactions.

Change-Id: Ice1fa4b521176ad7ed7f7d1d2b13e617e8282390
Reviewed-on: https://gerrit.libreoffice.org/67978
Tested-by: Jenkins
Reviewed-by: 's avatarCaolán McNamara <caolanm@redhat.com>
Tested-by: 's avatarCaolán McNamara <caolanm@redhat.com>
üst d4cafd20
......@@ -487,7 +487,13 @@ GstBusSyncReply Player::processSyncMessage( GstMessage *message )
mpXOverlay = GST_VIDEO_OVERLAY( GST_MESSAGE_SRC( message ) );
g_object_ref( G_OBJECT ( mpXOverlay ) );
if ( mnWindowID != 0 )
{
gst_video_overlay_set_window_handle( mpXOverlay, mnWindowID );
if (maArea.Width > 0 && maArea.Height > 0)
gst_video_overlay_set_render_rectangle(mpXOverlay, maArea.X, maArea.Y, maArea.Width, maArea.Height);
}
return GST_BUS_DROP;
}
}
......@@ -894,7 +900,12 @@ uno::Reference< ::media::XPlayerWindow > SAL_CALL Player::createPlayerWindow( co
::osl::MutexGuard aGuard(m_aMutex);
uno::Reference< ::media::XPlayerWindow > xRet;
awt::Size aSize( getPreferredPlayerWindowSize() );
awt::Size aSize;
if (rArguments.getLength() > 1 && (rArguments[1] >>= maArea))
aSize = awt::Size(maArea.Width, maArea.Height);
else
aSize = getPreferredPlayerWindowSize();
if( mbFakeVideo )
preparePlaybin( maURL, nullptr );
......@@ -912,6 +923,14 @@ uno::Reference< ::media::XPlayerWindow > SAL_CALL Player::createPlayerWindow( co
sal_IntPtr pIntPtr = 0;
rArguments[ 2 ] >>= pIntPtr;
SystemChildWindow *pParentWindow = reinterpret_cast< SystemChildWindow* >( pIntPtr );
if (pParentWindow)
{
Point aPoint = pParentWindow->GetPosPixel();
maArea.X = aPoint.getX();
maArea.Y = aPoint.getY();
}
const SystemEnvData* pEnvData = pParentWindow ? pParentWindow->GetSystemData() : nullptr;
OSL_ASSERT(pEnvData);
if (pEnvData)
......
......@@ -101,6 +101,8 @@ private:
int mnWidth;
int mnHeight;
css::awt::Rectangle maArea; // Area of the player window.
guint mnWatchID;
bool mbWatchID;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment