17 #include <unordered_set> 32 std::vector<std::shared_ptr<VTTCue>>
cues;
38 TextTrack::Client::~Client() {}
42 const std::string&
language,
const std::string&
id)
43 : kind(kind), label(label), language(language), id(id), impl_(new
Impl) {}
47 std::unique_lock<Mutex> lock(impl_->mutex);
52 std::unique_lock<Mutex> lock(impl_->mutex);
58 std::unique_lock<Mutex> lock(impl_->mutex);
65 std::vector<std::shared_ptr<VTTCue>> ret;
66 for (
auto& cue :
cues) {
67 if (cue->start_time() <= time && cue->end_time() >= time)
68 ret.emplace_back(cue);
76 double next_time = INFINITY;
77 for (
auto& cue :
cues) {
78 if (cue->start_time() > time)
79 next_time = std::min(next_time, cue->start_time());
80 else if (cue->end_time() > time)
81 next_time = std::min(next_time, cue->end_time());
87 std::unique_lock<Mutex> lock(impl_->mutex);
88 impl_->cues.emplace_back(cue);
90 for (
Client* client : impl_->clients)
95 std::unique_lock<Mutex> lock(impl_->mutex);
98 for (
Client* client : impl_->clients)
104 std::unique_lock<Mutex> lock(impl_->mutex);
105 impl_->clients.insert(client);
109 std::unique_lock<Mutex> lock(impl_->mutex);
110 impl_->clients.erase(client);
void RemoveClient(Client *client)
TextTrack(TextTrackKind kind, const std::string &label, const std::string &language, const std::string &id)
double NextCueChangeTime(double time) const
const std::string language
std::vector< std::shared_ptr< VTTCue > > cues
void AddClient(Client *client)
virtual std::vector< std::shared_ptr< VTTCue > > active_cues(double time) const
std::unordered_set< Client * > clients
virtual TextTrackMode mode() const
void RemoveElement(List *list, Elem &&elem)
virtual void OnCueRemoved(std::shared_ptr< VTTCue > cue)=0
virtual void RemoveCue(std::shared_ptr< VTTCue > cue)
virtual std::vector< std::shared_ptr< VTTCue > > cues() const
virtual void SetMode(TextTrackMode mode)
virtual void AddCue(std::shared_ptr< VTTCue > cue)
virtual void OnCueAdded(std::shared_ptr< VTTCue > cue)=0