[MM] Consolidate error handling routines of MediaPlayerEfl.
authormsu.koo <msu.koo@samsung.com>
Mon, 11 Jan 2016 08:20:09 +0000 (17:20 +0900)
committerYoungsoo Choi <kenshin.choi@samsung.com>
Tue, 10 Jul 2018 07:55:23 +0000 (07:55 +0000)
This patch is to consolidate the error handling routines
for ME/MSE implementations.

Bug: http://10.113.136.204/jira/browse/TSAM-806
Bug: http://web.sec.samsung.net/bugzilla/show_bug.cgi?id=15564

Reviewed by: k2.nagaraju, msu.koo

Change-Id: If0b2fe034b5a0055233d938421ddb0626715aa9a
Signed-off-by: msu.koo <msu.koo@samsung.com>
tizen_src/chromium_impl/media/base/efl/media_player_efl.cc
tizen_src/chromium_impl/media/base/efl/media_player_efl.h
tizen_src/chromium_impl/media/base/efl/media_player_util_efl.cc
tizen_src/chromium_impl/media/base/efl/media_player_util_efl.h
tizen_src/chromium_impl/media/base/tizen/media_player_bridge_capi.cc
tizen_src/chromium_impl/media/base/tizen/media_player_bridge_capi.h
tizen_src/chromium_impl/media/base/tizen/media_source_player_capi.cc
tizen_src/chromium_impl/media/base/tizen/media_source_player_capi.h

index 217421a..2f0722e 100644 (file)
@@ -8,6 +8,7 @@
 
 #include "content/public/browser/browser_thread.h"
 #include "media/base/efl/media_player_manager_efl.h"
+#include "media/base/efl/media_player_util_efl.h"
 
 namespace media {
 
@@ -102,4 +103,27 @@ void MediaPlayerEfl::DeliverMediaPacket(ScopedMediaPacket packet) {
 }
 #endif
 
+void MediaPlayerEfl::OnMediaError(MediaError err) {
+  blink::WebMediaPlayer::NetworkState state =
+      blink::WebMediaPlayer::NetworkStateEmpty;
+
+  switch (err) {
+    case MEDIA_ERROR_FORMAT:
+      state = blink::WebMediaPlayer::NetworkStateFormatError;
+      break;
+    case MEDIA_ERROR_DECODE:
+      state = blink::WebMediaPlayer::NetworkStateDecodeError;
+      break;
+    case MEDIA_ERROR_NETWORK:
+      state = blink::WebMediaPlayer::NetworkStateNetworkError;
+      break;
+  }
+
+  manager()->OnNetworkStateChange(GetPlayerId(), state);
+
+#if defined(OS_TIZEN_MOBILE)
+  ReleaseDisplayLock();
+#endif
+}
+
 }  // namespace media
index 0c92926..7d9d76f 100644 (file)
@@ -21,14 +21,6 @@ namespace media {
 
 class MediaPlayerManager;
 
-// Error types for MediaErrorCB.
-enum MediaErrorType {
-  MEDIA_ERROR_FORMAT,
-  MEDIA_ERROR_DECODE,
-  MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK,
-  MEDIA_ERROR_INVALID_CODE,
-};
-
 // media type masks
 const int MEDIA_AUDIO_MASK = 0x02;
 const int MEDIA_VIDEO_MASK = 0x01;
@@ -88,6 +80,7 @@ class MEDIA_EXPORT MediaPlayerEfl {
 #if defined(TIZEN_TBM_SUPPORT)
   void DeliverMediaPacket(ScopedMediaPacket packet);
 #endif
+  virtual void OnMediaError(MediaError error_type);
 
   int width_;
   int height_;
index b49c2bb..625170c 100644 (file)
 
 namespace media {
 
+std::string GetErrorString(int player_error) {
+  switch (player_error) {
+    case PLAYER_ERROR_OUT_OF_MEMORY:
+      return "PLAYER_ERROR_OUT_OF_MEMORY";
+    case PLAYER_ERROR_INVALID_PARAMETER:
+      return "PLAYER_ERROR_INVALID_PARAMETER";
+    case PLAYER_ERROR_NO_SUCH_FILE:
+      return "PLAYER_ERROR_NO_SUCH_FILE";
+    case PLAYER_ERROR_INVALID_OPERATION:
+      return "PLAYER_ERROR_INVALID_OPERATION";
+    case PLAYER_ERROR_FILE_NO_SPACE_ON_DEVICE:
+      return "PLAYER_ERROR_FILE_NO_SPACE_ON_DEVICE";
+    case PLAYER_ERROR_FEATURE_NOT_SUPPORTED_ON_DEVICE:
+      return "PLAYER_ERROR_FEATURE_NOT_SUPPORTED_ON_DEVICE";
+    case PLAYER_ERROR_SEEK_FAILED:
+      return "PLAYER_ERROR_SEEK_FAILED";
+    case PLAYER_ERROR_INVALID_STATE:
+      return "PLAYER_ERROR_INVALID_STATE";
+    case PLAYER_ERROR_NOT_SUPPORTED_FILE:
+      return "PLAYER_ERROR_NOT_SUPPORTED_FILE";
+    case PLAYER_ERROR_INVALID_URI:
+      return "PLAYER_ERROR_INVALID_URI";
+    case PLAYER_ERROR_SOUND_POLICY:
+      return "PLAYER_ERROR_SOUND_POLICY";
+    case PLAYER_ERROR_CONNECTION_FAILED:
+      return "PLAYER_ERROR_CONNECTION_FAILED";
+    case PLAYER_ERROR_VIDEO_CAPTURE_FAILED:
+      return "PLAYER_ERROR_VIDEO_CAPTURE_FAILED";
+    case PLAYER_ERROR_DRM_EXPIRED:
+      return "PLAYER_ERROR_DRM_EXPIRED";
+    case PLAYER_ERROR_DRM_NO_LICENSE:
+      return "PLAYER_ERROR_DRM_NO_LICENSE";
+    case PLAYER_ERROR_DRM_FUTURE_USE:
+      return "PLAYER_ERROR_DRM_FUTURE_USE";
+    case PLAYER_ERROR_DRM_NOT_PERMITTED:
+      return "PLAYER_ERROR_DRM_NOT_PERMITTED";
+    case PLAYER_ERROR_RESOURCE_LIMIT:
+      return "PLAYER_ERROR_RESOURCE_LIMIT";
+    default:
+      break;
+  }
+
+  std::stringstream sstream;
+
+  sstream << "PLAYER_ERROR_UNKNOWN(-0x" << std::abs(player_error) << ") "
+      << get_error_message(player_error);
+
+  return sstream.str();
+}
+
+MediaError GetMediaError(int capi_player_error) {
+  MediaError retval = MEDIA_ERROR_DECODE;
+
+  if (capi_player_error == PLAYER_ERROR_NO_SUCH_FILE ||
+      capi_player_error == PLAYER_ERROR_INVALID_URI ||
+      capi_player_error == PLAYER_ERROR_NOT_SUPPORTED_FILE)
+    retval = MEDIA_ERROR_FORMAT;
+  else if (capi_player_error == PLAYER_ERROR_CONNECTION_FAILED)
+    retval = MEDIA_ERROR_NETWORK;
+
+  return retval;
+}
+
 void MediaPacketDeleter::operator()(media_packet_s* ptr) const {
   if (ptr != nullptr)
     media_packet_destroy(ptr);
index 93620b1..825fe10 100644 (file)
@@ -27,6 +27,16 @@ typedef enum {
   MEDIA_SEEK_PLAYER,  // Player is seeking
 } MediaSeekState;
 
+// Error types for MediaPlayerEfl
+enum MediaError {
+  MEDIA_ERROR_FORMAT,  // Unsupported Format
+  MEDIA_ERROR_DECODE,  // Decoder error.
+  MEDIA_ERROR_NETWORK, // Network error.
+};
+
+std::string GetErrorString(int capi_player_error);
+MediaError GetMediaError(int capi_player_error);
+
 double ConvertNanoSecondsToSeconds(int64 time);
 double ConvertMilliSecondsToSeconds(int time);
 double ConvertSecondsToMilliSeconds(double time);
index e0439cd..bfb6d17 100644 (file)
@@ -28,36 +28,6 @@ enum PlayerState {
   PLAYER_STATE_DELAYED_SEEK,
 };
 
-struct ErrorList {
-  player_error_e error_code;
-  std::string error_message;
-};
-
-const struct ErrorList errorlist[] = {
-    {PLAYER_ERROR_OUT_OF_MEMORY, "PLAYER_ERROR_OUT_OF_MEMORY"},
-    {PLAYER_ERROR_INVALID_PARAMETER, "PLAYER_ERROR_INVALID_PARAMETER"},
-    {PLAYER_ERROR_NO_SUCH_FILE, "PLAYER_ERROR_NO_SUCH_FILE"},
-    {PLAYER_ERROR_INVALID_OPERATION, "PLAYER_ERROR_INVALID_OPERATION"},
-    {PLAYER_ERROR_FILE_NO_SPACE_ON_DEVICE,
-        "PLAYER_ERROR_FILE_NO_SPACE_ON_DEVICE"},
-    {PLAYER_ERROR_FEATURE_NOT_SUPPORTED_ON_DEVICE,
-        "PLAYER_ERROR_FEATURE_NOT_SUPPORTED_ON_DEVICE"},
-    {PLAYER_ERROR_SEEK_FAILED, "PLAYER_ERROR_SEEK_FAILED"},
-    {PLAYER_ERROR_INVALID_STATE, "PLAYER_ERROR_INVALID_STATE"},
-    {PLAYER_ERROR_NOT_SUPPORTED_FILE, "PLAYER_ERROR_NOT_SUPPORTED_FILE"},
-    {PLAYER_ERROR_INVALID_URI, "PLAYER_ERROR_INVALID_URI"},
-    {PLAYER_ERROR_SOUND_POLICY, "PLAYER_ERROR_SOUND_POLICY"},
-    {PLAYER_ERROR_CONNECTION_FAILED, "PLAYER_ERROR_CONNECTION_FAILED"},
-    {PLAYER_ERROR_VIDEO_CAPTURE_FAILED, "PLAYER_ERROR_VIDEO_CAPTURE_FAILED"},
-    {PLAYER_ERROR_DRM_EXPIRED, "PLAYER_ERROR_DRM_EXPIRED"},
-    {PLAYER_ERROR_DRM_NO_LICENSE, "PLAYER_ERROR_DRM_NO_LICENSE"},
-    {PLAYER_ERROR_DRM_FUTURE_USE, "PLAYER_ERROR_DRM_FUTURE_USE"},
-    {PLAYER_ERROR_DRM_NOT_PERMITTED, "PLAYER_ERROR_DRM_NOT_PERMITTED"},
-    {PLAYER_ERROR_RESOURCE_LIMIT, "PLAYER_ERROR_RESOURCE_LIMIT"}};
-
-const int ERROR_MAX = sizeof(errorlist) / sizeof(errorlist[0]);
-
-
 // TODO(max): Remove these proxy free functions.
 
 // Called by player_prepare_async()
@@ -115,7 +85,7 @@ static void ErrorCb(int error_code, void* data) {
   media::MediaPlayerBridgeCapi* player =
       static_cast<media::MediaPlayerBridgeCapi*>(data);
 
-  player->OnHandleError(error_code, "ErrorCb");
+  player->OnHandlePlayerError(error_code, FROM_HERE);
 }
 
 // Called by player_set_interrupted_cb()
@@ -160,7 +130,7 @@ MediaPlayerBridgeCapi::MediaPlayerBridgeCapi(
       weak_factory_(this) {
   int ret = player_create(&player_);
   if (ret != PLAYER_ERROR_NONE) {
-    HandleError(ret, "player_create");
+    OnHandlePlayerError(ret, FROM_HERE);
     return;
   }
 }
@@ -191,7 +161,7 @@ void MediaPlayerBridgeCapi::Prepare(CompleteCB cb) {
   ret = player_set_media_packet_video_frame_decoded_cb(
             player_, MediaPacketDecodedCb, this);
   if (ret != PLAYER_ERROR_NONE) {
-    HandleError(ret, "player_set_media_packet_video_frame_decoded_cb");
+    OnHandlePlayerError(ret, FROM_HERE);
     RunCompleteCB(false, FROM_HERE);
     return;
   }
@@ -203,7 +173,7 @@ void MediaPlayerBridgeCapi::Prepare(CompleteCB cb) {
 
   ret = player_prepare_async(player_, PlayerPreparedCb, this);
   if (ret != PLAYER_ERROR_NONE) {
-    HandleError(ret, "player_prepare_async");
+    OnHandlePlayerError(ret, FROM_HERE);
     RunCompleteCB(false, FROM_HERE);
   } else {
     manager()->OnReadyStateChange(
@@ -213,6 +183,12 @@ void MediaPlayerBridgeCapi::Prepare(CompleteCB cb) {
   }
 }
 
+void MediaPlayerBridgeCapi::OnMediaError(MediaError error_type) {
+  StopBufferingUpdateTimer();
+  StopCurrentTimeUpdateTimer();
+  MediaPlayerEfl::OnMediaError(error_type);
+}
+
 void MediaPlayerBridgeCapi::Initialize() {
   Prepare(base::Bind(&MediaPlayerBridgeCapi::OnInitComplete,
                      weak_factory_.GetWeakPtr()));
@@ -422,7 +398,7 @@ void MediaPlayerBridgeCapi::UpdateMediaType() {
   int err = player_get_audio_stream_info(player_, &sample_rate, &channel,
                                          &audio_bit_rate);
   if (err != PLAYER_ERROR_NONE) {
-    HandleError(err, "player_get_audio_stream_info");
+    OnHandlePlayerError(err, FROM_HERE);
     RunCompleteCB(false, FROM_HERE);
     return;
   }
@@ -443,7 +419,7 @@ void MediaPlayerBridgeCapi::UpdateDuration() {
   int duration = 0;
   int ret = player_get_duration(player_, &duration);
   if (ret != PLAYER_ERROR_NONE) {
-    HandleError(ret, "player_get_duration");
+    OnHandlePlayerError(ret, FROM_HERE);
     RunCompleteCB(false, FROM_HERE);
     return;
   }
@@ -625,45 +601,6 @@ void MediaPlayerBridgeCapi::HandleBufferingStatus(int percent) {
       GetPlayerId(), blink::WebMediaPlayer::NetworkStateLoading);
 }
 
-// Helper method which prints errors occured while calling CAPI api's.
-//
-// TODO(Venu): CAPI error handling is common to ME / MSE / WebAudio.
-// Move to utility file.
-void MediaPlayerBridgeCapi::HandleError(int err, char const* from) {
-  int index = 0;
-  for (index = 0; index < ERROR_MAX; ++index) {
-    if (errorlist[index].error_code == err) {
-      LOG(ERROR) << "Stoping playback of media due to Error code : " << err
-                 << " Error message : " << errorlist[index].error_message
-                 << " from " << from;
-      break;
-    }
-  }
-
-  if (index == ERROR_MAX)
-    LOG(ERROR) << "Stoping playback of media due to Unknown error : "
-               << err << " from " << from;
-
-  StopBufferingUpdateTimer();
-  StopCurrentTimeUpdateTimer();
-
-  blink::WebMediaPlayer::NetworkState state =
-      blink::WebMediaPlayer::NetworkStateEmpty;
-  if (err == PLAYER_ERROR_NO_SUCH_FILE || err == PLAYER_ERROR_INVALID_URI ||
-      err == PLAYER_ERROR_NOT_SUPPORTED_FILE)
-    state = blink::WebMediaPlayer::NetworkStateFormatError;
-  else if (err == PLAYER_ERROR_CONNECTION_FAILED)
-    state = blink::WebMediaPlayer::NetworkStateNetworkError;
-  else
-    state = blink::WebMediaPlayer::NetworkStateDecodeError;
-
-  manager()->OnNetworkStateChange(GetPlayerId(), state);
-
-#if defined(OS_TIZEN_MOBILE)
-  ReleaseDisplayLock();
-#endif
-}
-
 void MediaPlayerBridgeCapi::RunCompleteCB(
     bool success,
     const tracked_objects::Location& from) {
@@ -733,10 +670,13 @@ void MediaPlayerBridgeCapi::OnHandleBufferingStatus(int percent) {
                             weak_factory_.GetWeakPtr(), percent));
 }
 
-void MediaPlayerBridgeCapi::OnHandleError(int error_code, const char *msg) {
-  task_runner_->PostTask(
-      FROM_HERE, base::Bind(&MediaPlayerBridgeCapi::HandleError,
-                            weak_factory_.GetWeakPtr(), error_code, msg));
+void MediaPlayerBridgeCapi::OnHandlePlayerError(
+    int player_error_code, const tracked_objects::Location& location) {
+
+  LOG(ERROR) << GetErrorString(player_error_code) << " from "
+             << location.ToString();
+
+  OnMediaError(GetMediaError(player_error_code));
 }
 
 void MediaPlayerBridgeCapi::OnResumeComplete(bool success) {
index fe81e4d..091bd6e 100644 (file)
@@ -45,7 +45,8 @@ class MEDIA_EXPORT MediaPlayerBridgeCapi
   void OnSeekCompleteUpdate();
   void OnPlayerPrepared();
   void OnHandleBufferingStatus(int percent);
-  void OnHandleError(int ret, char const* from);
+  void OnHandlePlayerError(int player_error_code,
+                           const tracked_objects::Location& loc);
   void OnResumeComplete(bool success);
   void OnInitComplete(bool success);
   void OnMediaPacketUpdated(media_packet_h packet);
@@ -53,6 +54,7 @@ class MEDIA_EXPORT MediaPlayerBridgeCapi
  protected:
   void Release() override;
   void Prepare(CompleteCB cb);
+  void OnMediaError(MediaError error_type) override;
 
  private:
   // |duration_update_timer_| related
@@ -74,7 +76,6 @@ class MEDIA_EXPORT MediaPlayerBridgeCapi
   void SeekCompleteUpdate();
   void PlayerPrepared();
   void HandleBufferingStatus(int percent);
-  void HandleError(int ret, char const* from);
   void RunCompleteCB(bool success,
                      const tracked_objects::Location& from);
   player_state_e GetPlayerState();
index 2ef2ac0..44173cd 100644 (file)
@@ -24,38 +24,6 @@ const unsigned int min_threshold = 30;
 }  // namespace
 
 namespace media {
-
-struct ErrorList {
-  player_error_e error_code;
-  std::string error_message;
-};
-
-const struct ErrorList errorlist[] = {
-    {PLAYER_ERROR_OUT_OF_MEMORY, "PLAYER_ERROR_OUT_OF_MEMORY"},
-    {PLAYER_ERROR_INVALID_PARAMETER, "PLAYER_ERROR_INVALID_PARAMETER"},
-    {PLAYER_ERROR_NO_SUCH_FILE, "PLAYER_ERROR_NO_SUCH_FILE"},
-    {PLAYER_ERROR_INVALID_OPERATION, "PLAYER_ERROR_INVALID_OPERATION"},
-    {PLAYER_ERROR_FILE_NO_SPACE_ON_DEVICE,
-         "PLAYER_ERROR_FILE_NO_SPACE_ON_DEVICE"},
-#if defined(OS_TIZEN_MOBILE)
-    {PLAYER_ERROR_FEATURE_NOT_SUPPORTED_ON_DEVICE,
-         "PLAYER_ERROR_FEATURE_NOT_SUPPORTED_ON_DEVICE"},
-#endif
-    {PLAYER_ERROR_SEEK_FAILED, "PLAYER_ERROR_SEEK_FAILED"},
-    {PLAYER_ERROR_INVALID_STATE, "PLAYER_ERROR_INVALID_STATE"},
-    {PLAYER_ERROR_NOT_SUPPORTED_FILE, "PLAYER_ERROR_NOT_SUPPORTED_FILE"},
-    {PLAYER_ERROR_INVALID_URI, "PLAYER_ERROR_INVALID_URI"},
-    {PLAYER_ERROR_SOUND_POLICY, "PLAYER_ERROR_SOUND_POLICY"},
-    {PLAYER_ERROR_CONNECTION_FAILED, "PLAYER_ERROR_CONNECTION_FAILED"},
-    {PLAYER_ERROR_VIDEO_CAPTURE_FAILED, "PLAYER_ERROR_VIDEO_CAPTURE_FAILED"},
-    {PLAYER_ERROR_DRM_EXPIRED, "PLAYER_ERROR_DRM_EXPIRED"},
-    {PLAYER_ERROR_DRM_NO_LICENSE, "PLAYER_ERROR_DRM_NO_LICENSE"},
-    {PLAYER_ERROR_DRM_FUTURE_USE, "PLAYER_ERROR_DRM_FUTURE_USE"},
-    {PLAYER_ERROR_DRM_NOT_PERMITTED, "PLAYER_ERROR_DRM_NOT_PERMITTED"},
-    {PLAYER_ERROR_RESOURCE_LIMIT, "PLAYER_ERROR_RESOURCE_LIMIT"}};
-
-const int ERROR_MAX = sizeof(errorlist) / sizeof(errorlist[0]);
-
 void OnCapiPlayerPreparedCB(void* user_data) {
   MediaSourcePlayerCapi* player =
       static_cast<MediaSourcePlayerCapi*>(user_data);
@@ -124,7 +92,7 @@ void OnPlayerErrorCB(int error_code, void* user_data) {
   if (!player)
     return;
 
-  player->OnPlayerError(error_code, "OnPlayerErrorCB");
+  player->OnHandlePlayerError(error_code, FROM_HERE);
 }
 
 void MediaSourcePlayerCapi::PrepareComplete() {
@@ -176,36 +144,36 @@ MediaSourcePlayerCapi::MediaSourcePlayerCapi(
   /*Init Player*/
   int ret = player_create(&player_);
   if (ret != PLAYER_ERROR_NONE) {
-    HandlePlayerError(ret, "player_create");
+    OnHandlePlayerError(ret, FROM_HERE);
     return;
   }
 
   ret = player_set_buffering_cb(player_, OnHandleBufferingMessageCB, this);
   if (ret != PLAYER_ERROR_NONE) {
-    HandlePlayerError(ret, "player_set_buffering_cb");
+    OnHandlePlayerError(ret, FROM_HERE);
     return;
   }
 
   ret = player_set_sound_type(player_, SOUND_TYPE_MEDIA);
   if (ret != PLAYER_ERROR_NONE) {
-    HandlePlayerError(ret, "player_set_sound_type");
+    OnHandlePlayerError(ret, FROM_HERE);
     return;
   }
   ret = player_set_error_cb(player_, OnPlayerErrorCB, this);
   if (ret != PLAYER_ERROR_NONE) {
-    HandlePlayerError(ret, "player_set_error_cb");
+    OnHandlePlayerError(ret, FROM_HERE);
     return;
   }
   ret = player_set_completed_cb(player_, OnPlaybackCompleteCB, this);
   if (ret != PLAYER_ERROR_NONE) {
-    HandlePlayerError(ret, "player_set_completed_cb");
+    OnHandlePlayerError(ret, FROM_HERE);
     return;
   }
 
   ret = player_set_media_packet_video_frame_decoded_cb(
             player_, OnMediaPacketDecoded, this);
   if (ret != PLAYER_ERROR_NONE) {
-    HandlePlayerError(ret, "player_set_media_packet_video_frame_decoded_cb");
+    OnHandlePlayerError(ret, FROM_HERE);
     return;
   }
 
@@ -213,7 +181,7 @@ MediaSourcePlayerCapi::MediaSourcePlayerCapi(
 
   ret = player_set_uri(player_, "es_buff://push_mode");
   if (ret != PLAYER_ERROR_NONE) {
-    HandlePlayerError(ret, "player_set_uri");
+    OnHandlePlayerError(ret, FROM_HERE);
     return;
   }
 }
@@ -274,7 +242,7 @@ void MediaSourcePlayerCapi::SetRate(double rate) {
   // FIXME: |player_set_playback_rate| is always failing.
   int err = player_set_playback_rate(player_, static_cast<float>(rate));
   if (err != PLAYER_ERROR_NONE) {
-    HandlePlayerError(err, "player_set_playback_rate()");
+    OnHandlePlayerError(err, FROM_HERE);
     return;
   } else {
     // If previous rate was zero and requested rate is non-zero, change the
@@ -320,7 +288,7 @@ void MediaSourcePlayerCapi::SeekInternal() {
   MediaSeekState state = MEDIA_SEEK_PLAYER;
   if (ret != PLAYER_ERROR_NONE) {
     LOG(ERROR) << "Seek to " << " failed";
-    HandleError(blink::WebMediaPlayer::NetworkStateDecodeError);
+    OnHandlePlayerError(ret, FROM_HERE);
     state = MEDIA_SEEK_NONE;
   }
   UpdateSeekState(state);
@@ -405,7 +373,7 @@ void MediaSourcePlayerCapi::Play() {
 #endif
   int ret = player_start(player_);
   if (ret != PLAYER_ERROR_NONE) {
-    HandlePlayerError(ret, "player_start()");
+    OnHandlePlayerError(ret, FROM_HERE);
     return;
   }
   playing_ = true;
@@ -423,7 +391,7 @@ void MediaSourcePlayerCapi::Pause(bool is_media_related_action) {
 
   int ret = player_pause(player_);
   if (ret != PLAYER_ERROR_NONE) {
-    HandlePlayerError(ret, "player_pause()");
+    OnHandlePlayerError(ret, FROM_HERE);
     return;
   }
   StopCurrentTimeUpdateTimer();
@@ -488,7 +456,7 @@ void MediaSourcePlayerCapi::OnDemuxerConfigsAvailable(
       (configs.audio_codec != kCodecAAC &&
       configs.audio_codec != kCodecMP3))) {
     LOG(ERROR) << "Audio and Video codecs not supported for MediaSource";
-    HandleError(blink::WebMediaPlayer::NetworkStateFormatError);
+    OnHandlePlayerError(PLAYER_ERROR_NOT_SUPPORTED_FILE, FROM_HERE);
     return;
   }
   int samplerate = configs.audio_sampling_rate;
@@ -602,6 +570,12 @@ void MediaSourcePlayerCapi::OnDemuxerConfigsAvailable(
       GetPlayerId(), blink::WebMediaPlayer::ReadyStateHaveEnoughData);
 }
 
+// Helper method that prints error occured with CAPI.
+void MediaSourcePlayerCapi::OnMediaError(MediaError error_type) {
+  StopCurrentTimeUpdateTimer();
+  MediaPlayerEfl::OnMediaError(error_type);
+}
+
 void MediaSourcePlayerCapi::ReadDemuxedData(
     media::DemuxerStream::Type type) {
   demuxer_->RequestDemuxerData(type);
@@ -932,35 +906,6 @@ void MediaSourcePlayerCapi::SaveDecoderBuffer(
     video_buffer_queue_.push_back(buffer);
 }
 
-// Helper method that prints error occured with CAPI.
-void MediaSourcePlayerCapi::HandlePlayerError(int err, char const* from) {
-  int index = 0;
-  for (; index < ERROR_MAX; index++) {
-    if (errorlist[index].error_code == err) {
-      LOG(ERROR) << "Stoping playback of media due to Error code : " << err
-                 << " Error message : " << errorlist[index].error_message
-                 << " from " << from;
-      break;
-    }
-  }
-
-  if (index == ERROR_MAX)
-    LOG(ERROR) << "Stoping playback of media due to Unknown error : "
-               << err << " from " << from;
-  StopCurrentTimeUpdateTimer();
-  HandleError(blink::WebMediaPlayer::NetworkStateDecodeError);
-}
-
-// TODO(Venu): Called directly at few places.
-void MediaSourcePlayerCapi::HandleError(
-    blink::WebMediaPlayer::NetworkState state) {
-  error_occured_ = true;
-  manager()->OnNetworkStateChange(GetPlayerId(), state);
-#if defined(OS_TIZEN_MOBILE)
-  ReleaseDisplayLock();
-#endif
-}
-
 void MediaSourcePlayerCapi::OnPrepareComplete() {
   task_runner_->PostTask(
       FROM_HERE, base::Bind(&MediaSourcePlayerCapi::PrepareComplete,
@@ -1002,10 +947,13 @@ void MediaSourcePlayerCapi::OnUpdateDataStatus(
                             underflow_status));
 }
 
-void MediaSourcePlayerCapi::OnPlayerError(int error_code, const char* msg) {
-  task_runner_->PostTask(
-      FROM_HERE, base::Bind(&MediaSourcePlayerCapi::HandlePlayerError,
-                            weak_factory_.GetWeakPtr(), error_code, msg));
+void MediaSourcePlayerCapi::OnHandlePlayerError(
+    int player_error_code, const tracked_objects::Location& location) {
+
+  LOG(ERROR) << GetErrorString(player_error_code) << " from "
+             << location.ToString();
+
+  OnMediaError(GetMediaError(player_error_code));
 }
 
 }  // namespace media
index 19a5892..bb81ffc 100644 (file)
@@ -60,12 +60,14 @@ class MEDIA_EXPORT MediaSourcePlayerCapi
   void OnHandleBufferingMessage(int percent);
   void OnPlaybackComplete();
   void OnPrepareComplete();
-  void OnPlayerError(int error_code, const char* msg);
+  void OnHandlePlayerError(int player_error_code,
+                           const tracked_objects::Location& loc);
 
   void OnMediaPacketUpdated(media_packet_h packet);
 
  protected:
   void Release() override;
+  void OnMediaError(MediaError error_type) override;
 
  private:
   player_state_e GetPlayerState();
@@ -97,10 +99,6 @@ class MEDIA_EXPORT MediaSourcePlayerCapi
       base::SharedMemoryHandle foreign_memory_handle,
       const media::DemuxedBufferMetaData& meta_data);
 
-  // Error handling API
-  void HandlePlayerError(int err, char const* from);
-  void HandleError(blink::WebMediaPlayer::NetworkState state);
-
   scoped_ptr<DemuxerEfl> demuxer_;
   const scoped_refptr<base::SingleThreadTaskRunner> task_runner_;