Enable VP9 video codec support on webrtcvideoengine behind a field trial.
BUG=chromium:431285 R=pbos@webrtc.org Review URL: https://webrtc-codereview.appspot.com/27929004 git-svn-id: http://webrtc.googlecode.com/svn/trunk@7663 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
parent
f85dbce041
commit
188d3b2245
@ -33,6 +33,7 @@ extern const int kVideoMtu;
|
||||
extern const int kVideoRtpBufferSize;
|
||||
|
||||
extern const char kVp8CodecName[];
|
||||
extern const char kVp9CodecName[];
|
||||
extern const char kH264CodecName[];
|
||||
|
||||
extern const int kDefaultVideoMaxWidth;
|
||||
|
@ -64,6 +64,7 @@
|
||||
#include "webrtc/base/timeutils.h"
|
||||
#include "webrtc/experiments.h"
|
||||
#include "webrtc/modules/remote_bitrate_estimator/include/remote_bitrate_estimator.h"
|
||||
#include "webrtc/system_wrappers/interface/field_trial.h"
|
||||
|
||||
namespace {
|
||||
|
||||
@ -106,6 +107,7 @@ const int kVideoMtu = 1200;
|
||||
const int kVideoRtpBufferSize = 65536;
|
||||
|
||||
const char kVp8CodecName[] = "VP8";
|
||||
const char kVp9CodecName[] = "VP9";
|
||||
|
||||
// TODO(ronghuawu): Change to 640x360.
|
||||
const int kDefaultVideoMaxWidth = 640;
|
||||
@ -221,11 +223,21 @@ bool CodecIsInternallySupported(const std::string& codec_name) {
|
||||
if (CodecNameMatches(codec_name, kVp8CodecName)) {
|
||||
return true;
|
||||
}
|
||||
if (CodecNameMatches(codec_name, kVp9CodecName)) {
|
||||
const std::string group_name =
|
||||
webrtc::field_trial::FindFullName("WebRTC-SupportVP9");
|
||||
return group_name == "Enabled" || group_name == "EnabledByFlag";
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
std::vector<VideoCodec> DefaultVideoCodecList() {
|
||||
std::vector<VideoCodec> codecs;
|
||||
if (CodecIsInternallySupported(kVp9CodecName)) {
|
||||
codecs.push_back(
|
||||
MakeVideoCodecWithDefaultFeedbackParams(101, kVp9CodecName));
|
||||
// TODO(andresp): Add rtx codec for vp9 and verify it works.
|
||||
}
|
||||
codecs.push_back(MakeVideoCodecWithDefaultFeedbackParams(100, kVp8CodecName));
|
||||
codecs.push_back(MakeRtxCodec(96, 100));
|
||||
codecs.push_back(MakeVideoCodec(116, kRedCodecName));
|
||||
|
@ -230,6 +230,12 @@ void* WebRtcVideoEncoderFactory2::CreateVideoEncoderSettings(
|
||||
options.video_noise_reduction.Get(&settings->denoisingOn);
|
||||
return settings;
|
||||
}
|
||||
if (CodecNameMatches(codec.name, kVp9CodecName)) {
|
||||
webrtc::VideoCodecVP9* settings = new webrtc::VideoCodecVP9(
|
||||
webrtc::VideoEncoder::GetDefaultVp9Settings());
|
||||
options.video_noise_reduction.Get(&settings->denoisingOn);
|
||||
return settings;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@ -242,6 +248,9 @@ void WebRtcVideoEncoderFactory2::DestroyVideoEncoderSettings(
|
||||
if (CodecNameMatches(codec.name, kVp8CodecName)) {
|
||||
delete reinterpret_cast<webrtc::VideoCodecVP8*>(encoder_settings);
|
||||
}
|
||||
if (CodecNameMatches(codec.name, kVp9CodecName)) {
|
||||
delete reinterpret_cast<webrtc::VideoCodecVP9*>(encoder_settings);
|
||||
}
|
||||
}
|
||||
|
||||
DefaultUnsignalledSsrcHandler::DefaultUnsignalledSsrcHandler()
|
||||
@ -1604,6 +1613,8 @@ void WebRtcVideoChannel2::WebRtcVideoSendStream::SetCodec(
|
||||
webrtc::VideoCodecType CodecTypeFromName(const std::string& name) {
|
||||
if (CodecNameMatches(name, kVp8CodecName)) {
|
||||
return webrtc::kVideoCodecVP8;
|
||||
} else if (CodecNameMatches(name, kVp9CodecName)) {
|
||||
return webrtc::kVideoCodecVP9;
|
||||
} else if (CodecNameMatches(name, kH264CodecName)) {
|
||||
return webrtc::kVideoCodecH264;
|
||||
}
|
||||
@ -1631,6 +1642,9 @@ WebRtcVideoChannel2::WebRtcVideoSendStream::CreateVideoEncoder(
|
||||
if (type == webrtc::kVideoCodecVP8) {
|
||||
return AllocatedEncoder(
|
||||
webrtc::VideoEncoder::Create(webrtc::VideoEncoder::kVp8), type, false);
|
||||
} else if (type == webrtc::kVideoCodecVP9) {
|
||||
return AllocatedEncoder(
|
||||
webrtc::VideoEncoder::Create(webrtc::VideoEncoder::kVp9), type, false);
|
||||
}
|
||||
|
||||
// This shouldn't happen, we should not be trying to create something we don't
|
||||
|
Loading…
x
Reference in New Issue
Block a user