| 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();
|
|
|