| Index: media/cast/sender/video_sender.cc
|
| diff --git a/media/cast/sender/video_sender.cc b/media/cast/sender/video_sender.cc
|
| index 784e8c6a34f2a2d2bfb94c4c0efa18e9bbaaa844..2a801fc06db66e03c21051320d4bf442ef4d9284 100644
|
| --- a/media/cast/sender/video_sender.cc
|
| +++ b/media/cast/sender/video_sender.cc
|
| @@ -16,6 +16,10 @@
|
| #include "media/cast/sender/external_video_encoder.h"
|
| #include "media/cast/sender/video_encoder_impl.h"
|
|
|
| +#if defined(OS_MACOSX)
|
| +#include "media/cast/sender/h264_vt_encoder.h"
|
| +#endif
|
| +
|
| namespace media {
|
| namespace cast {
|
|
|
| @@ -69,6 +73,20 @@ VideoSender::VideoSender(
|
| << " and max_frame_rate=" << video_config.max_frame_rate;
|
| DCHECK_GT(max_unacked_frames_, 0);
|
|
|
| +#if defined(OS_MACOSX)
|
| + // On Apple platforms, use the hardware H.264 encoder if possible. It is the
|
| + // only reasonable option for iOS.
|
| + if (!video_config.use_external_encoder &&
|
| + video_config.codec == CODEC_VIDEO_H264) {
|
| + video_encoder_.reset(new H264VideoToolboxEncoder(
|
| + cast_environment,
|
| + video_config,
|
| + base::Bind(&VideoSender::OnEncoderInitialized,
|
| + weak_factory_.GetWeakPtr(),
|
| + initialization_cb)));
|
| + }
|
| +#endif // defined(OS_MACOSX)
|
| +#if !defined(OS_IOS)
|
| if (video_config.use_external_encoder) {
|
| video_encoder_.reset(new ExternalVideoEncoder(
|
| cast_environment,
|
| @@ -77,7 +95,7 @@ VideoSender::VideoSender(
|
| weak_factory_.GetWeakPtr(), initialization_cb),
|
| create_vea_cb,
|
| create_video_encode_mem_cb));
|
| - } else {
|
| + } else if (!video_encoder_) {
|
| // Software encoder is initialized immediately.
|
| congestion_control_.reset(
|
| NewAdaptiveCongestionControl(cast_environment->Clock(),
|
| @@ -88,6 +106,7 @@ VideoSender::VideoSender(
|
| cast_environment, video_config, max_unacked_frames_));
|
| cast_initialization_status_ = STATUS_VIDEO_INITIALIZED;
|
| }
|
| +#endif // !defined(OS_IOS)
|
|
|
| if (cast_initialization_status_ == STATUS_VIDEO_INITIALIZED) {
|
| cast_environment->PostTask(
|
|
|