Index: chrome/renderer/media/cast_session_delegate.cc |
diff --git a/chrome/renderer/media/cast_session_delegate.cc b/chrome/renderer/media/cast_session_delegate.cc |
index 3d16c5b8d40e16fd66b3ca26f97bdc94db8fa958..3389446f414aed1e0ac423103353da165ff7a496 100644 |
--- a/chrome/renderer/media/cast_session_delegate.cc |
+++ b/chrome/renderer/media/cast_session_delegate.cc |
@@ -55,7 +55,7 @@ void CastSessionDelegate::StartAudio( |
cast_sender_->InitializeAudio( |
config, |
base::Bind(&CastSessionDelegate::InitializationResultCB, |
- weak_factory_.GetWeakPtr())); |
+ weak_factory_.GetWeakPtr(), error_callback)); |
} |
void CastSessionDelegate::StartVideo( |
@@ -77,7 +77,7 @@ void CastSessionDelegate::StartVideo( |
cast_sender_->InitializeVideo( |
config, |
base::Bind(&CastSessionDelegate::InitializationResultCB, |
- weak_factory_.GetWeakPtr()), |
+ weak_factory_.GetWeakPtr(), error_callback), |
create_vea_cb, |
create_video_encode_mem_cb); |
} |
@@ -203,16 +203,44 @@ void CastSessionDelegate::StatusNotificationCB( |
} |
void CastSessionDelegate::InitializationResultCB( |
+ const ErrorCallback& error_callback, |
media::cast::CastInitializationStatus result) const { |
DCHECK(cast_sender_); |
- // TODO(pwestin): handle the error codes. |
- if (result == media::cast::STATUS_AUDIO_INITIALIZED) { |
- audio_frame_input_available_callback_.Run( |
- cast_sender_->audio_frame_input()); |
- } else if (result == media::cast::STATUS_VIDEO_INITIALIZED) { |
- video_frame_input_available_callback_.Run( |
- cast_sender_->video_frame_input()); |
+ switch (result) { |
+ case media::cast::STATUS_AUDIO_INITIALIZED: |
+ audio_frame_input_available_callback_.Run( |
+ cast_sender_->audio_frame_input()); |
+ break; |
+ case media::cast::STATUS_VIDEO_INITIALIZED: |
+ video_frame_input_available_callback_.Run( |
+ cast_sender_->video_frame_input()); |
+ break; |
+ case media::cast::STATUS_INVALID_CAST_ENVIRONMENT: |
+ error_callback.Run("Invalid cast environment."); |
+ break; |
+ case media::cast::STATUS_INVALID_CRYPTO_CONFIGURATION: |
+ error_callback.Run("Invalid encryption keys."); |
+ break; |
+ case media::cast::STATUS_UNSUPPORTED_AUDIO_CODEC: |
+ error_callback.Run("Audio codec not supported."); |
+ break; |
+ case media::cast::STATUS_UNSUPPORTED_VIDEO_CODEC: |
+ error_callback.Run("Video codec not supported."); |
+ break; |
+ case media::cast::STATUS_INVALID_AUDIO_CONFIGURATION: |
+ error_callback.Run("Invalid audio configuration."); |
+ break; |
+ case media::cast::STATUS_INVALID_VIDEO_CONFIGURATION: |
+ error_callback.Run("Invalid video configuration."); |
+ break; |
+ case media::cast::STATUS_HW_VIDEO_ENCODER_NOT_SUPPORTED: |
+ error_callback.Run("Hardware video encoder not supported."); |
+ break; |
+ case media::cast::STATUS_AUDIO_UNINITIALIZED: |
+ case media::cast::STATUS_VIDEO_UNINITIALIZED: |
+ NOTREACHED() << "Not an error."; |
+ break; |
} |
} |