LibreOffice Module avmedia (master) 1
win/player.hxx
Go to the documentation of this file.
1/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2/*
3 * This file is part of the LibreOffice project.
4 *
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 *
9 * This file incorporates work covered by the following license notice:
10 *
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 */
19
20#pragma once
21
22#include <sal/config.h>
23
24#include <WinDef.h>
25
26#include "wincommon.hxx"
27
28#include <com/sun/star/media/XPlayer.hpp>
29
32#include <systools/win32/comtools.hxx>
33
34struct IGraphBuilder;
35struct IBaseFilter;
36struct IMediaControl;
37struct IMediaEventEx;
38struct IMediaSeeking;
39struct IMediaPosition;
40struct IBasicAudio;
41struct IBasicVideo;
42struct IVideoWindow;
43struct IDDrawExclModeVideo;
44struct IDirectDraw;
45struct IDirectDrawSurface;
46
47namespace avmedia::win {
48
49typedef ::cppu::WeakComponentImplHelper< css::media::XPlayer,
50 css::lang::XServiceInfo > Player_BASE;
51
52
53class Player : public cppu::BaseMutex,
54 public Player_BASE,
55 public sal::systools::CoInitializeGuard
56{
57public:
58
59 explicit Player();
60 ~Player() override;
61
62 bool create( const OUString& rURL );
63
64 void setNotifyWnd( HWND nNotifyWnd );
65 void processEvent();
66
67 const IVideoWindow* getVideoWindow() const;
68
69 // XPlayer
70 virtual void SAL_CALL start( ) override;
71 virtual void SAL_CALL stop( ) override;
72 virtual sal_Bool SAL_CALL isPlaying( ) override;
73 virtual double SAL_CALL getDuration( ) override;
74 virtual void SAL_CALL setMediaTime( double fTime ) override;
75 virtual double SAL_CALL getMediaTime( ) override;
76 virtual void SAL_CALL setPlaybackLoop( sal_Bool bSet ) override;
77 virtual sal_Bool SAL_CALL isPlaybackLoop( ) override;
78 virtual void SAL_CALL setMute( sal_Bool bSet ) override;
79 virtual sal_Bool SAL_CALL isMute( ) override;
80 virtual void SAL_CALL setVolumeDB( sal_Int16 nVolumeDB ) override;
81 virtual sal_Int16 SAL_CALL getVolumeDB( ) override;
82 virtual css::awt::Size SAL_CALL getPreferredPlayerWindowSize( ) override;
83 virtual css::uno::Reference< css::media::XPlayerWindow > SAL_CALL createPlayerWindow( const css::uno::Sequence< css::uno::Any >& aArguments ) override;
84 virtual css::uno::Reference< css::media::XFrameGrabber > SAL_CALL createFrameGrabber( ) override;
85
86 // XServiceInfo
87 virtual OUString SAL_CALL getImplementationName( ) override;
88 virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) override;
89 virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames( ) override;
90
91 // ::cppu::OComponentHelper
92 virtual void SAL_CALL disposing() override;
93
94private:
95
96 OUString maURL;
97 sal::systools::COMReference<IGraphBuilder> mpGB;
98 sal::systools::COMReference<IMediaControl> mpMC;
99 sal::systools::COMReference<IMediaEventEx> mpME;
100 sal::systools::COMReference<IMediaPosition> mpMP;
101 sal::systools::COMReference<IBasicAudio> mpBA;
102 sal::systools::COMReference<IBasicVideo> mpBV;
103 sal::systools::COMReference<IVideoWindow> mpVW;
109};
110
111} // namespace avmedia::win
112
113
114/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
sal::systools::COMReference< IGraphBuilder > mpGB
Definition: win/player.hxx:97
virtual void SAL_CALL start() override
Definition: player.cxx:178
virtual void SAL_CALL setVolumeDB(sal_Int16 nVolumeDB) override
Definition: player.cxx:321
virtual void SAL_CALL setPlaybackLoop(sal_Bool bSet) override
Definition: player.cxx:285
sal::systools::COMReference< IBasicAudio > mpBA
Definition: win/player.hxx:101
virtual sal_Bool SAL_CALL isMute() override
Definition: player.cxx:313
virtual double SAL_CALL getDuration() override
Definition: player.cxx:243
sal::systools::COMReference< IVideoWindow > mpVW
Definition: win/player.hxx:103
bool create(const OUString &rURL)
Definition: player.cxx:94
virtual sal_Bool SAL_CALL isPlaybackLoop() override
Definition: player.cxx:293
virtual double SAL_CALL getMediaTime() override
Definition: player.cxx:272
virtual sal_Bool SAL_CALL supportsService(const OUString &ServiceName) override
Definition: player.cxx:404
virtual OUString SAL_CALL getImplementationName() override
Definition: player.cxx:398
virtual void SAL_CALL stop() override
Definition: player.cxx:221
virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override
Definition: player.cxx:410
~Player() override
Definition: player.cxx:78
virtual void SAL_CALL setMediaTime(double fTime) override
Definition: player.cxx:256
void setNotifyWnd(HWND nNotifyWnd)
Definition: player.cxx:144
virtual void SAL_CALL disposing() override
Definition: player.cxx:85
virtual css::uno::Reference< css::media::XFrameGrabber > SAL_CALL createFrameGrabber() override
Definition: player.cxx:380
sal::systools::COMReference< IMediaPosition > mpMP
Definition: win/player.hxx:100
const IVideoWindow * getVideoWindow() const
Definition: player.cxx:138
virtual css::uno::Reference< css::media::XPlayerWindow > SAL_CALL createPlayerWindow(const css::uno::Sequence< css::uno::Any > &aArguments) override
sal::systools::COMReference< IBasicVideo > mpBV
Definition: win/player.hxx:102
sal::systools::COMReference< IMediaControl > mpMC
Definition: win/player.hxx:98
virtual void SAL_CALL setMute(sal_Bool bSet) override
Definition: player.cxx:301
virtual sal_Bool SAL_CALL isPlaying() override
Definition: player.cxx:229
virtual css::awt::Size SAL_CALL getPreferredPlayerWindowSize() override
Definition: player.cxx:340
virtual sal_Int16 SAL_CALL getVolumeDB() override
Definition: player.cxx:332
sal::systools::COMReference< IMediaEventEx > mpME
Definition: win/player.hxx:99
::cppu::WeakComponentImplHelper< css::media::XPlayer, css::lang::XServiceInfo > Player_BASE
Definition: win/player.hxx:50
unsigned char sal_Bool