31#include <osl/file.hxx>
43 Player* pPlayer =
reinterpret_cast<Player*
>(::GetWindowLongPtrW( hWnd, 0 ));
44 bool bProcessed =
true;
61 return( bProcessed ? 0 : DefWindowProcW( hWnd, nMsg, nPar1, nPar2 ) );
67 sal::systools::CoInitializeGuard(COINIT_APARTMENTTHREADED, false,
68 sal::systools::CoInitializeGuard::WhenFailed::NoThrow),
70 mnFrameWnd( nullptr ),
98 if( SUCCEEDED(
mpGB.CoCreateInstance(CLSID_FilterGraph,
nullptr, CLSCTX_INPROC_SERVER)) )
106 OUString aFile(rURL);
107 if (aFile.startsWithIgnoreAsciiCase(
"file:"))
108 osl::FileBase::getSystemPathFromFileURL(rURL, aFile);
110 if( SUCCEEDED(
mpGB->RenderFile( o3tl::toW(aFile.getStr()),
nullptr ) ) &&
111 mpMC.set(
mpGB, sal::systools::COM_QUERY) &&
112 mpME.set(
mpGB, sal::systools::COM_QUERY) &&
113 mpMP.set(
mpGB, sal::systools::COM_QUERY) )
116 mpVW.set(
mpGB, sal::systools::COM_QUERY);
117 mpBV.set(
mpGB, sal::systools::COM_QUERY);
120 mpBA.set(
mpGB, sal::systools::COM_QUERY);
148 mpME->SetNotifyWindow(
reinterpret_cast<OAHWND
>(nNotifyWnd),
WM_GRAPHNOTIFY,
reinterpret_cast< LONG_PTR
>(
this ) );
155 LONG_PTR nParam1, nParam2;
157 while(
mpME && SUCCEEDED(
mpME->GetEvent( &nCode, &nParam1, &nParam2, 0 ) ) )
159 if( EC_COMPLETE == nCode )
173 mpME->FreeEventParams( nCode, nParam1, nParam2 );
185 static WNDCLASSW* mpWndClass =
nullptr;
188 mpWndClass =
new WNDCLASSW;
190 memset( mpWndClass, 0,
sizeof( *mpWndClass ) );
191 mpWndClass->hInstance = GetModuleHandleW(
nullptr );
192 mpWndClass->cbWndExtra =
sizeof( DWORD );
194 mpWndClass->lpszClassName = L
"com_sun_star_media_Sound_Player";
195 mpWndClass->hbrBackground =
static_cast<HBRUSH
>(::GetStockObject(
BLACK_BRUSH ));
196 mpWndClass->hCursor = ::LoadCursor(
nullptr, IDC_ARROW );
198 RegisterClassW( mpWndClass );
202 mnFrameWnd = CreateWindowW( mpWndClass->lpszClassName,
nullptr,
205 nullptr,
nullptr, mpWndClass->hInstance,
nullptr );
209 SetWindowLongPtrW(
mnFrameWnd, 0,
reinterpret_cast<LONG_PTR
>(
this) );
233 OAFilterState eFilterState;
236 if(
mpMC && SUCCEEDED(
mpMC->GetState( 10, &eFilterState ) ) )
237 bRet = ( State_Running == eFilterState );
247 REFTIME aRefTime( 0.0 );
250 mpMP->get_Duration( &aRefTime );
264 mpMP->put_CurrentPosition( fTime );
266 if( !bPlaying &&
mpMC )
267 mpMC->StopWhenReady();
276 REFTIME aRefTime( 0.0 );
279 mpMP->get_CurrentPosition( &aRefTime );
344 awt::Size aSize( 0, 0 );
348 long nWidth = 0, nHeight = 0;
350 mpBV->GetVideoSize( &nWidth, &nHeight );
351 aSize.Width = nWidth;
352 aSize.Height = nHeight;
363 uno::Reference< ::media::XPlayerWindow > xRet;
366 if(
mpVW && aSize.Width > 0 && aSize.Height > 0 )
372 if( !pWindow->create( aArguments ) )
382 uno::Reference< media::XFrameGrabber > xRet;
384 if( !
maURL.isEmpty() )
390 if( !pGrabber->create(
maURL ) )
mutable::osl::Mutex m_aMutex
bool CPPUHELPER_DLLPUBLIC supportsService(css::lang::XServiceInfo *implementation, rtl::OUString const &name)
constexpr OUStringLiteral AVMEDIA_WIN_PLAYER_SERVICENAME
constexpr OUStringLiteral AVMEDIA_WIN_PLAYER_IMPLEMENTATIONNAME