(Auto)update libjingle 81063831-> 81073932
git-svn-id: http://webrtc.googlecode.com/svn/trunk@7774 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
parent
7f722492f1
commit
32ec0dd032
@ -3216,6 +3216,10 @@ bool WebRtcVideoMediaChannel::SendFrame(
|
||||
if (!send_channel) {
|
||||
return false;
|
||||
}
|
||||
|
||||
bool changed;
|
||||
send_channel->SetLastCapturedFrameInfo(frame, is_screencast, &changed);
|
||||
|
||||
if (!send_codec_) {
|
||||
// Send codec has not been set. No reason to process the frame any further.
|
||||
return false;
|
||||
@ -3229,8 +3233,6 @@ bool WebRtcVideoMediaChannel::SendFrame(
|
||||
return true;
|
||||
}
|
||||
|
||||
bool changed;
|
||||
send_channel->SetLastCapturedFrameInfo(frame, is_screencast, &changed);
|
||||
if (changed) {
|
||||
// If the last captured frame info changed, then calling
|
||||
// SetSendParams will update to the latest resolution.
|
||||
@ -3877,20 +3879,32 @@ bool WebRtcVideoMediaChannel::SetSendParams(
|
||||
MaybeRegisterExternalEncoder(send_channel, send_params.codec);
|
||||
|
||||
CapturedFrameInfo frame;
|
||||
send_channel->last_captured_frame_info().Get(&frame);
|
||||
if (!send_channel->last_captured_frame_info().Get(&frame)) {
|
||||
// When we don't have a frame yet, configure the encoder with a
|
||||
// 2x2 frame (the smallest possible I420 frame). This gives us
|
||||
// low memory usage but also makes it so configuration errors are
|
||||
// discovered at the time we apply the settings rather than when
|
||||
// we get the first frame (waiting for the first frame to know
|
||||
// that you gave a bad codec parameter could make debugging hard).
|
||||
frame.width = 2;
|
||||
frame.height = 2;
|
||||
|
||||
// TODO(pthatcher): Evaluate the risk of not setting up an encoder
|
||||
// at all until we have a frame. Once we feel it's worth the
|
||||
// risk, we can do something like this:
|
||||
// send_channel->set_send_params(send_params);
|
||||
// return true;
|
||||
}
|
||||
|
||||
// TODO(pthatcher): This checking of the max height and width is
|
||||
// only needed because some unit tests bypass the VideoAdapter, and
|
||||
// others expect behavior from the adapter different than what it
|
||||
// actually does. We should fix the tests and remove this block.
|
||||
VideoFormat max = send_channel->adapt_format();
|
||||
size_t max_width = static_cast<size_t>(max.width);
|
||||
size_t max_height = static_cast<size_t>(max.height);
|
||||
if (!send_channel->last_captured_frame_info().IsSet() ||
|
||||
(!frame.screencast &&
|
||||
(frame.width > max_width || frame.height > max_height))) {
|
||||
frame.width = max_width;
|
||||
frame.height = max_height;
|
||||
if ((!frame.screencast &&
|
||||
(frame.width > max.width || frame.height > max.height))) {
|
||||
frame.width = max.width;
|
||||
frame.height = max.height;
|
||||
}
|
||||
|
||||
webrtc::VideoCodec codec;
|
||||
|
@ -371,6 +371,7 @@ TEST_F(WebRtcVideoEngineTestFake, SetSendCodecs) {
|
||||
EXPECT_TRUE(SetupEngine());
|
||||
int channel_num = vie_.GetLastChannel();
|
||||
std::vector<cricket::VideoCodec> codecs(engine_.codecs());
|
||||
SendI420Frame(kVP8Codec.width, kVP8Codec.height);
|
||||
EXPECT_TRUE(channel_->SetSendCodecs(codecs));
|
||||
VerifyVP8SendCodec(channel_num, kVP8Codec.width, kVP8Codec.height);
|
||||
EXPECT_TRUE(vie_.GetHybridNackFecStatus(channel_num));
|
||||
@ -379,12 +380,21 @@ TEST_F(WebRtcVideoEngineTestFake, SetSendCodecs) {
|
||||
// TODO(juberti): Check RTCP, PLI, TMMBR.
|
||||
}
|
||||
|
||||
TEST_F(WebRtcVideoEngineTestFake, SetSendCodecsBeforeFrameRegistersTinyFormat) {
|
||||
EXPECT_TRUE(SetupEngine());
|
||||
int channel_num = vie_.GetLastChannel();
|
||||
std::vector<cricket::VideoCodec> codecs(engine_.codecs());
|
||||
EXPECT_TRUE(channel_->SetSendCodecs(codecs));
|
||||
VerifyVP8SendCodec(channel_num, 2, 2);
|
||||
}
|
||||
|
||||
// Test that ViE Channel doesn't call SetSendCodec again if same codec is tried
|
||||
// to apply.
|
||||
TEST_F(WebRtcVideoEngineTestFake, DontResetSetSendCodec) {
|
||||
EXPECT_TRUE(SetupEngine());
|
||||
int channel_num = vie_.GetLastChannel();
|
||||
std::vector<cricket::VideoCodec> codecs(engine_.codecs());
|
||||
SendI420Frame(kVP8Codec.width, kVP8Codec.height);
|
||||
EXPECT_TRUE(channel_->SetSendCodecs(codecs));
|
||||
VerifyVP8SendCodec(channel_num, kVP8Codec.width, kVP8Codec.height);
|
||||
EXPECT_TRUE(vie_.GetHybridNackFecStatus(channel_num));
|
||||
@ -403,6 +413,7 @@ TEST_F(WebRtcVideoEngineTestFake, SetSendCodecsWithMinMaxBitrate) {
|
||||
std::vector<cricket::VideoCodec> codecs(engine_.codecs());
|
||||
codecs[0].params[cricket::kCodecParamMinBitrate] = "10";
|
||||
codecs[0].params[cricket::kCodecParamMaxBitrate] = "20";
|
||||
SendI420Frame(kVP8Codec.width, kVP8Codec.height);
|
||||
EXPECT_TRUE(channel_->SetSendCodecs(codecs));
|
||||
|
||||
VerifyVP8SendCodec(
|
||||
@ -419,6 +430,7 @@ TEST_F(WebRtcVideoEngineTestFake, SetSendCodecsWithStartBitrate) {
|
||||
int channel_num = vie_.GetLastChannel();
|
||||
std::vector<cricket::VideoCodec> codecs(engine_.codecs());
|
||||
codecs[0].params[cricket::kCodecParamStartBitrate] = "450";
|
||||
SendI420Frame(kVP8Codec.width, kVP8Codec.height);
|
||||
EXPECT_TRUE(channel_->SetSendCodecs(codecs));
|
||||
|
||||
VerifyVP8SendCodec(channel_num,
|
||||
@ -441,6 +453,7 @@ TEST_F(WebRtcVideoEngineTestFake, SetSendCodecsWithMinMaxStartBitrate) {
|
||||
codecs[0].params[cricket::kCodecParamMinBitrate] = "10";
|
||||
codecs[0].params[cricket::kCodecParamMaxBitrate] = "20";
|
||||
codecs[0].params[cricket::kCodecParamStartBitrate] = "14";
|
||||
SendI420Frame(kVP8Codec.width, kVP8Codec.height);
|
||||
EXPECT_TRUE(channel_->SetSendCodecs(codecs));
|
||||
|
||||
VerifyVP8SendCodec(
|
||||
@ -458,6 +471,7 @@ TEST_F(WebRtcVideoEngineTestFake, SetSendCodecsWithMinMaxBitrateInvalid) {
|
||||
std::vector<cricket::VideoCodec> codecs(engine_.codecs());
|
||||
codecs[0].params[cricket::kCodecParamMinBitrate] = "30";
|
||||
codecs[0].params[cricket::kCodecParamMaxBitrate] = "20";
|
||||
SendI420Frame(kVP8Codec.width, kVP8Codec.height);
|
||||
EXPECT_FALSE(channel_->SetSendCodecs(codecs));
|
||||
}
|
||||
|
||||
@ -467,6 +481,7 @@ TEST_F(WebRtcVideoEngineTestFake, SetSendCodecsWithLargeMinMaxBitrate) {
|
||||
std::vector<cricket::VideoCodec> codecs(engine_.codecs());
|
||||
codecs[0].params[cricket::kCodecParamMinBitrate] = "1000";
|
||||
codecs[0].params[cricket::kCodecParamMaxBitrate] = "3000";
|
||||
SendI420Frame(kVP8Codec.width, kVP8Codec.height);
|
||||
EXPECT_TRUE(channel_->SetSendCodecs(codecs));
|
||||
|
||||
VerifyVP8SendCodec(
|
||||
@ -479,6 +494,7 @@ TEST_F(WebRtcVideoEngineTestFake, SetSendCodecsWithMaxQuantization) {
|
||||
int channel_num = vie_.GetLastChannel();
|
||||
std::vector<cricket::VideoCodec> codecs(engine_.codecs());
|
||||
codecs[0].params[cricket::kCodecParamMaxQuantization] = "21";
|
||||
SendI420Frame(kVP8Codec.width, kVP8Codec.height);
|
||||
EXPECT_TRUE(channel_->SetSendCodecs(codecs));
|
||||
|
||||
VerifyVP8SendCodec(channel_num,
|
||||
@ -502,6 +518,7 @@ TEST_F(WebRtcVideoEngineTestFake, SetOptionsWithMaxBitrate) {
|
||||
std::vector<cricket::VideoCodec> codecs(engine_.codecs());
|
||||
codecs[0].params[cricket::kCodecParamMinBitrate] = "10";
|
||||
codecs[0].params[cricket::kCodecParamMaxBitrate] = "20";
|
||||
SendI420Frame(kVP8Codec.width, kVP8Codec.height);
|
||||
EXPECT_TRUE(channel_->SetSendCodecs(codecs));
|
||||
|
||||
VerifyVP8SendCodec(
|
||||
@ -527,6 +544,7 @@ TEST_F(WebRtcVideoEngineTestFake, MaxBitrateResetWithConferenceMode) {
|
||||
std::vector<cricket::VideoCodec> codecs(engine_.codecs());
|
||||
codecs[0].params[cricket::kCodecParamMinBitrate] = "10";
|
||||
codecs[0].params[cricket::kCodecParamMaxBitrate] = "20";
|
||||
SendI420Frame(kVP8Codec.width, kVP8Codec.height);
|
||||
EXPECT_TRUE(channel_->SetSendCodecs(codecs));
|
||||
|
||||
VerifyVP8SendCodec(
|
||||
@ -552,6 +570,7 @@ TEST_F(WebRtcVideoEngineTestFake, StartSendBitrate) {
|
||||
cricket::VideoCodec codec(kVP8Codec);
|
||||
std::vector<cricket::VideoCodec> codec_list;
|
||||
codec_list.push_back(codec);
|
||||
SendI420Frame(kVP8Codec.width, kVP8Codec.height);
|
||||
EXPECT_TRUE(channel_->SetSendCodecs(codec_list));
|
||||
VerifyVP8SendCodec(send_channel, kVP8Codec.width, kVP8Codec.height, 0,
|
||||
kMaxBandwidthKbps, kMinBandwidthKbps,
|
||||
@ -601,6 +620,7 @@ TEST_F(WebRtcVideoEngineTestFake, ConstrainSendCodecs) {
|
||||
codec_list.push_back(codec);
|
||||
|
||||
// Set send codec and verify codec has been constrained.
|
||||
SendI420Frame(kVP8Codec.width, kVP8Codec.height);
|
||||
EXPECT_TRUE(channel_->SetSendCodecs(codec_list));
|
||||
VerifyVP8SendCodec(channel_num, kVP8Codec.width, kVP8Codec.height);
|
||||
}
|
||||
@ -617,6 +637,7 @@ TEST_F(WebRtcVideoEngineTestFake, SetSendCodecsRejectBadFormat) {
|
||||
codec_list.push_back(codec);
|
||||
|
||||
// Verify SetSendCodecs failed and send codec is not changed on engine.
|
||||
SendI420Frame(kVP8Codec.width, kVP8Codec.height);
|
||||
EXPECT_FALSE(channel_->SetSendCodecs(codec_list));
|
||||
webrtc::VideoCodec gcodec;
|
||||
// Set plType to something other than the value to test against ensuring
|
||||
@ -650,6 +671,7 @@ TEST_F(WebRtcVideoEngineTestFake, SetSendCodecsRejectBadCodec) {
|
||||
codec_list.push_back(codec);
|
||||
|
||||
// Verify SetSendCodecs failed and send codec is not changed on engine.
|
||||
SendI420Frame(kVP8Codec.width, kVP8Codec.height);
|
||||
EXPECT_FALSE(channel_->SetSendCodecs(codec_list));
|
||||
webrtc::VideoCodec gcodec;
|
||||
// Set plType to something other than the value to test against ensuring
|
||||
@ -667,6 +689,7 @@ TEST_F(WebRtcVideoEngineTestFake, ResetVieSendCodecOnNewFrameSize) {
|
||||
// Set send codec.
|
||||
std::vector<cricket::VideoCodec> codec_list;
|
||||
codec_list.push_back(kVP8Codec);
|
||||
SendI420Frame(kVP8Codec.width, kVP8Codec.height);
|
||||
EXPECT_TRUE(channel_->SetSendCodecs(codec_list));
|
||||
EXPECT_TRUE(channel_->AddSendStream(
|
||||
cricket::StreamParams::CreateLegacy(123)));
|
||||
@ -1019,6 +1042,7 @@ TEST_F(WebRtcVideoEngineTestFake, BufferedModeLatency) {
|
||||
TEST_F(WebRtcVideoEngineTestFake, AdditiveVideoOptions) {
|
||||
EXPECT_TRUE(SetupEngine());
|
||||
EXPECT_TRUE(channel_->AddSendStream(cricket::StreamParams::CreateLegacy(1)));
|
||||
SendI420Frame(kVP8Codec.width, kVP8Codec.height);
|
||||
channel_->SetSendCodecs(engine_.codecs());
|
||||
|
||||
int first_send_channel = vie_.GetLastChannel();
|
||||
@ -1428,6 +1452,7 @@ TEST_F(WebRtcVideoEngineTestFake, SetSend) {
|
||||
TEST_F(WebRtcVideoEngineTestFake, SetBandwidthAuto) {
|
||||
EXPECT_TRUE(SetupEngine());
|
||||
int channel_num = vie_.GetLastChannel();
|
||||
SendI420Frame(kVP8Codec.width, kVP8Codec.height);
|
||||
EXPECT_TRUE(channel_->SetSendCodecs(engine_.codecs()));
|
||||
EXPECT_TRUE(channel_->SetMaxSendBandwidth(cricket::kAutoBandwidth));
|
||||
VerifyVP8SendCodec(channel_num, kVP8Codec.width, kVP8Codec.height);
|
||||
@ -1437,6 +1462,7 @@ TEST_F(WebRtcVideoEngineTestFake, SetBandwidthAuto) {
|
||||
TEST_F(WebRtcVideoEngineTestFake, SetBandwidthCapped) {
|
||||
EXPECT_TRUE(SetupEngine());
|
||||
int channel_num = vie_.GetLastChannel();
|
||||
SendI420Frame(kVP8Codec.width, kVP8Codec.height);
|
||||
EXPECT_TRUE(channel_->SetSendCodecs(engine_.codecs()));
|
||||
EXPECT_TRUE(channel_->SetMaxSendBandwidth(768000));
|
||||
VerifyVP8SendCodec(channel_num, kVP8Codec.width, kVP8Codec.height, 0, 768U);
|
||||
@ -1447,6 +1473,7 @@ TEST_F(WebRtcVideoEngineTestFake, SetBandwidthCapped) {
|
||||
TEST_F(WebRtcVideoEngineTestFake, SetMaxBandwidthBelowDefaultStart) {
|
||||
EXPECT_TRUE(SetupEngine());
|
||||
int channel_num = vie_.GetLastChannel();
|
||||
SendI420Frame(kVP8Codec.width, kVP8Codec.height);
|
||||
EXPECT_TRUE(channel_->SetSendCodecs(engine_.codecs()));
|
||||
int max_bandwidth_kbps = (kMinBandwidthKbps + kStartBandwidthKbps) / 2;
|
||||
EXPECT_TRUE(channel_->SetMaxSendBandwidth(max_bandwidth_kbps * 1000));
|
||||
@ -1459,6 +1486,7 @@ TEST_F(WebRtcVideoEngineTestFake, SetMaxBandwidthBelowDefaultStart) {
|
||||
TEST_F(WebRtcVideoEngineTestFake, SetMaxBandwidthBelowMin) {
|
||||
EXPECT_TRUE(SetupEngine());
|
||||
int channel_num = vie_.GetLastChannel();
|
||||
SendI420Frame(kVP8Codec.width, kVP8Codec.height);
|
||||
EXPECT_TRUE(channel_->SetSendCodecs(engine_.codecs()));
|
||||
int max_bandwidth_kbps = kMinBandwidthKbps / 2;
|
||||
EXPECT_TRUE(channel_->SetMaxSendBandwidth(max_bandwidth_kbps * 1000));
|
||||
@ -1471,6 +1499,7 @@ TEST_F(WebRtcVideoEngineTestFake, SetStartBandwidthOption) {
|
||||
EXPECT_TRUE(SetupEngine());
|
||||
int channel_num = vie_.GetLastChannel();
|
||||
EXPECT_TRUE(channel_->SetSendCodecs(engine_.codecs()));
|
||||
SendI420Frame(kVP8Codec.width, kVP8Codec.height);
|
||||
VerifyVP8SendCodec(channel_num, kVP8Codec.width, kVP8Codec.height, 0,
|
||||
kMaxBandwidthKbps, kMinBandwidthKbps, kStartBandwidthKbps);
|
||||
|
||||
@ -1493,6 +1522,7 @@ TEST_F(WebRtcVideoEngineTestFake, SetBandwidthInConference) {
|
||||
cricket::VideoOptions options;
|
||||
options.conference_mode.Set(true);
|
||||
EXPECT_TRUE(channel_->SetOptions(options));
|
||||
SendI420Frame(kVP8Codec.width, kVP8Codec.height);
|
||||
EXPECT_TRUE(channel_->SetSendCodecs(engine_.codecs()));
|
||||
VerifyVP8SendCodec(channel_num, kVP8Codec.width, kVP8Codec.height);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user