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
24namespace gstreamer
25{
27{
28public:
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
76private:
77 struct Private;
78 std::unique_ptr<Private> d;
79};
80}
81
82#endif // CORE_UBUNTU_MEDIA_GSTREAMER_ENGINE_H_
std::map< std::string, std::string > HeadersType
Definition: player.h:65
std::string UriType
Definition: track.h:40
const core::Property< bool > & is_audio_source() const
Definition: engine.cpp:521
const core::Signal< core::ubuntu::media::Player::Error > & error_signal() const
Definition: engine.cpp:615
const std::shared_ptr< MetaDataExtractor > & meta_data_extractor() const
Definition: engine.cpp:428
bool play(bool use_main_thread=false)
Definition: engine.cpp:457
const core::Signal< int > & on_buffering_changed_signal() const
Definition: engine.cpp:620
const core::Signal< void > & end_of_stream_signal() const
Definition: engine.cpp:600
const core::Property< State > & state() const
Definition: engine.cpp:433
const core::Property< core::ubuntu::media::Player::Orientation > & orientation() const
Definition: engine.cpp:569
const core::Property< core::ubuntu::media::Engine::Volume > & volume() const
Definition: engine.cpp:544
bool open_resource_for_uri(const core::ubuntu::media::Track::UriType &uri, const core::ubuntu::media::Player::HeadersType &headers)
const core::Property< core::ubuntu::media::Player::Lifetime > & lifetime() const
Definition: engine.cpp:559
const core::Property< uint64_t > & position() const
Definition: engine.cpp:532
bool open_resource_for_uri(const core::ubuntu::media::Track::UriType &uri, bool do_pipeline_reset)
const core::Property< uint64_t > & duration() const
Definition: engine.cpp:538
const core::Property< core::ubuntu::media::Player::AudioStreamRole > & audio_stream_role() const
Definition: engine.cpp:554
const core::Signal< uint64_t > & seeked_to_signal() const
Definition: engine.cpp:590
void create_video_sink(uint32_t texture_id)
Definition: engine.cpp:452
const core::Property< bool > & is_video_source() const
Definition: engine.cpp:510
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< core::ubuntu::media::Player::PlaybackStatus > & playback_status_changed_signal() const
Definition: engine.cpp:605
const core::Signal< void > & about_to_finish_signal() const
Definition: engine.cpp:585
const core::Signal< void > & client_disconnected_signal() const
Definition: engine.cpp:595
bool stop(bool use_main_thread=false)
Definition: engine.cpp:471
bool seek_to(const std::chrono::microseconds &ts)
Definition: engine.cpp:505
Engine(const core::ubuntu::media::Player::PlayerKey key)
Definition: engine.cpp:415
const core::Signal< core::ubuntu::media::video::Dimensions > & video_dimension_changed_signal() const
Definition: engine.cpp:610
Definition: bus.h:34