Music Hub  ..
A session-wide music playback service
player_stub.h
Go to the documentation of this file.
1 /*
2  * Copyright © 2013-2015 Canonical Ltd.
3  *
4  * This program is free software: you can redistribute it and/or modify it
5  * under the terms of the GNU Lesser General Public License version 3,
6  * as published by the Free Software Foundation.
7  *
8  * This program is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11  * GNU Lesser General Public License for more details.
12  *
13  * You should have received a copy of the GNU Lesser General Public License
14  * along with this program. If not, see <http://www.gnu.org/licenses/>.
15  *
16  * Authored by: Thomas Voß <thomas.voss@canonical.com>
17  * Jim Hodapp <jim.hodapp@canonical.com>
18  */
19 
20 #ifndef CORE_UBUNTU_MEDIA_PLAYER_STUB_H_
21 #define CORE_UBUNTU_MEDIA_PLAYER_STUB_H_
22 
23 #include <core/media/player.h>
24 
25 #include <core/dbus/stub.h>
26 
27 #include <memory>
28 
29 namespace core
30 {
31 namespace ubuntu
32 {
33 namespace media
34 {
35 class Service;
36 
37 class PlayerStub : public Player
38 {
39  public:
40  explicit PlayerStub(
41  const std::shared_ptr<Service>& parent,
42  const std::shared_ptr<core::dbus::Service>& service,
43  const std::shared_ptr<core::dbus::Object>& object,
44  const std::string& uuid = std::string{});
45 
46  ~PlayerStub();
47 
48  virtual std::string uuid() const;
49  virtual void reconnect();
50  virtual void abandon();
51 
52  virtual std::shared_ptr<TrackList> track_list();
53  virtual PlayerKey key() const;
54 
55  virtual video::Sink::Ptr create_gl_texture_video_sink(std::uint32_t texture_id);
56 
57  virtual bool open_uri(const Track::UriType& uri);
58  virtual bool open_uri(const Track::UriType& uri, const Player::HeadersType& headers);
59  virtual void next();
60  virtual void previous();
61  virtual void play();
62  virtual void pause();
63  virtual void seek_to(const std::chrono::microseconds& offset);
64  virtual void stop();
65 
66  virtual const core::Property<bool>& can_play() const;
67  virtual const core::Property<bool>& can_pause() const;
68  virtual const core::Property<bool>& can_seek() const;
69  virtual const core::Property<bool>& can_go_previous() const;
70  virtual const core::Property<bool>& can_go_next() const;
71  virtual const core::Property<bool>& is_video_source() const;
72  virtual const core::Property<bool>& is_audio_source() const;
73  virtual const core::Property<PlaybackStatus>& playback_status() const;
74  virtual const core::Property<AVBackend::Backend>& backend() const;
75  virtual const core::Property<LoopStatus>& loop_status() const;
76  virtual const core::Property<PlaybackRate>& playback_rate() const;
77  virtual const core::Property<bool>& shuffle() const;
78  virtual const core::Property<Track::MetaData>& meta_data_for_current_track() const;
79  virtual const core::Property<Volume>& volume() const;
80  virtual const core::Property<PlaybackRate>& minimum_playback_rate() const;
81  virtual const core::Property<PlaybackRate>& maximum_playback_rate() const;
82  virtual const core::Property<int64_t>& position() const;
83  virtual const core::Property<int64_t>& duration() const;
84  virtual const core::Property<AudioStreamRole>& audio_stream_role() const;
85  virtual const core::Property<Orientation>& orientation() const;
86  virtual const core::Property<Lifetime>& lifetime() const;
87 
88  virtual core::Property<LoopStatus>& loop_status();
89  virtual core::Property<PlaybackRate>& playback_rate();
90  virtual core::Property<bool>& shuffle();
91  virtual core::Property<Volume>& volume();
92  virtual core::Property<AudioStreamRole>& audio_stream_role();
93  virtual core::Property<Lifetime>& lifetime();
94 
95  virtual const core::Signal<int64_t>& seeked_to() const;
96  virtual const core::Signal<void>& about_to_finish() const;
97  virtual const core::Signal<void>& end_of_stream() const;
98  virtual core::Signal<PlaybackStatus>& playback_status_changed();
99  virtual const core::Signal<video::Dimensions>& video_dimension_changed() const;
100  virtual const core::Signal<Error>& error() const;
101  virtual const core::Signal<int>& buffering_changed() const;
102 
103  private:
104  struct Private;
105  std::unique_ptr<Private> d;
106 };
107 }
108 }
109 }
110 
111 #endif // CORE_UBUNTU_MEDIA_PLAYER_STUB_H_
virtual video::Sink::Ptr create_gl_texture_video_sink(std::uint32_t texture_id)
virtual const core::Property< AVBackend::Backend > & backend() const
virtual const core::Property< bool > & shuffle() const
virtual const core::Property< int64_t > & position() const
virtual const core::Property< Orientation > & orientation() const
virtual const core::Property< bool > & is_video_source() const
virtual const core::Signal< void > & end_of_stream() const
Definition: player.h:33
virtual const core::Property< int64_t > & duration() const
virtual const core::Property< bool > & is_audio_source() const
std::map< std::string, std::string > HeadersType
Definition: player.h:64
virtual const core::Property< bool > & can_pause() const
virtual const core::Signal< video::Dimensions > & video_dimension_changed() const
virtual const core::Property< Volume > & volume() const
virtual const core::Property< bool > & can_play() const
std::shared_ptr< Sink > Ptr
To save us some typing.
Definition: sink.h:39
virtual const core::Property< bool > & can_go_next() const
virtual const core::Property< Track::MetaData > & meta_data_for_current_track() const
virtual core::Signal< PlaybackStatus > & playback_status_changed()
virtual const core::Signal< int > & buffering_changed() const
virtual const core::Signal< void > & about_to_finish() const
virtual const core::Signal< int64_t > & seeked_to() const
virtual const core::Property< PlaybackStatus > & playback_status() const
virtual const core::Property< AudioStreamRole > & audio_stream_role() const
virtual const core::Property< Lifetime > & lifetime() const
virtual PlayerKey key() const
virtual const core::Property< PlaybackRate > & minimum_playback_rate() const
virtual const core::Property< bool > & can_seek() const
virtual std::string uuid() const
virtual bool open_uri(const Track::UriType &uri)
std::string UriType
Definition: track.h:40
virtual void seek_to(const std::chrono::microseconds &offset)
virtual const core::Signal< Error > & error() const
virtual std::shared_ptr< TrackList > track_list()
virtual const core::Property< PlaybackRate > & playback_rate() const
virtual const core::Property< bool > & can_go_previous() const
virtual const core::Property< PlaybackRate > & maximum_playback_rate() const
virtual const core::Property< LoopStatus > & loop_status() const
PlayerStub(const std::shared_ptr< Service > &parent, const std::shared_ptr< core::dbus::Service > &service, const std::shared_ptr< core::dbus::Object > &object, const std::string &uuid=std::string{})