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