| Index: content/renderer/media/rtc_video_encoder_factory.cc
|
| diff --git a/content/renderer/media/rtc_video_encoder_factory.cc b/content/renderer/media/rtc_video_encoder_factory.cc
|
| index 777d69f83c9a13e43d906e35cde8a53d5479d05f..f30b6260cecbeb2df287dad58f0aa7c2331d94a0 100644
|
| --- a/content/renderer/media/rtc_video_encoder_factory.cc
|
| +++ b/content/renderer/media/rtc_video_encoder_factory.cc
|
| @@ -14,32 +14,28 @@ namespace content {
|
| namespace {
|
|
|
| // Translate from media::VideoEncodeAccelerator::SupportedProfile to
|
| -// cricket::WebRtcVideoEncoderFactory::VideoCodec
|
| -cricket::WebRtcVideoEncoderFactory::VideoCodec VEAToWebRTCCodec(
|
| +// one or more instances of cricket::WebRtcVideoEncoderFactory::VideoCodec
|
| +std::vector<cricket::WebRtcVideoEncoderFactory::VideoCodec> VEAToWebRTCCodecs(
|
| const media::VideoEncodeAccelerator::SupportedProfile& profile) {
|
| - webrtc::VideoCodecType type = webrtc::kVideoCodecUnknown;
|
| - std::string name;
|
| - int width = 0, height = 0, fps = 0;
|
| + int width = profile.max_resolution.width();
|
| + int height = profile.max_resolution.height();
|
| + int fps = profile.max_framerate.numerator;
|
| + DCHECK_EQ(profile.max_framerate.denominator, 1U);
|
|
|
| + std::vector<cricket::WebRtcVideoEncoderFactory::VideoCodec> codecs;
|
| if (profile.profile >= media::VP8PROFILE_MIN &&
|
| profile.profile <= media::VP8PROFILE_MAX) {
|
| - type = webrtc::kVideoCodecVP8;
|
| - name = "VP8";
|
| + codecs.push_back(cricket::WebRtcVideoEncoderFactory::VideoCodec(
|
| + webrtc::kVideoCodecVP8, "VP8", width, height, fps));
|
| } else if (profile.profile >= media::H264PROFILE_MIN &&
|
| profile.profile <= media::H264PROFILE_MAX) {
|
| - type = webrtc::kVideoCodecGeneric;
|
| - name = "CAST1";
|
| + codecs.push_back(cricket::WebRtcVideoEncoderFactory::VideoCodec(
|
| + webrtc::kVideoCodecGeneric, "CAST1", width, height, fps));
|
| + codecs.push_back(cricket::WebRtcVideoEncoderFactory::VideoCodec(
|
| + webrtc::kVideoCodecH264, "H264", width, height, fps));
|
| }
|
|
|
| - if (type != webrtc::kVideoCodecUnknown) {
|
| - width = profile.max_resolution.width();
|
| - height = profile.max_resolution.height();
|
| - fps = profile.max_framerate.numerator;
|
| - DCHECK_EQ(profile.max_framerate.denominator, 1U);
|
| - }
|
| -
|
| - return cricket::WebRtcVideoEncoderFactory::VideoCodec(
|
| - type, name, width, height, fps);
|
| + return codecs;
|
| }
|
|
|
| // Translate from cricket::WebRtcVideoEncoderFactory::VideoCodec to
|
| @@ -49,6 +45,7 @@ media::VideoCodecProfile WebRTCCodecToVideoCodecProfile(
|
| switch (type) {
|
| case webrtc::kVideoCodecVP8:
|
| return media::VP8PROFILE_MAIN;
|
| + case webrtc::kVideoCodecH264:
|
| case webrtc::kVideoCodecGeneric:
|
| return media::H264PROFILE_MAIN;
|
| default:
|
| @@ -65,9 +62,8 @@ RTCVideoEncoderFactory::RTCVideoEncoderFactory(
|
| std::vector<media::VideoEncodeAccelerator::SupportedProfile> profiles =
|
| GpuVideoEncodeAcceleratorHost::GetSupportedProfiles();
|
| for (size_t i = 0; i < profiles.size(); ++i) {
|
| - VideoCodec codec = VEAToWebRTCCodec(profiles[i]);
|
| - if (codec.type != webrtc::kVideoCodecUnknown)
|
| - codecs_.push_back(codec);
|
| + std::vector<VideoCodec> codecs = VEAToWebRTCCodecs(profiles[i]);
|
| + codecs_.insert(codecs_.end(), codecs.begin(), codecs.end());
|
| }
|
| }
|
|
|
|
|