Index: media/cast/video_sender/external_video_encoder.cc |
diff --git a/media/cast/video_sender/external_video_encoder.cc b/media/cast/video_sender/external_video_encoder.cc |
index 4f97dace111f4103fdf5d8c51f6cef82498083c1..78bb30932d1d0521e2b2da0089366d4bce3a26ee 100644 |
--- a/media/cast/video_sender/external_video_encoder.cc |
+++ b/media/cast/video_sender/external_video_encoder.cc |
@@ -73,8 +73,10 @@ class LocalVideoEncodeAcceleratorClient |
video_encode_accelerator_ = |
gpu_factories_->CreateVideoEncodeAccelerator().Pass(); |
- if (!video_encode_accelerator_) |
+ if (!video_encode_accelerator_) { |
+ NotifyError(VideoEncodeAccelerator::kPlatformFailureError); |
return; |
+ } |
VideoCodecProfile output_profile = media::VIDEO_CODEC_PROFILE_UNKNOWN; |
switch (video_config.codec) { |
@@ -88,14 +90,20 @@ class LocalVideoEncodeAcceleratorClient |
codec_ = video_config.codec; |
max_frame_rate_ = video_config.max_frame_rate; |
- // Asynchronous initialization call; NotifyInitializeDone or NotifyError |
- // will be called once the HW is initialized. |
- video_encode_accelerator_->Initialize( |
- media::VideoFrame::I420, |
- gfx::Size(video_config.width, video_config.height), |
- output_profile, |
- video_config.start_bitrate, |
- this); |
+ if (!video_encode_accelerator_->Initialize( |
+ media::VideoFrame::I420, |
+ gfx::Size(video_config.width, video_config.height), |
+ output_profile, |
+ video_config.start_bitrate, |
+ this)) { |
+ NotifyError(VideoEncodeAccelerator::kInvalidArgumentError); |
+ return; |
+ } |
+ |
+ cast_environment_->PostTask( |
+ CastEnvironment::MAIN, |
+ FROM_HERE, |
+ base::Bind(&ExternalVideoEncoder::EncoderInitialized, weak_owner_)); |
} |
// Free the HW. |
@@ -176,16 +184,6 @@ class LocalVideoEncodeAcceleratorClient |
} |
protected: |
- virtual void NotifyInitializeDone() OVERRIDE { |
- DCHECK(encoder_task_runner_); |
- DCHECK(encoder_task_runner_->RunsTasksOnCurrentThread()); |
- |
- cast_environment_->PostTask( |
- CastEnvironment::MAIN, |
- FROM_HERE, |
- base::Bind(&ExternalVideoEncoder::EncoderInitialized, weak_owner_)); |
- } |
- |
virtual void NotifyError(VideoEncodeAccelerator::Error error) OVERRIDE { |
DCHECK(encoder_task_runner_); |
DCHECK(encoder_task_runner_->RunsTasksOnCurrentThread()); |