Chromium Code Reviews| 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( |
|
DaleCurtis
2014/08/15 16:48:50
Instead of returning a vector by copy, just take a
hshi1
2014/08/15 20:14:56
Done.
|
| 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()); |
| } |
| } |