Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(202)

Unified Diff: media/cast/sender/video_sender.cc

Issue 450693006: VideoToolbox encoder for cast senders. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Modernize to C++11 per the rules at http://chromium-cpp.appspot.com/ Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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(
« media/cast/sender/h264_vt_encoder.cc ('K') | « media/cast/sender/video_encoder_impl.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698