Index: media/cast/sender/external_video_encoder.cc |
diff --git a/media/cast/sender/external_video_encoder.cc b/media/cast/sender/external_video_encoder.cc |
index 9e9bda1e4a3f49caa3a49f6f30d09a363dc8e2a2..5aca424d4715360dcc1e86dd449bc9be82addc85 100644 |
--- a/media/cast/sender/external_video_encoder.cc |
+++ b/media/cast/sender/external_video_encoder.cc |
@@ -114,7 +114,11 @@ class LocalVideoEncodeAcceleratorClient |
UMA_HISTOGRAM_BOOLEAN("Cast.Sender.VideoEncodeAcceleratorInitializeSuccess", |
result); |
if (!result) { |
- NotifyError(VideoEncodeAccelerator::kInvalidArgumentError); |
+ cast_environment_->PostTask( |
+ CastEnvironment::MAIN, |
+ FROM_HERE, |
+ base::Bind(&ExternalVideoEncoder::EncoderInitialized, weak_owner_, |
+ false)); |
return; |
} |
@@ -342,7 +346,8 @@ class LocalVideoEncodeAcceleratorClient |
cast_environment_->PostTask( |
CastEnvironment::MAIN, |
FROM_HERE, |
- base::Bind(&ExternalVideoEncoder::EncoderInitialized, weak_owner_)); |
+ base::Bind(&ExternalVideoEncoder::EncoderInitialized, weak_owner_, |
+ true)); |
} |
static void DestroyVideoEncodeAcceleratorOnEncoderThread( |
@@ -379,12 +384,14 @@ class LocalVideoEncodeAcceleratorClient |
ExternalVideoEncoder::ExternalVideoEncoder( |
scoped_refptr<CastEnvironment> cast_environment, |
const VideoSenderConfig& video_config, |
+ const CastInitializationCallback& initialization_cb, |
const CreateVideoEncodeAcceleratorCallback& create_vea_cb, |
const CreateVideoEncodeMemoryCallback& create_video_encode_mem_cb) |
: video_config_(video_config), |
cast_environment_(cast_environment), |
encoder_active_(false), |
key_frame_requested_(false), |
+ initialization_cb_(initialization_cb), |
weak_factory_(this) { |
DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN)); |
@@ -399,9 +406,14 @@ ExternalVideoEncoder::ExternalVideoEncoder( |
ExternalVideoEncoder::~ExternalVideoEncoder() { |
} |
-void ExternalVideoEncoder::EncoderInitialized() { |
+void ExternalVideoEncoder::EncoderInitialized(bool success) { |
DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN)); |
- encoder_active_ = true; |
+ encoder_active_ = success; |
+ DCHECK(!initialization_cb_.is_null()); |
+ initialization_cb_.Run( |
+ success ? |
+ STATUS_VIDEO_INITIALIZED : STATUS_HW_VIDEO_ENCODER_NOT_SUPPORTED); |
+ initialization_cb_.Reset(); |
} |
void ExternalVideoEncoder::EncoderError() { |