65 return impl_->player->VideoPlaybackQuality();
71 impl_->clients.AddClient(client);
75 impl_->clients.RemoveClient(client);
81 return impl_->player->GetBuffered();
89 return impl_->player->ReadyState();
97 return impl_->player->PlaybackState();
104 std::unique_lock<SharedMutex> lock(impl_->mutex);
106 return impl_->player->SetVideoFillMode(mode);
108 impl_->fill_mode = mode;
115 return impl_->player ? impl_->player->Width() : 0;
120 return impl_->player ? impl_->player->Height() : 0;
126 return impl_->player->Volume();
128 return impl_->volume.value_or(1);
132 std::unique_lock<SharedMutex> lock(impl_->mutex);
134 impl_->player->SetVolume(volume);
136 impl_->volume = volume;
142 return impl_->player->Muted();
144 return impl_->muted.value_or(
false);
148 std::unique_lock<SharedMutex> lock(impl_->mutex);
150 impl_->player->SetMuted(muted);
152 impl_->muted = muted;
157 std::unique_lock<SharedMutex> lock(impl_->mutex);
159 impl_->player->Play();
161 impl_->autoplay =
true;
165 std::unique_lock<SharedMutex> lock(impl_->mutex);
167 impl_->player->Pause();
169 impl_->autoplay =
false;
175 return impl_->player->CurrentTime();
177 return impl_->current_time.value_or(0);
181 std::unique_lock<SharedMutex> lock(impl_->mutex);
183 impl_->player->SetCurrentTime(time);
185 impl_->current_time = time;
191 return impl_->player->Duration();
193 return impl_->duration.value_or(HUGE_VAL);
197 std::unique_lock<SharedMutex> lock(impl_->mutex);
199 impl_->player->SetDuration(duration);
201 impl_->duration = duration;
207 return impl_->player->PlaybackRate();
209 return impl_->playback_rate.value_or(1);
213 std::unique_lock<SharedMutex> lock(impl_->mutex);
215 impl_->player->SetPlaybackRate(rate);
217 impl_->playback_rate = rate;
226 std::unique_lock<SharedMutex> lock(impl_->mutex);
236 std::unique_lock<SharedMutex> lock(impl_->mutex);
243 std::unique_lock<SharedMutex> lock(impl_->mutex);
246 return impl_->player->AddMseBuffer(mime, is_video, stream);
250 std::unique_lock<SharedMutex> lock(impl_->mutex);
252 impl_->player->MseEndOfStream();
258 impl_->player->LoadedMetaData(duration);
264 std::unique_lock<SharedMutex> lock(impl_->mutex);
266 if (!impl_->player->SetEmeImplementation(key_system, implementation))
269 impl_->key_system = key_system;
270 impl_->implementation = implementation;
275 std::unique_lock<SharedMutex> lock(impl_->mutex);
277 impl_->player->Detach();
282 return &impl_->clients;
285 void ProxyMediaPlayer::SetFields(
MediaPlayer* player) {
286 impl_->player = player;
287 if (impl_->implementation)
290 if (impl_->fill_mode.has_value())
292 if (impl_->volume.has_value())
293 player->
SetVolume(impl_->volume.value());
294 if (impl_->muted.has_value())
295 player->
SetMuted(impl_->muted.value());
296 if (impl_->current_time.has_value())
298 if (impl_->duration.has_value())
300 if (impl_->playback_rate.has_value())
302 if (impl_->autoplay.has_value()) {
303 if (impl_->autoplay.value())