HbbTV (org.hbbtv_HTML50110) requires that "When an application is presenting video... 72/316872/3 submit/tizen/20240913.160017
authorMark Toller <mark.toller@samsung.com>
Thu, 29 Aug 2024 20:53:57 +0000 (21:53 +0100)
committerBot Blink <blinkbot@samsung.com>
Fri, 13 Sep 2024 14:57:32 +0000 (14:57 +0000)
Change-Id: Ide1341033ff8ad3374b5699579f6b689691d0e81

third_party/blink/renderer/core/html/media/html_media_element.cc
third_party/blink/renderer/platform/media/web_media_player_impl.cc

index b5dbc017613e53857b6051352381218adcf010f6..f64396673925cabe4042065633729175c57c37e0 100644 (file)
@@ -2085,13 +2085,24 @@ void HTMLMediaElement::MediaLoadingFailed(WebMediaPlayer::NetworkState error,
       DVLOG(3) << "mediaLoadingFailed(" << *this
                << ") - scheduling next <source>";
       ScheduleNextSourceChild();
+      return;
     } else {
       DVLOG(3) << "mediaLoadingFailed(" << *this
                << ") - no more <source> elements, waiting";
       WaitForSourceChange();
+#if BUILDFLAG(IS_TIZEN_TV)
+      // HbbTV requires the the kNetworkStateDecodeError, and
+      // due to the kHaveMetadata delay, we can end up here..
+      if (!IsHbbTV())
+        return;
+
+      // For now, only set decode error for HbbTV.
+      if (error != WebMediaPlayer::kNetworkStateDecodeError)
+        return;
+#else
+      return;
+#endif
     }
-
-    return;
   }
 
   if (error == WebMediaPlayer::kNetworkStateNetworkError &&
index 88603277f5e6881e9c1535ccd93a6dec23707bf3..67e66a41f1fe475685a4541b821def78a8af2323 100644 (file)
@@ -2169,7 +2169,15 @@ void WebMediaPlayerImpl::OnError(media::PipelineStatus status) {
   if (ready_state_ == WebMediaPlayer::kReadyStateHaveNothing) {
     // Any error that occurs before reaching ReadyStateHaveMetadata should
     // be considered a format error.
-    SetNetworkState(WebMediaPlayer::kNetworkStateFormatError);
+    // The exception to this is HbbTV when it's a PIPELINE_ERROR_DECODE..
+#if BUILDFLAG(IS_TIZEN_TV)
+    if (content::IsHbbTV() && status == media::PIPELINE_ERROR_DECODE)
+      SetNetworkState(PipelineErrorToNetworkState(status.code()));
+    else
+#endif
+    {
+      SetNetworkState(WebMediaPlayer::kNetworkStateFormatError);
+    }
   } else {
     SetNetworkState(PipelineErrorToNetworkState(status.code()));
   }