Chromium Code Reviews| Index: webrtc/sdk/objc/Framework/Classes/videotoolboxvideocodecfactory.cc |
| diff --git a/webrtc/sdk/objc/Framework/Classes/videotoolboxvideocodecfactory.cc b/webrtc/sdk/objc/Framework/Classes/videotoolboxvideocodecfactory.cc |
| index b7a5141dfd29a9432f9ee8f89a5cd3636f4ec256..8bfcf705fb75fbef8683708e0cbb89b8e2764b3f 100644 |
| --- a/webrtc/sdk/objc/Framework/Classes/videotoolboxvideocodecfactory.cc |
| +++ b/webrtc/sdk/objc/Framework/Classes/videotoolboxvideocodecfactory.cc |
| @@ -10,6 +10,7 @@ |
| #include "webrtc/sdk/objc/Framework/Classes/videotoolboxvideocodecfactory.h" |
| #include "webrtc/base/logging.h" |
| +#include "webrtc/common_video/h264/profile_level_id.h" |
| #include "webrtc/media/base/codec.h" |
| #if defined(WEBRTC_IOS) |
| #include "webrtc/sdk/objc/Framework/Classes/h264_video_toolbox_encoder.h" |
| @@ -38,7 +39,19 @@ namespace webrtc { |
| VideoToolboxVideoEncoderFactory::VideoToolboxVideoEncoderFactory() { |
| // Hardware H264 encoding only supported on iOS for now. |
| #if defined(WEBRTC_IOS) |
| - supported_codecs_.push_back(cricket::VideoCodec(cricket::kH264CodecName)); |
| + // TODO(magjed): Push Constrained High profile as well when negotiation is |
| + // ready, http://crbug/webrtc/6337. |
| + cricket::VideoCodec constrained_baseline(cricket::kH264CodecName); |
| + // TODO(magjed): Enumerate actual level instead of using hardcoded level 3.1. |
| + // Level 3.1 is 1280x720@30fps which is enough for now. |
| + const H264::ProfileLevelId constrained_baseline_profile( |
| + H264::kProfileConstrainedBaseline, H264::kLevel3_1); |
|
tkchin_webrtc
2016/11/14 18:27:27
I don't know how this will affect the encoder. But
magjed_webrtc
2016/11/15 17:14:24
It looks good in AppRTCMobile as far as I can tell
|
| + constrained_baseline.SetParam( |
| + cricket::kH264FmtpProfileLevelId, |
| + *H264::ProfileLevelIdToString(constrained_baseline_profile)); |
| + constrained_baseline.SetParam(cricket::kH264FmtpLevelAsymmetryAllowed, "1"); |
| + constrained_baseline.SetParam(cricket::kH264FmtpPacketizationMode, "1"); |
| + supported_codecs_.push_back(constrained_baseline); |
| #endif |
| } |
| @@ -49,7 +62,7 @@ VideoEncoder* VideoToolboxVideoEncoderFactory::CreateVideoEncoder( |
| #if defined(WEBRTC_IOS) |
| if (IsCodecSupported(supported_codecs_, codec)) { |
| LOG(LS_INFO) << "Creating HW encoder for " << codec.name; |
| - return new H264VideoToolboxEncoder(); |
| + return new H264VideoToolboxEncoder(codec); |
| } |
| #endif |
| LOG(LS_INFO) << "No HW encoder found for codec " << codec.name; |