xref: /trunk/main/avmedia/source/win/player.hxx (revision cdf0e10c)
1 /*************************************************************************
2  *
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * Copyright 2000, 2010 Oracle and/or its affiliates.
6  *
7  * OpenOffice.org - a multi-platform office productivity suite
8  *
9  * This file is part of OpenOffice.org.
10  *
11  * OpenOffice.org is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU Lesser General Public License version 3
13  * only, as published by the Free Software Foundation.
14  *
15  * OpenOffice.org is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU Lesser General Public License version 3 for more details
19  * (a copy is included in the LICENSE file that accompanied this code).
20  *
21  * You should have received a copy of the GNU Lesser General Public License
22  * version 3 along with OpenOffice.org.  If not, see
23  * <http://www.openoffice.org/license.html>
24  * for a copy of the LGPLv3 License.
25  *
26  ************************************************************************/
27 
28 #ifndef _PLAYER_HXX
29 #define _PLAYER_HXX
30 
31 #include "wincommon.hxx"
32 
33 #include "com/sun/star/media/XPlayer.hdl"
34 
35 #include <cppuhelper/compbase2.hxx>
36 #include <cppuhelper/basemutex.hxx>
37 
38 struct IGraphBuilder;
39 struct IBaseFilter;
40 struct IMediaControl;
41 struct IMediaEventEx;
42 struct IMediaSeeking;
43 struct IMediaPosition;
44 struct IBasicAudio;
45 struct IBasicVideo;
46 struct IVideoWindow;
47 struct IDDrawExclModeVideo;
48 struct IDirectDraw;
49 struct IDirectDrawSurface;
50 
51 namespace avmedia { namespace win {
52 
53 // ----------
54 // - Player -
55 // ----------
56 typedef ::cppu::WeakComponentImplHelper2< ::com::sun::star::media::XPlayer,
57                                           ::com::sun::star::lang::XServiceInfo > Player_BASE;
58 
59 class Player :  public cppu::BaseMutex,
60                 public Player_BASE
61 {
62 public:
63 
64                         Player( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& rxMgr );
65                         ~Player();
66 
67     bool                create( const ::rtl::OUString& rURL );
68 
69     void                setNotifyWnd( int nNotifyWnd );
70     void                setDDrawParams( IDirectDraw* pDDraw, IDirectDrawSurface* pDDrawSurface );
71     long                processEvent();
72 
73     const IVideoWindow* getVideoWindow() const;
74 
75     // XPlayer
76     virtual void SAL_CALL start(  ) throw (::com::sun::star::uno::RuntimeException);
77     virtual void SAL_CALL stop(  ) throw (::com::sun::star::uno::RuntimeException);
78     virtual sal_Bool SAL_CALL isPlaying(  ) throw (::com::sun::star::uno::RuntimeException);
79     virtual double SAL_CALL getDuration(  ) throw (::com::sun::star::uno::RuntimeException);
80     virtual void SAL_CALL setMediaTime( double fTime ) throw (::com::sun::star::uno::RuntimeException);
81     virtual double SAL_CALL getMediaTime(  ) throw (::com::sun::star::uno::RuntimeException);
82     virtual void SAL_CALL setStopTime( double fTime ) throw (::com::sun::star::uno::RuntimeException);
83     virtual double SAL_CALL getStopTime(  ) throw (::com::sun::star::uno::RuntimeException);
84     virtual void SAL_CALL setRate( double fRate ) throw (::com::sun::star::uno::RuntimeException);
85     virtual double SAL_CALL getRate(  ) throw (::com::sun::star::uno::RuntimeException);
86     virtual void SAL_CALL setPlaybackLoop( sal_Bool bSet ) throw (::com::sun::star::uno::RuntimeException);
87     virtual sal_Bool SAL_CALL isPlaybackLoop(  ) throw (::com::sun::star::uno::RuntimeException);
88     virtual void SAL_CALL setMute( sal_Bool bSet ) throw (::com::sun::star::uno::RuntimeException);
89     virtual sal_Bool SAL_CALL isMute(  ) throw (::com::sun::star::uno::RuntimeException);
90     virtual void SAL_CALL setVolumeDB( sal_Int16 nVolumeDB ) throw (::com::sun::star::uno::RuntimeException);
91     virtual sal_Int16 SAL_CALL getVolumeDB(  ) throw (::com::sun::star::uno::RuntimeException);
92     virtual ::com::sun::star::awt::Size SAL_CALL getPreferredPlayerWindowSize(  ) throw (::com::sun::star::uno::RuntimeException);
93     virtual ::com::sun::star::uno::Reference< ::com::sun::star::media::XPlayerWindow > SAL_CALL createPlayerWindow( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aArguments ) throw (::com::sun::star::uno::RuntimeException);
94     virtual ::com::sun::star::uno::Reference< ::com::sun::star::media::XFrameGrabber > SAL_CALL createFrameGrabber(  ) throw (::com::sun::star::uno::RuntimeException);
95 
96     // XServiceInfo
97     virtual ::rtl::OUString SAL_CALL getImplementationName(  ) throw (::com::sun::star::uno::RuntimeException);
98     virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw (::com::sun::star::uno::RuntimeException);
99     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames(  ) throw (::com::sun::star::uno::RuntimeException);
100 
101     // ::cppu::OComponentHelper
102 	virtual void SAL_CALL disposing(void);
103 
104 private:
105 
106     ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > mxMgr;
107 
108     ::rtl::OUString         maURL;
109     IGraphBuilder*          mpGB;
110     IBaseFilter*            mpOMF;
111     IMediaControl*          mpMC;
112     IMediaEventEx*          mpME;
113     IMediaSeeking*          mpMS;
114     IMediaPosition*         mpMP;
115     IBasicAudio*            mpBA;
116     IBasicVideo*            mpBV;
117     IVideoWindow*           mpVW;
118     IDDrawExclModeVideo*    mpEV;
119     long                    mnUnmutedVolume;
120 	int						mnFrameWnd;
121 
122     sal_Bool                mbMuted;
123     sal_Bool                mbLooping;
124 	sal_Bool                mbAddWindow;
125 
126     void                    ImplLayoutVideoWindow();
127 };
128 
129 } // namespace win
130 } // namespace avmedia
131 
132 #endif // _PLAYER_HXX
133