Version 4.0.0.1, tag libreoffice-4.0.0.1
[LibreOffice.git] / avmedia / source / gstreamer / gstplayer.hxx
blob5a84a0095689fec4ce4fc9b98deb0b912b6c338c
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3 * This file is part of the LibreOffice project.
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/.
9 * This file incorporates work covered by the following license notice:
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 .
20 #ifndef _PLAYER_HXX
21 #define _PLAYER_HXX
23 #include <osl/conditn.hxx>
24 #include "gstcommon.hxx"
26 #include "com/sun/star/media/XPlayer.hpp"
27 #include <cppuhelper/compbase2.hxx>
28 #include <cppuhelper/basemutex.hxx>
30 typedef struct _GstVideoOverlay GstVideoOverlay;
32 namespace avmedia { namespace gstreamer {
34 // ----------
35 // - Player -
36 // ----------
38 typedef ::cppu::WeakComponentImplHelper2< ::com::sun::star::media::XPlayer,
39 ::com::sun::star::lang::XServiceInfo > GstPlayer_BASE;
41 class Player : public ::cppu::BaseMutex,
42 public GstPlayer_BASE
44 public:
46 Player( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& rxMgr );
47 ~Player();
49 void preparePlaybin( const OUString& rURL, GstElement *pSink );
50 bool create( const OUString& rURL );
51 virtual void processMessage( GstMessage *message );
52 virtual GstBusSyncReply processSyncMessage( GstMessage *message );
54 // XPlayer
55 virtual void SAL_CALL start( ) throw (::com::sun::star::uno::RuntimeException);
56 virtual void SAL_CALL stop( ) throw (::com::sun::star::uno::RuntimeException);
57 virtual sal_Bool SAL_CALL isPlaying( ) throw (::com::sun::star::uno::RuntimeException);
58 virtual double SAL_CALL getDuration( ) throw (::com::sun::star::uno::RuntimeException);
59 virtual void SAL_CALL setMediaTime( double fTime ) throw (::com::sun::star::uno::RuntimeException);
60 virtual double SAL_CALL getMediaTime( ) throw (::com::sun::star::uno::RuntimeException);
61 virtual double SAL_CALL getRate( ) throw (::com::sun::star::uno::RuntimeException);
62 virtual void SAL_CALL setPlaybackLoop( sal_Bool bSet ) throw (::com::sun::star::uno::RuntimeException);
63 virtual sal_Bool SAL_CALL isPlaybackLoop( ) throw (::com::sun::star::uno::RuntimeException);
64 virtual void SAL_CALL setMute( sal_Bool bSet ) throw (::com::sun::star::uno::RuntimeException);
65 virtual sal_Bool SAL_CALL isMute( ) throw (::com::sun::star::uno::RuntimeException);
66 virtual void SAL_CALL setVolumeDB( sal_Int16 nVolumeDB ) throw (::com::sun::star::uno::RuntimeException);
67 virtual sal_Int16 SAL_CALL getVolumeDB( ) throw (::com::sun::star::uno::RuntimeException);
68 virtual ::com::sun::star::awt::Size SAL_CALL getPreferredPlayerWindowSize( ) throw (::com::sun::star::uno::RuntimeException);
69 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);
70 virtual ::com::sun::star::uno::Reference< ::com::sun::star::media::XFrameGrabber > SAL_CALL createFrameGrabber( ) throw (::com::sun::star::uno::RuntimeException);
72 // XServiceInfo
73 virtual OUString SAL_CALL getImplementationName( ) throw (::com::sun::star::uno::RuntimeException);
74 virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) throw (::com::sun::star::uno::RuntimeException);
75 virtual ::com::sun::star::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames( ) throw (::com::sun::star::uno::RuntimeException);
77 // ::cppu::OComponentHelper
78 virtual void SAL_CALL disposing(void);
80 protected:
81 ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > mxMgr;
83 OUString maURL;
85 // Add elements and pipeline here
86 GstElement* mpPlaybin; // the playbin is also a pipeline
87 sal_Bool mbFakeVideo;
89 gdouble mnUnmutedVolume;
90 sal_Bool mbPlayPending;
91 sal_Bool mbMuted;
92 sal_Bool mbLooping;
93 sal_Bool mbInitialized;
95 long mnWindowID;
96 GstVideoOverlay* mpXOverlay;
97 gint64 mnDuration;
98 int mnWidth;
99 int mnHeight;
101 osl::Condition maSizeCondition;
104 } // namespace gstreamer
105 } // namespace avmedia
107 #endif // _PLAYER_HXX
109 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */