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 e9c1578817dab8cd5b38b8552588ad778b613cef..b21792204877947f0ac89cbb01098781239c62e9 100644 |
--- a/content/renderer/media/rtc_video_encoder_factory.cc |
+++ b/content/renderer/media/rtc_video_encoder_factory.cc |
@@ -14,32 +14,26 @@ namespace content { |
namespace { |
// Translate from media::VideoEncodeAccelerator::SupportedProfile to |
-// cricket::WebRtcVideoEncoderFactory::VideoCodec |
-cricket::WebRtcVideoEncoderFactory::VideoCodec VEAToWebRTCCodec( |
+// one or more instances of cricket::WebRtcVideoEncoderFactory::VideoCodec |
+void VEAToWebRTCCodecs( |
+ std::vector<cricket::WebRtcVideoEncoderFactory::VideoCodec>* codecs, |
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); |
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); |
} |
// Translate from cricket::WebRtcVideoEncoderFactory::VideoCodec to |
@@ -49,6 +43,7 @@ media::VideoCodecProfile WebRTCCodecToVideoCodecProfile( |
switch (type) { |
case webrtc::kVideoCodecVP8: |
return media::VP8PROFILE_ANY; |
+ case webrtc::kVideoCodecH264: |
case webrtc::kVideoCodecGeneric: |
return media::H264PROFILE_MAIN; |
default: |
@@ -64,11 +59,8 @@ RTCVideoEncoderFactory::RTCVideoEncoderFactory( |
// Query media::VideoEncodeAccelerator (statically) for our supported codecs. |
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); |
- } |
+ for (size_t i = 0; i < profiles.size(); ++i) |
+ VEAToWebRTCCodecs(&codecs_, profiles[i]); |
} |
RTCVideoEncoderFactory::~RTCVideoEncoderFactory() {} |