Music Hub  ..
A session-wide music playback service
player_implementation.h
Go to the documentation of this file.
1 /*
2  * Copyright © 2013-2015 Canonical Ltd.
3  * Copyright © 2022 UBports Foundation.
4  *
5  * Contact: Alberto Mardegan <mardy@users.sourceforge.net>
6  *
7  * This program is free software: you can redistribute it and/or modify it
8  * under the terms of the GNU Lesser General Public License version 3,
9  * as published by the Free Software Foundation.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  * GNU Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public License
17  * along with this program. If not, see <http://www.gnu.org/licenses/>.
18  *
19  * Authored by: Thomas Voß <thomas.voss@canonical.com>
20  */
21 
22 #ifndef LOMIRI_MEDIAHUBSERVICE_PLAYER_IMPLEMENTATION_H
23 #define LOMIRI_MEDIAHUBSERVICE_PLAYER_IMPLEMENTATION_H
24 
25 #include "apparmor/lomiri.h"
26 #include "client_death_observer.h"
27 #include "player.h"
28 #include "power/state_controller.h"
29 #include "track.h"
30 
31 #include <QMap>
32 #include <QObject>
33 #include <QScopedPointer>
34 #include <QString>
35 
36 namespace lomiri
37 {
38 namespace MediaHubService
39 {
40 class Engine;
41 class Service;
42 
43 class PlayerImplementationPrivate;
45 {
46  Q_OBJECT
47 
48 public:
50 
51  // All creation time arguments go here
53  {
54  // The unique client identifying the player instance.
56  // Functional dependencies
58  };
59 
60  PlayerImplementation(const Configuration& configuration,
61  QObject *parent = nullptr);
63 
65  const Player::Client &client() const;
66 
67  bool canPlay() const;
68  bool canPause() const;
69  bool canSeek() const;
70  bool canGoPrevious() const;
71  bool canGoNext() const;
72 
73  void setPlaybackRate(double rate);
74  double playbackRate() const;
75  double minimumRate() const;
76  double maximumRate() const;
77 
78  void setLoopStatus(Player::LoopStatus status);
80 
81  void setShuffle(bool shuffle);
82  bool shuffle() const;
83 
84  void setVolume(double volume);
85  double volume() const;
86 
88 
89  bool isVideoSource() const;
90  bool isAudioSource() const;
91  QSize videoDimension() const;
94 
95  uint64_t position() const;
96  uint64_t duration() const;
97 
100 
102  Player::Lifetime lifetime() const;
103 
104  void reconnect();
105  void abandon();
106 
107  QSharedPointer<TrackListImplementation> trackList();
108  Player::PlayerKey key() const;
109 
110  void create_gl_texture_video_sink(std::uint32_t texture_id);
111 
112  bool open_uri(const QUrl &uri);
113  bool open_uri(const QUrl &uri, const Headers &headers);
114  void next();
115  void previous();
116  void play();
117  void pause();
118  void stop();
119  void seek_to(const std::chrono::microseconds& offset);
120 
121 Q_SIGNALS:
122  void isVideoSourceChanged();
123  void isAudioSourceChanged();
125  void mprisPropertiesChanged();
126 
127  void positionChanged();
128  void durationChanged();
129  void volumeChanged();
130  void playbackStatusChanged();
131 
132  void orientationChanged();
133  void videoDimensionChanged();
134 
135  void aboutToFinish();
136  void clientDisconnected();
137  void seekedTo(uint64_t offset);
138  void bufferingChanged(int);
139  void endOfStream();
140  void errorOccurred(Player::Error error);
141  /* TODO: the Service should pause all other players and set this one as the current one */
142  void playbackRequested();
143 
144 private:
145  Q_DECLARE_PRIVATE(PlayerImplementation)
146  QScopedPointer<PlayerImplementationPrivate> d_ptr;
147 };
148 
149 }
150 }
151 
152 #endif // LOMIRI_MEDIAHUBSERVICE_PLAYER_IMPLEMENTATION_H
lomiri::MediaHubService::PlayerImplementation::canSeek
bool canSeek() const
Definition: player_implementation.cpp:615
lomiri::MediaHubService::PlayerImplementation::abandon
void abandon()
Definition: player_implementation.cpp:770
lomiri::MediaHubService::PlayerImplementation::durationChanged
void durationChanged()
lomiri::MediaHubService::PlayerImplementation::shuffle
bool shuffle() const
Definition: player_implementation.cpp:673
QObject
lomiri::MediaHubService::Track::MetaData
Definition: track.h:37
lomiri::MediaHubService::PlayerImplementation::seekedTo
void seekedTo(uint64_t offset)
lomiri::MediaHubService::PlayerImplementation::key
Player::PlayerKey key() const
Definition: player_implementation.cpp:784
lomiri::MediaHubService::PlayerImplementation::Configuration::client_death_observer
ClientDeathObserver::Ptr client_death_observer
Definition: player_implementation.h:57
lomiri::MediaHubService::PlayerImplementation::duration
uint64_t duration() const
Definition: player_implementation.cpp:734
lomiri::MediaHubService::PlayerImplementation::client
const Player::Client & client() const
Definition: player_implementation.cpp:597
lomiri::MediaHubService::Player::Error
Error
Definition: player.h:135
lomiri::MediaHubService::PlayerImplementation
Definition: player_implementation.h:44
lomiri::MediaHubService::PlayerImplementation::loopStatus
Player::LoopStatus loopStatus() const
Definition: player_implementation.cpp:661
lomiri::MediaHubService::PlayerImplementation::volume
double volume() const
Definition: player_implementation.cpp:686
lomiri::MediaHubService::PlayerImplementation::isAudioSourceChanged
void isAudioSourceChanged()
lomiri::MediaHubService::Player::LoopStatus
LoopStatus
Definition: player.h:101
lomiri::MediaHubService::PlayerImplementation::setShuffle
void setShuffle(bool shuffle)
Definition: player_implementation.cpp:667
lomiri::MediaHubService::PlayerImplementation::setVolume
void setVolume(double volume)
Definition: player_implementation.cpp:679
lomiri::MediaHubService::PlayerImplementation::playbackStatusChanged
void playbackStatusChanged()
lomiri::MediaHubService::PlayerImplementation::videoDimensionChanged
void videoDimensionChanged()
lomiri::MediaHubService::PlayerImplementation::minimumRate
double minimumRate() const
Definition: player_implementation.cpp:644
lomiri::MediaHubService::PlayerImplementation::positionChanged
void positionChanged()
lomiri::MediaHubService::PlayerImplementation::reconnect
void reconnect()
Definition: player_implementation.cpp:764
lomiri::MediaHubService::PlayerImplementation::PlayerImplementation
PlayerImplementation(const Configuration &configuration, QObject *parent=nullptr)
Definition: player_implementation.cpp:576
lomiri::MediaHubService::PlayerImplementation::canGoPrevious
bool canGoPrevious() const
Definition: player_implementation.cpp:621
lomiri::MediaHubService::PlayerImplementation::playbackRequested
void playbackRequested()
lomiri::MediaHubService::PlayerImplementation::errorOccurred
void errorOccurred(Player::Error error)
lomiri::MediaHubService::AVBackend::Backend
Backend
Definition: player.h:36
lomiri::MediaHubService::Player::HeadersType
QMap< QString, QString > HeadersType
Definition: player.h:57
track.h
lomiri::MediaHubService::PlayerImplementation::aboutToFinish
void aboutToFinish()
lomiri::MediaHubService::PlayerImplementation::create_gl_texture_video_sink
void create_gl_texture_video_sink(std::uint32_t texture_id)
Definition: player_implementation.cpp:790
lomiri::MediaHubService::PlayerImplementation::clientDisconnected
void clientDisconnected()
lomiri::MediaHubService::PlayerImplementation::bufferingChanged
void bufferingChanged(int)
lomiri::MediaHubService::PlayerImplementation::Configuration
Definition: player_implementation.h:52
lomiri::MediaHubService::PlayerImplementation::maximumRate
double maximumRate() const
Definition: player_implementation.cpp:649
lomiri::MediaHubService::Player::Client
Definition: player.h:61
lomiri::MediaHubService::Player::AudioStreamRole
AudioStreamRole
Definition: player.h:113
lomiri::MediaHubService::PlayerImplementation::canPause
bool canPause() const
Definition: player_implementation.cpp:609
lomiri::MediaHubService::PlayerImplementation::next
void next()
Definition: player_implementation.cpp:823
lomiri::MediaHubService::Player::PlayerKey
uint32_t PlayerKey
Definition: player.h:55
state_controller.h
lomiri::MediaHubService::PlayerImplementation::~PlayerImplementation
~PlayerImplementation()
Definition: player_implementation.cpp:588
client_death_observer.h
lomiri::MediaHubService::ClientDeathObserver::Ptr
QSharedPointer< ClientDeathObserver > Ptr
Definition: client_death_observer.h:45
lomiri::MediaHubService::PlayerImplementation::trackList
QSharedPointer< TrackListImplementation > trackList()
Definition: player_implementation.cpp:778
lomiri::MediaHubService::PlayerImplementation::setLoopStatus
void setLoopStatus(Player::LoopStatus status)
Definition: player_implementation.cpp:654
lomiri::MediaHubService::PlayerImplementation::metadataForCurrentTrack
Track::MetaData metadataForCurrentTrack() const
Definition: player_implementation.cpp:722
lomiri::MediaHubService::PlayerImplementation::stop
void stop()
Definition: player_implementation.cpp:854
lomiri::MediaHubService::PlayerImplementation::volumeChanged
void volumeChanged()
lomiri::MediaHubService::PlayerImplementation::lifetime
Player::Lifetime lifetime() const
Definition: player_implementation.cpp:758
lomiri::MediaHubService::PlayerImplementation::setPlaybackRate
void setPlaybackRate(double rate)
Definition: player_implementation.cpp:633
lomiri::MediaHubService::PlayerImplementation::isVideoSourceChanged
void isVideoSourceChanged()
lomiri::MediaHubService::PlayerImplementation::endOfStream
void endOfStream()
lomiri::MediaHubService::PlayerImplementation::Headers
Player::HeadersType Headers
Definition: player_implementation.h:49
lomiri::MediaHubService::PlayerImplementation::position
uint64_t position() const
Definition: player_implementation.cpp:728
lomiri::MediaHubService::PlayerImplementation::audioStreamRole
Player::AudioStreamRole audioStreamRole() const
Definition: player_implementation.cpp:746
lomiri::MediaHubService::Player::PlaybackStatus
PlaybackStatus
Definition: player.h:92
lomiri::MediaHubService::PlayerImplementation::open_uri
bool open_uri(const QUrl &uri)
Definition: player_implementation.cpp:796
lomiri::MediaHubService::Player::Lifetime
Lifetime
Definition: player.h:129
lomiri::MediaHubService::PlayerImplementation::Configuration::client
Player::Client client
Definition: player_implementation.h:55
lomiri::MediaHubService::PlayerImplementation::canGoNext
bool canGoNext() const
Definition: player_implementation.cpp:627
lomiri::MediaHubService::PlayerImplementation::playbackStatus
Player::PlaybackStatus playbackStatus() const
Definition: player_implementation.cpp:692
lomiri::MediaHubService::PlayerImplementation::orientation
Player::Orientation orientation() const
Definition: player_implementation.cpp:716
lomiri.h
lomiri::MediaHubService::PlayerImplementation::backend
AVBackend::Backend backend() const
Definition: player_implementation.cpp:592
lomiri::MediaHubService::PlayerImplementation::previous
void previous()
Definition: player_implementation.cpp:829
lomiri::MediaHubService::PlayerImplementation::seek_to
void seek_to(const std::chrono::microseconds &offset)
Definition: player_implementation.cpp:861
player.h
lomiri::MediaHubService::PlayerImplementation::playbackRate
double playbackRate() const
Definition: player_implementation.cpp:639
lomiri::MediaHubService::PlayerImplementation::metadataForCurrentTrackChanged
void metadataForCurrentTrackChanged()
lomiri::MediaHubService::PlayerImplementation::mprisPropertiesChanged
void mprisPropertiesChanged()
lomiri::MediaHubService::PlayerImplementation::orientationChanged
void orientationChanged()
lomiri
Definition: dbus_utils.h:24
lomiri::MediaHubService::PlayerImplementation::setLifetime
void setLifetime(Player::Lifetime lifetime)
Definition: player_implementation.cpp:752
lomiri::MediaHubService::PlayerImplementation::pause
void pause()
Definition: player_implementation.cpp:847
lomiri::MediaHubService::PlayerImplementation::canPlay
bool canPlay() const
Definition: player_implementation.cpp:603
lomiri::MediaHubService::PlayerImplementation::isVideoSource
bool isVideoSource() const
Definition: player_implementation.cpp:698
lomiri::MediaHubService::PlayerImplementation::setAudioStreamRole
void setAudioStreamRole(Player::AudioStreamRole role)
Definition: player_implementation.cpp:740
lomiri::MediaHubService::PlayerImplementation::play
void play()
Definition: player_implementation.cpp:835
lomiri::MediaHubService::PlayerImplementation::isAudioSource
bool isAudioSource() const
Definition: player_implementation.cpp:704
lomiri::MediaHubService::Player::Orientation
Orientation
Definition: player.h:121
lomiri::MediaHubService::PlayerImplementation::videoDimension
QSize videoDimension() const
Definition: player_implementation.cpp:710