Revert of Don't reinit encoder when rotation changes. (patchset #3 id:40001 of https://codereview.webrtc.org/2853463004/ )
Reason for revert:
Breaks compile on buildbots.
Original issue's description:
> Don't reinit encoder when rotation changes.
>
> TESTED=By rotating phone in AppRTCMobile.
> BUG=webrtc:7535
>
> Review-Url: https://codereview.webrtc.org/2853463004
> Cr-Commit-Position: refs/heads/master@{#17985}
> Committed: https://chromium.googlesource.com/external/webrtc/+/70e39e159eb350cb1acbf81dbe0d84d51c77b664
TBR=magjed@webrtc.org,asapersson@webrtc.org,perkj@webrtc.org,sprang@webrtc.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=webrtc:7535
Review-Url: https://codereview.webrtc.org/2861633003
Cr-Original-Commit-Position: refs/heads/master@{#17987}
Cr-Mirrored-From: https://chromium.googlesource.com/external/webrtc
Cr-Mirrored-Commit: 823e900d2c917e4f110b28a705ca8e2c7b0b0c09
diff --git a/modules/video_coding/codecs/vp8/test/vp8_impl_unittest.cc b/modules/video_coding/codecs/vp8/test/vp8_impl_unittest.cc
index d566ea8..ece5b63 100644
--- a/modules/video_coding/codecs/vp8/test/vp8_impl_unittest.cc
+++ b/modules/video_coding/codecs/vp8/test/vp8_impl_unittest.cc
@@ -83,7 +83,6 @@
encoded_frame_->_timeStamp = encoded_frame._timeStamp;
encoded_frame_->_frameType = encoded_frame._frameType;
encoded_frame_->_completeFrame = encoded_frame._completeFrame;
- encoded_frame_->rotation_ = encoded_frame.rotation_;
encoded_frame_->qp_ = encoded_frame.qp_;
codec_specific_info_->codecType = codec_specific_info->codecType;
// Skip |codec_name|, to avoid allocating.
@@ -274,26 +273,6 @@
EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK, decoder_->InitDecode(&codec_settings_, 1));
}
-// We only test the encoder here, since the decoded frame rotation is set based
-// on the CVO RTP header extension in VCMDecodedFrameCallback::Decoded.
-// TODO(brandtr): Consider passing through the rotation flag through the decoder
-// in the same way as done in the encoder.
-TEST_F(TestVp8Impl, EncodedRotationEqualsInputRotation) {
- SetUpEncodeDecode();
-
- input_frame_->set_rotation(kVideoRotation_0);
- EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK,
- encoder_->Encode(*input_frame_, nullptr, nullptr));
- WaitForEncodedFrame();
- EXPECT_EQ(kVideoRotation_0, encoded_frame_.rotation_);
-
- input_frame_->set_rotation(kVideoRotation_90);
- EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK,
- encoder_->Encode(*input_frame_, nullptr, nullptr));
- WaitForEncodedFrame();
- EXPECT_EQ(kVideoRotation_90, encoded_frame_.rotation_);
-}
-
TEST_F(TestVp8Impl, DecodedQpEqualsEncodedQp) {
SetUpEncodeDecode();
encoder_->Encode(*input_frame_, nullptr, nullptr);
diff --git a/modules/video_coding/codecs/vp9/test/vp9_impl_unittest.cc b/modules/video_coding/codecs/vp9/test/vp9_impl_unittest.cc
index 2ed5e85..e4cb7eb 100644
--- a/modules/video_coding/codecs/vp9/test/vp9_impl_unittest.cc
+++ b/modules/video_coding/codecs/vp9/test/vp9_impl_unittest.cc
@@ -66,25 +66,6 @@
EXPECT_GT(I420PSNR(input_frame_.get(), decoded_frame.get()), 36);
}
-// We only test the encoder here, since the decoded frame rotation is set based
-// on the CVO RTP header extension in VCMDecodedFrameCallback::Decoded.
-// TODO(brandtr): Consider passing through the rotation flag through the decoder
-// in the same way as done in the encoder.
-TEST_F(TestVp9Impl, EncodedRotationEqualsInputRotation) {
- input_frame_->set_rotation(kVideoRotation_0);
- EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK,
- encoder_->Encode(*input_frame_, nullptr, nullptr));
- EncodedImage encoded_frame;
- ASSERT_TRUE(WaitForEncodedFrame(&encoded_frame));
- EXPECT_EQ(kVideoRotation_0, encoded_frame.rotation_);
-
- input_frame_->set_rotation(kVideoRotation_90);
- EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK,
- encoder_->Encode(*input_frame_, nullptr, nullptr));
- ASSERT_TRUE(WaitForEncodedFrame(&encoded_frame));
- EXPECT_EQ(kVideoRotation_90, encoded_frame.rotation_);
-}
-
TEST_F(TestVp9Impl, DecodedQpEqualsEncodedQp) {
EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK,
encoder_->Encode(*input_frame_, nullptr, nullptr));
diff --git a/video/vie_encoder.cc b/video/vie_encoder.cc
index ed6d07c..2287a7e 100644
--- a/video/vie_encoder.cc
+++ b/video/vie_encoder.cc
@@ -483,8 +483,8 @@
if (last_frame_info_) {
ReconfigureEncoder();
} else if (settings_.internal_source) {
- last_frame_info_ =
- rtc::Optional<VideoFrameInfo>(VideoFrameInfo(176, 144, false));
+ last_frame_info_ = rtc::Optional<VideoFrameInfo>(
+ VideoFrameInfo(176, 144, kVideoRotation_0, false));
ReconfigureEncoder();
}
}
@@ -653,13 +653,16 @@
if (!last_frame_info_ || video_frame.width() != last_frame_info_->width ||
video_frame.height() != last_frame_info_->height ||
+ video_frame.rotation() != last_frame_info_->rotation ||
video_frame.is_texture() != last_frame_info_->is_texture) {
pending_encoder_reconfiguration_ = true;
- last_frame_info_ = rtc::Optional<VideoFrameInfo>(VideoFrameInfo(
- video_frame.width(), video_frame.height(), video_frame.is_texture()));
+ last_frame_info_ = rtc::Optional<VideoFrameInfo>(
+ VideoFrameInfo(video_frame.width(), video_frame.height(),
+ video_frame.rotation(), video_frame.is_texture()));
LOG(LS_INFO) << "Video frame parameters changed: dimensions="
<< last_frame_info_->width << "x" << last_frame_info_->height
- << ", texture=" << last_frame_info_->is_texture << ".";
+ << ", rotation=" << last_frame_info_->rotation
+ << ", texture=" << last_frame_info_->is_texture;
}
if (initial_rampup_ < kMaxInitialFramedrop &&
diff --git a/video/vie_encoder.h b/video/vie_encoder.h
index 8481117..213ff6d 100644
--- a/video/vie_encoder.h
+++ b/video/vie_encoder.h
@@ -133,12 +133,15 @@
public:
VideoFrameInfo(int width,
int height,
+ VideoRotation rotation,
bool is_texture)
: width(width),
height(height),
+ rotation(rotation),
is_texture(is_texture) {}
int width;
int height;
+ VideoRotation rotation;
bool is_texture;
int pixel_count() const { return width * height; }
};