Music Hub  ..
A session-wide music playback service
engine.h
Go to the documentation of this file.
1 /*
2  * Copyright © 2013-2014 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 #ifndef CORE_UBUNTU_MEDIA_GSTREAMER_ENGINE_H_
20 #define CORE_UBUNTU_MEDIA_GSTREAMER_ENGINE_H_
21 
22 #include "../engine.h"
23 
24 namespace gstreamer
25 {
27 {
28 public:
30  ~Engine();
31 
32  const std::shared_ptr<MetaDataExtractor>& meta_data_extractor() const;
33 
34  const core::Property<State>& state() const;
35 
36  bool open_resource_for_uri(const core::ubuntu::media::Track::UriType& uri, bool do_pipeline_reset);
38  void create_video_sink(uint32_t texture_id);
39 
40  // use_main_thread will set the pipeline's new state in the main thread context
41  bool play(bool use_main_thread = false);
42  bool stop(bool use_main_thread = false);
43  bool pause();
44  bool seek_to(const std::chrono::microseconds& ts);
45 
46  const core::Property<bool>& is_video_source() const;
47  const core::Property<bool>& is_audio_source() const;
48 
49  const core::Property<uint64_t>& position() const;
50  const core::Property<uint64_t>& duration() const;
51 
52  const core::Property<core::ubuntu::media::Engine::Volume>& volume() const;
53  core::Property<core::ubuntu::media::Engine::Volume>& volume();
54 
55  const core::Property<core::ubuntu::media::Player::AudioStreamRole>& audio_stream_role() const;
56  core::Property<core::ubuntu::media::Player::AudioStreamRole>& audio_stream_role();
57 
58  const core::Property<core::ubuntu::media::Player::Orientation>& orientation() const;
59 
60  const core::Property<core::ubuntu::media::Player::Lifetime>& lifetime() const;
61  core::Property<core::ubuntu::media::Player::Lifetime>& lifetime();
62 
63  const core::Property<std::tuple<core::ubuntu::media::Track::UriType, core::ubuntu::media::Track::MetaData>>& track_meta_data() const;
64 
65  const core::Signal<void>& about_to_finish_signal() const;
66  const core::Signal<uint64_t>& seeked_to_signal() const;
67  const core::Signal<void>& client_disconnected_signal() const;
68  const core::Signal<void>& end_of_stream_signal() const;
69  const core::Signal<core::ubuntu::media::Player::PlaybackStatus>& playback_status_changed_signal() const;
70  const core::Signal<core::ubuntu::media::video::Dimensions>& video_dimension_changed_signal() const;
71  const core::Signal<core::ubuntu::media::Player::Error>& error_signal() const;
72  const core::Signal<int>& on_buffering_changed_signal() const;
73 
74  void reset();
75 
76 private:
77  struct Private;
78  std::unique_ptr<Private> d;
79 };
80 }
81 
82 #endif // CORE_UBUNTU_MEDIA_GSTREAMER_ENGINE_H_
const core::Signal< void > & about_to_finish_signal() const
Definition: engine.cpp:585
const core::Signal< void > & end_of_stream_signal() const
Definition: engine.cpp:600
const core::Property< core::ubuntu::media::Player::Orientation > & orientation() const
Definition: engine.cpp:569
Definition: bus.h:33
const core::Property< uint64_t > & position() const
Definition: engine.cpp:532
bool stop(bool use_main_thread=false)
Definition: engine.cpp:471
const core::Signal< core::ubuntu::media::Player::PlaybackStatus > & playback_status_changed_signal() const
Definition: engine.cpp:605
const core::Property< uint64_t > & duration() const
Definition: engine.cpp:538
const core::Signal< void > & client_disconnected_signal() const
Definition: engine.cpp:595
const core::Signal< uint64_t > & seeked_to_signal() const
Definition: engine.cpp:590
const core::Property< State > & state() const
Definition: engine.cpp:433
std::map< std::string, std::string > HeadersType
Definition: player.h:65
bool seek_to(const std::chrono::microseconds &ts)
Definition: engine.cpp:505
const core::Property< core::ubuntu::media::Engine::Volume > & volume() const
Definition: engine.cpp:544
const core::Signal< core::ubuntu::media::video::Dimensions > & video_dimension_changed_signal() const
Definition: engine.cpp:610
bool open_resource_for_uri(const core::ubuntu::media::Track::UriType &uri, bool do_pipeline_reset)
const core::Property< bool > & is_audio_source() const
Definition: engine.cpp:521
void create_video_sink(uint32_t texture_id)
Definition: engine.cpp:452
const core::Property< core::ubuntu::media::Player::Lifetime > & lifetime() const
Definition: engine.cpp:559
bool play(bool use_main_thread=false)
Definition: engine.cpp:457
const core::Property< std::tuple< core::ubuntu::media::Track::UriType, core::ubuntu::media::Track::MetaData > > & track_meta_data() const
Definition: engine.cpp:580
const core::Signal< int > & on_buffering_changed_signal() const
Definition: engine.cpp:620
const std::shared_ptr< MetaDataExtractor > & meta_data_extractor() const
Definition: engine.cpp:428
const core::Property< bool > & is_video_source() const
Definition: engine.cpp:510
std::string UriType
Definition: track.h:40
const core::Property< core::ubuntu::media::Player::AudioStreamRole > & audio_stream_role() const
Definition: engine.cpp:554
const core::Signal< core::ubuntu::media::Player::Error > & error_signal() const
Definition: engine.cpp:615
Engine(const core::ubuntu::media::Player::PlayerKey key)
Definition: engine.cpp:415