| Index: webrtc/media/engine/webrtcvideoengine2.cc
|
| diff --git a/webrtc/media/engine/webrtcvideoengine2.cc b/webrtc/media/engine/webrtcvideoengine2.cc
|
| index 7e06ea5fdc30071c71a0315af1a9e6778c1e1084..c43dff80d3d140f87334f482df5ae266026c4832 100644
|
| --- a/webrtc/media/engine/webrtcvideoengine2.cc
|
| +++ b/webrtc/media/engine/webrtcvideoengine2.cc
|
| @@ -22,6 +22,7 @@
|
| #include "webrtc/base/timeutils.h"
|
| #include "webrtc/base/trace_event.h"
|
| #include "webrtc/call.h"
|
| +#include "webrtc/common_video/h264/profile_level_id.h"
|
| #include "webrtc/media/engine/constants.h"
|
| #include "webrtc/media/engine/simulcast.h"
|
| #include "webrtc/media/engine/videoencodersoftwarefallbackwrapper.h"
|
| @@ -404,7 +405,21 @@ void AddCodecAndMaybeRtxCodec(const VideoCodec& codec,
|
| } else if (CodecNamesEq(codec.name, kVp9CodecName)) {
|
| rtx_payload_type = kDefaultRtxVp9PlType;
|
| } else if (CodecNamesEq(codec.name, kH264CodecName)) {
|
| - rtx_payload_type = kDefaultRtxH264PlType;
|
| + // Parse H264 profile.
|
| + const rtc::Optional<webrtc::H264::ProfileLevelId> profile_level_id =
|
| + webrtc::H264::ParseSdpProfileLevelId(codec.params);
|
| + if (!profile_level_id)
|
| + return;
|
| + const webrtc::H264::Profile profile = profile_level_id->profile;
|
| + // In H.264, we only support rtx for constrained baseline and constrained
|
| + // high profile.
|
| + if (profile == webrtc::H264::kProfileConstrainedBaseline) {
|
| + rtx_payload_type = kDefaultRtxH264ConstrainedBaselinePlType;
|
| + } else if (profile == webrtc::H264::kProfileConstrainedHigh) {
|
| + rtx_payload_type = kDefaultRtxH264ConstrainedHighPlType;
|
| + } else {
|
| + return;
|
| + }
|
| } else if (CodecNamesEq(codec.name, kRedCodecName)) {
|
| rtx_payload_type = kDefaultRtxRedPlType;
|
| } else {
|
|
|