LibreOffice Module avmedia (master) 1
gstplayer.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 <string_view>
25
26#include <osl/conditn.hxx>
27#include "gstcommon.hxx"
28
29#include <com/sun/star/media/XPlayer.hpp>
32
33typedef struct _GstVideoOverlay GstVideoOverlay;
34
35namespace avmedia::gstreamer {
36
37
38typedef ::cppu::WeakComponentImplHelper< css::media::XPlayer,
39 css::lang::XServiceInfo > GstPlayer_BASE;
40
41class Player final : public ::cppu::BaseMutex,
42 public GstPlayer_BASE
43{
44public:
45
46 explicit Player();
47 virtual ~Player() override;
48
49 void preparePlaybin( std::u16string_view rURL, GstElement *pSink );
50 bool create( const OUString& rURL );
51 void processMessage( GstMessage *message );
52 GstBusSyncReply processSyncMessage( GstMessage *message );
53
54 // XPlayer
55 virtual void SAL_CALL start( ) override;
56 virtual void SAL_CALL stop( ) override;
57 virtual sal_Bool SAL_CALL isPlaying( ) override;
58 virtual double SAL_CALL getDuration( ) override;
59 virtual void SAL_CALL setMediaTime( double fTime ) override;
60 virtual double SAL_CALL getMediaTime( ) override;
61 virtual void SAL_CALL setPlaybackLoop( sal_Bool bSet ) override;
62 virtual sal_Bool SAL_CALL isPlaybackLoop( ) override;
63 virtual void SAL_CALL setMute( sal_Bool bSet ) override;
64 virtual sal_Bool SAL_CALL isMute( ) override;
65 virtual void SAL_CALL setVolumeDB( sal_Int16 nVolumeDB ) override;
66 virtual sal_Int16 SAL_CALL getVolumeDB( ) override;
67 virtual css::awt::Size SAL_CALL getPreferredPlayerWindowSize( ) override;
68 virtual css::uno::Reference< css::media::XPlayerWindow > SAL_CALL createPlayerWindow( const css::uno::Sequence< css::uno::Any >& aArguments ) override;
69 virtual css::uno::Reference< css::media::XFrameGrabber > SAL_CALL createFrameGrabber( ) override;
70
71 // XServiceInfo
72 virtual OUString SAL_CALL getImplementationName( ) override;
73 virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) override;
74 virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames( ) override;
75
76 // ::cppu::OComponentHelper
77 virtual void SAL_CALL disposing() final override;
78
79private:
80 OUString maURL;
81
82 // Add elements and pipeline here
83 GstElement* mpPlaybin; // the playbin is also a pipeline
84 GstElement* mpVolumeControl; // the playbin is also a pipeline
87
89 bool mbMuted;
92
93 void* mpDisplay;
96 gint64 mnDuration;
99
100 css::awt::Rectangle maArea; // Area of the player window.
101
104
106};
107
108} // namespace avmedia::gstreamer
109
110/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
virtual css::uno::Reference< css::media::XFrameGrabber > SAL_CALL createFrameGrabber() override
Definition: gstplayer.cxx:937
virtual void SAL_CALL setPlaybackLoop(sal_Bool bSet) override
Definition: gstplayer.cxx:723
GstElement * mpVolumeControl
Definition: gstplayer.hxx:84
virtual ~Player() override
Definition: gstplayer.cxx:325
bool create(const OUString &rURL)
Definition: gstplayer.cxx:607
virtual void SAL_CALL setMediaTime(double fTime) override
Definition: gstplayer.cxx:687
virtual void SAL_CALL stop() override
Definition: gstplayer.cxx:646
virtual sal_Bool SAL_CALL isPlaybackLoop() override
Definition: gstplayer.cxx:731
virtual void SAL_CALL start() override
Definition: gstplayer.cxx:633
virtual void SAL_CALL setVolumeDB(sal_Int16 nVolumeDB) override
Definition: gstplayer.cxx:769
void preparePlaybin(std::u16string_view rURL, GstElement *pSink)
Definition: gstplayer.cxx:552
virtual void SAL_CALL setMute(sal_Bool bSet) override
Definition: gstplayer.cxx:739
virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override
Definition: gstplayer.cxx:963
css::awt::Rectangle maArea
Definition: gstplayer.hxx:100
virtual sal_Bool SAL_CALL isPlaying() override
Definition: gstplayer.cxx:657
virtual double SAL_CALL getMediaTime() override
Definition: gstplayer.cxx:706
virtual sal_Bool SAL_CALL supportsService(const OUString &ServiceName) override
Definition: gstplayer.cxx:957
virtual double SAL_CALL getDuration() override
Definition: gstplayer.cxx:672
virtual css::awt::Size SAL_CALL getPreferredPlayerWindowSize() override
Definition: gstplayer.cxx:804
void processMessage(GstMessage *message)
Definition: gstplayer.cxx:387
GstVideoOverlay * mpXOverlay
Definition: gstplayer.hxx:95
virtual void SAL_CALL disposing() final override
Definition: gstplayer.cxx:333
virtual sal_Int16 SAL_CALL getVolumeDB() override
Definition: gstplayer.cxx:785
osl::Condition maSizeCondition
Definition: gstplayer.hxx:105
virtual OUString SAL_CALL getImplementationName() override
Definition: gstplayer.cxx:951
virtual sal_Bool SAL_CALL isMute() override
Definition: gstplayer.cxx:761
virtual css::uno::Reference< css::media::XPlayerWindow > SAL_CALL createPlayerWindow(const css::uno::Sequence< css::uno::Any > &aArguments) override
GstBusSyncReply processSyncMessage(GstMessage *message)
Definition: gstplayer.cxx:436
struct _GstVideoOverlay GstVideoOverlay
Definition: gstplayer.hxx:33
::cppu::WeakComponentImplHelper< css::media::XPlayer, css::lang::XServiceInfo > GstPlayer_BASE
Definition: gstplayer.hxx:39
long Long
unsigned char sal_Bool