Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(134)

Unified Diff: webrtc/video/video_encoder.cc

Issue 2474993002: Pass selected cricket::VideoCodec down to internal H264 encoder (Closed)
Patch Set: Fix. Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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();

Powered by Google App Engine
This is Rietveld 408576698