return WebMediaPlayer::LoadTiming::kImmediate;
}
-void WebMediaPlayerMS::OnWebLayerUpdated() {}
+void WebMediaPlayerMS::OnWebLayerUpdated() {
+#if defined(TIZEN_TV_UPSTREAM_MULTIMEDIA)
+ // As surface layer was updated (e.g video frame resolution has changed),
+ // we need to update it together with setting new surface id. It's important,
+ // as they are strictly connected, so sending old bounds with new surface id
+ // results in wrong geometry of video.
+ TriggerResize();
+#endif // defined(TIZEN_TV_UPSTREAM_MULTIMEDIA)
+}
void WebMediaPlayerMS::RegisterContentsLayer(cc::Layer* layer) {
DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
player_, *new_frame_opacity));
}
if (has_frame_size_changed) {
+#if defined(TIZEN_TV_UPSTREAM_MULTIMEDIA)
+ // Resize should be done together with surface layer id update to ensure
+ // video natural size matches with the one in compositor frame generated
+ // from |VideoFrameSubmitter|.
+ if (!submitter_) {
+ PostCrossThreadTask(
+ *main_task_runner_, FROM_HERE,
+ CrossThreadBindOnce(&WebMediaPlayerMS::TriggerResize, player_));
+ }
+#else
PostCrossThreadTask(
*main_task_runner_, FROM_HERE,
CrossThreadBindOnce(&WebMediaPlayerMS::TriggerResize, player_));
+#endif // defined(TIZEN_TV_UPSTREAM_MULTIMEDIA)
PostCrossThreadTask(
*main_task_runner_, FROM_HERE,
CrossThreadBindOnce(&WebMediaPlayerMS::ResetCanvasCache, player_));