19 #ifndef CORE_UBUNTU_MEDIA_PLAYER_H_ 20 #define CORE_UBUNTU_MEDIA_PLAYER_H_ 27 #include <core/property.h> 57 class Player :
public std::enable_shared_from_this<Player>
145 service_missing_error
154 virtual std::string uuid()
const = 0;
155 virtual void reconnect() = 0;
156 virtual void abandon() = 0;
158 virtual std::shared_ptr<TrackList> track_list() = 0;
159 virtual PlayerKey key()
const = 0;
161 virtual video::Sink::Ptr create_gl_texture_video_sink(std::uint32_t texture_id) = 0;
164 virtual bool open_uri(
const Track::UriType& uri,
const HeadersType&) = 0;
165 virtual void next() = 0;
166 virtual void previous() = 0;
167 virtual void play() = 0;
168 virtual void pause() = 0;
169 virtual void stop() = 0;
170 virtual void seek_to(
const std::chrono::microseconds& offset) = 0;
172 virtual const core::Property<bool>& can_play()
const = 0;
173 virtual const core::Property<bool>& can_pause()
const = 0;
174 virtual const core::Property<bool>& can_seek()
const = 0;
175 virtual const core::Property<bool>& can_go_previous()
const = 0;
176 virtual const core::Property<bool>& can_go_next()
const = 0;
177 virtual const core::Property<bool>& is_video_source()
const = 0;
178 virtual const core::Property<bool>& is_audio_source()
const = 0;
179 virtual const core::Property<PlaybackStatus>& playback_status()
const = 0;
180 virtual const core::Property<AVBackend::Backend>& backend()
const = 0;
181 virtual const core::Property<LoopStatus>& loop_status()
const = 0;
182 virtual const core::Property<PlaybackRate>& playback_rate()
const = 0;
183 virtual const core::Property<bool>& shuffle()
const = 0;
184 virtual const core::Property<Track::MetaData>& meta_data_for_current_track()
const = 0;
185 virtual const core::Property<Volume>& volume()
const = 0;
186 virtual const core::Property<PlaybackRate>& minimum_playback_rate()
const = 0;
187 virtual const core::Property<PlaybackRate>& maximum_playback_rate()
const = 0;
188 virtual const core::Property<int64_t>& position()
const = 0;
189 virtual const core::Property<int64_t>& duration()
const = 0;
190 virtual const core::Property<AudioStreamRole>& audio_stream_role()
const = 0;
191 virtual const core::Property<Orientation>& orientation()
const = 0;
192 virtual const core::Property<Lifetime>& lifetime()
const = 0;
194 virtual core::Property<LoopStatus>& loop_status() = 0;
195 virtual core::Property<PlaybackRate>& playback_rate() = 0;
196 virtual core::Property<bool>& shuffle() = 0;
197 virtual core::Property<Volume>& volume() = 0;
198 virtual core::Property<AudioStreamRole>& audio_stream_role() = 0;
199 virtual core::Property<Lifetime>& lifetime() = 0;
201 virtual const core::Signal<int64_t>& seeked_to()
const = 0;
202 virtual const core::Signal<void>& about_to_finish()
const = 0;
203 virtual const core::Signal<void>& end_of_stream()
const = 0;
204 virtual core::Signal<PlaybackStatus>& playback_status_changed() = 0;
205 virtual const core::Signal<video::Dimensions>& video_dimension_changed()
const = 0;
207 virtual const core::Signal<Error>& error()
const = 0;
208 virtual const core::Signal<int>& buffering_changed()
const = 0;
220 case Player::PlaybackStatus::null:
221 return out <<
"PlaybackStatus::null";
222 case Player::PlaybackStatus::ready:
223 return out <<
"PlaybackStatus::ready";
224 case Player::PlaybackStatus::playing:
225 return out <<
"PlaybackStatus::playing";
226 case Player::PlaybackStatus::paused:
227 return out <<
"PlaybackStatus::paused";
228 case Player::PlaybackStatus::stopped:
229 return out <<
"PlaybackStatus::stopped";
239 case Player::LoopStatus::none:
240 return out <<
"LoopStatus::none";
241 case Player::LoopStatus::track:
242 return out <<
"LoopStatus::track";
243 case Player::LoopStatus::playlist:
244 return out <<
"LoopStatus::playlist";
254 case Player::Error::no_error:
255 return out <<
"Error::no_error";
256 case Player::Error::resource_error:
257 return out <<
"Error::resource_error";
258 case Player::Error::format_error:
259 return out <<
"Error::format_error";
260 case Player::Error::network_error:
261 return out <<
"Error::network_error";
262 case Player::Error::access_denied_error:
263 return out <<
"Error::access_denied_error";
264 case Player::Error::service_missing_error:
265 return out <<
"Error::service_missing_error";
267 return out <<
"Unsupported Player error: " << e;
277 #endif // CORE_UBUNTU_MEDIA_PLAYER_H_