28 std::atomic<const MediaPlayer*> player_{
nullptr};
33 #define TO_STRING(E) \ 34 case VideoReadyState::E: \ 51 #define TO_STRING(E) \ 52 case VideoPlaybackState::E: \ 74 MediaPlayer::Client::~Client() {}
80 std::shared_ptr<MediaTrack> track) {}
85 std::shared_ptr<MediaTrack> track) {}
121 template <
typename Func,
typename... Args>
124 for (
auto* client : clients)
125 (client->*func)(std::forward<Args>(args)...);
136 std::unique_lock<SharedMutex> lock(impl_->mutex);
138 impl_->clients.emplace_back(client);
142 std::unique_lock<SharedMutex> lock(impl_->mutex);
147 std::shared_ptr<MediaTrack> track) {
152 std::shared_ptr<MediaTrack> track) {
157 std::shared_ptr<MediaTrack> track) {
162 std::shared_ptr<MediaTrack> track) {
171 std::shared_ptr<TextTrack> track) {
227 MediaPlayer::~MediaPlayer() {}
231 player_.store(player, std::memory_order_relaxed);
235 return player_.load(std::memory_order_relaxed);
bool contains(const std::vector< T > &vec, U &&elem)
void RemoveElement(List *list, Elem &&elem)