Fix SbPlayerWriteSampleTest NoInput/SingleInput/MultipleInputs tests

Change-Id: I82fe97dc89dee7209435b6f630bebf3415eea06e
diff --git a/src/third_party/starboard/rdk/shared/player/player_internal.cc b/src/third_party/starboard/rdk/shared/player/player_internal.cc
index b9dd6bf..b5a4d00 100644
--- a/src/third_party/starboard/rdk/shared/player/player_internal.cc
+++ b/src/third_party/starboard/rdk/shared/player/player_internal.cc
@@ -969,11 +969,11 @@
   void DecoderNeedsData(::starboard::ScopedLock&, MediaType media) const {
     int need_data = static_cast<int>(media);
     if (media != MediaType::kNone && (decoder_state_data_ & need_data) == need_data) {
-      GST_DEBUG("Already sent 'kSbPlayerDecoderStateNeedsData', ignoring new request");
+      GST_LOG("Already sent 'kSbPlayerDecoderStateNeedsData', ignoring new request");
       return;
     }
     if (media != MediaType::kNone && (eos_data_ & need_data) == need_data) {
-      GST_DEBUG("Stream(%d) already ended, ignoring needs data request", need_data);
+      GST_LOG("Stream(%d) already ended, ignoring needs data request", need_data);
       return;
     }
     decoder_state_data_ |= need_data;
@@ -1172,10 +1172,20 @@
       GError* err = nullptr;
       gchar* debug = nullptr;
       gst_message_parse_error(message, &err, &debug);
-      GST_ERROR("Error %d: %s (%s)", err->code, err->message, debug);
-      self->DispatchOnWorkerThread(new PlayerErrorTask(
+
+      bool is_eos = (self->eos_data_ == (int)self->GetBothMediaTypeTakingCodecsIntoAccount());
+      if (err->domain == GST_STREAM_ERROR && is_eos) {
+        GST_WARNING("Got stream error. But all streams are ended, so reporting EOS. Error code %d: %s (%s).",
+          err->code, err->message, debug);
+        self->DispatchOnWorkerThread(new PlayerStatusTask(
+          self->player_status_func_, self->player_, self->ticket_,
+          self->context_, kSbPlayerStateEndOfStream));
+      } else {
+        GST_ERROR("Error %d: %s (%s)", err->code, err->message, debug);
+        self->DispatchOnWorkerThread(new PlayerErrorTask(
           self->player_error_func_, self->player_, self->context_,
           kSbPlayerErrorDecode, err->message));
+      }
       g_free(debug);
       g_error_free(err);
       break;