Chromium Code Reviews| Index: content/renderer/media/gpu/rtc_video_encoder_factory.cc |
| diff --git a/content/renderer/media/gpu/rtc_video_encoder_factory.cc b/content/renderer/media/gpu/rtc_video_encoder_factory.cc |
| index f27cc610d3f530bce278bb4be53923d11b2508d8..5d3b90f3516d899270451f70b2d84c43a2cef6fa 100644 |
| --- a/content/renderer/media/gpu/rtc_video_encoder_factory.cc |
| +++ b/content/renderer/media/gpu/rtc_video_encoder_factory.cc |
| @@ -15,6 +15,18 @@ |
| namespace content { |
| namespace { |
| +bool IsCodecDisabledByCommandLine(const base::CommandLine* cmd_line, |
| + const std::string codec_name) { |
| + if (!cmd_line->HasSwitch(switches::kDisableWebRtcHWEncoding)) |
| + return false; |
| + |
| + const std::string codec_filter = |
| + cmd_line->GetSwitchValueASCII(switches::kDisableWebRtcHWEncoding); |
| + if (!codec_filter.empty() && codec_filter != codec_name) |
| + return false; |
|
watk
2016/10/01 01:06:54
nit: can return the expression in the if-statement
braveyao
2016/10/03 23:50:14
Done.
|
| + |
| + return true; |
| +} |
| // Translate from media::VideoEncodeAccelerator::SupportedProfile to |
| // one or more instances of cricket::WebRtcVideoEncoderFactory::VideoCodec |
| @@ -29,8 +41,11 @@ void VEAToWebRTCCodecs( |
| const base::CommandLine* cmd_line = base::CommandLine::ForCurrentProcess(); |
| if (profile.profile >= media::VP8PROFILE_MIN && |
| profile.profile <= media::VP8PROFILE_MAX) { |
| - codecs->push_back(cricket::WebRtcVideoEncoderFactory::VideoCodec( |
| - webrtc::kVideoCodecVP8, "VP8", width, height, fps)); |
| + if (!IsCodecDisabledByCommandLine(cmd_line, |
| + switches::kDisableWebRtcHWEncodingVPx)) { |
| + codecs->push_back(cricket::WebRtcVideoEncoderFactory::VideoCodec( |
| + webrtc::kVideoCodecVP8, "VP8", width, height, fps)); |
| + } |
| } else if (profile.profile >= media::H264PROFILE_MIN && |
| profile.profile <= media::H264PROFILE_MAX) { |
| // Enable H264 HW encode for WebRTC when SW fallback is available, which is |
| @@ -44,7 +59,9 @@ void VEAToWebRTCCodecs( |
| base::FeatureList::IsEnabled(kWebRtcH264WithOpenH264FFmpeg); |
| #endif // BUILDFLAG(RTC_USE_H264) && !defined(MEDIA_DISABLE_FFMPEG) |
| if (cmd_line->HasSwitch(switches::kEnableWebRtcHWH264Encoding) || |
| - webrtc_h264_sw_enabled) { |
| + webrtc_h264_sw_enabled || |
| + !IsCodecDisabledByCommandLine(cmd_line, |
| + switches::kDisableWebRtcHWEncodingH264)) { |
| codecs->push_back(cricket::WebRtcVideoEncoderFactory::VideoCodec( |
| webrtc::kVideoCodecH264, "H264", width, height, fps)); |
| } |