Index: webrtc/video/video_encoder.cc |
diff --git a/webrtc/video/video_encoder.cc b/webrtc/video/video_encoder.cc |
index bb6e9e23082ae0b93a6adaefa5bf6dc28f262658..5a1bdbe125b2f73292481a50d2cd6459f7b9d469 100644 |
--- a/webrtc/video/video_encoder.cc |
+++ b/webrtc/video/video_encoder.cc |
@@ -17,69 +17,50 @@ |
#include "webrtc/modules/video_coding/codecs/vp9/include/vp9.h" |
namespace webrtc { |
-VideoEncoder* VideoEncoder::Create(VideoEncoder::EncoderType codec_type) { |
- RTC_DCHECK(IsSupportedSoftware(codec_type)); |
- switch (codec_type) { |
- case kH264: |
- return H264Encoder::Create(); |
- case kVp8: |
+VideoEncoder* VideoEncoder::Create(const cricket::VideoCodec& codec) { |
+ RTC_DCHECK(IsSupportedSoftware(codec)); |
+ switch (cricket::CodecTypeFromName(codec.name)) { |
+ case kVideoCodecH264: |
+ return H264Encoder::Create(codec); |
+ case kVideoCodecVP8: |
return VP8Encoder::Create(); |
- case kVp9: |
+ case kVideoCodecVP9: |
return VP9Encoder::Create(); |
- case kUnsupportedCodec: |
+ default: |
RTC_NOTREACHED(); |
return nullptr; |
} |
- RTC_NOTREACHED(); |
- return nullptr; |
-} |
- |
-bool VideoEncoder::IsSupportedSoftware(EncoderType codec_type) { |
- switch (codec_type) { |
- case kH264: |
- return H264Encoder::IsSupported(); |
- case kVp8: |
- return true; |
- case kVp9: |
- return VP9Encoder::IsSupported(); |
- case kUnsupportedCodec: |
- RTC_NOTREACHED(); |
- return false; |
- } |
- RTC_NOTREACHED(); |
- return false; |
} |
-VideoEncoder::EncoderType VideoEncoder::CodecToEncoderType( |
- VideoCodecType codec_type) { |
- switch (codec_type) { |
+bool VideoEncoder::IsSupportedSoftware(const cricket::VideoCodec& codec) { |
+ switch (cricket::CodecTypeFromName(codec.name)) { |
case kVideoCodecH264: |
- return VideoEncoder::kH264; |
+ return H264Encoder::IsSupported(); |
case kVideoCodecVP8: |
- return VideoEncoder::kVp8; |
+ return true; |
case kVideoCodecVP9: |
- return VideoEncoder::kVp9; |
+ return VP9Encoder::IsSupported(); |
default: |
- return VideoEncoder::kUnsupportedCodec; |
+ return false; |
} |
} |
VideoEncoderSoftwareFallbackWrapper::VideoEncoderSoftwareFallbackWrapper( |
- VideoCodecType codec_type, |
+ const cricket::VideoCodec& codec, |
webrtc::VideoEncoder* encoder) |
: rates_set_(false), |
channel_parameters_set_(false), |
- encoder_type_(CodecToEncoderType(codec_type)), |
+ codec_(codec), |
encoder_(encoder), |
callback_(nullptr) {} |
bool VideoEncoderSoftwareFallbackWrapper::InitFallbackEncoder() { |
- if (!VideoEncoder::IsSupportedSoftware(encoder_type_)) { |
+ if (!VideoEncoder::IsSupportedSoftware(codec_)) { |
LOG(LS_WARNING) |
<< "Encoder requesting fallback to codec not supported in software."; |
return false; |
} |
- fallback_encoder_.reset(VideoEncoder::Create(encoder_type_)); |
+ fallback_encoder_.reset(VideoEncoder::Create(codec_)); |
if (fallback_encoder_->InitEncode(&codec_settings_, number_of_cores_, |
max_payload_size_) != |
WEBRTC_VIDEO_CODEC_OK) { |
@@ -121,7 +102,7 @@ int32_t VideoEncoderSoftwareFallbackWrapper::InitEncode( |
int32_t ret = |
encoder_->InitEncode(codec_settings, number_of_cores, max_payload_size); |
- if (ret == WEBRTC_VIDEO_CODEC_OK || encoder_type_ == kUnsupportedCodec) { |
+ if (ret == WEBRTC_VIDEO_CODEC_OK || codec_.name.empty()) { |
if (fallback_encoder_) |
fallback_encoder_->Release(); |
fallback_encoder_.reset(); |