Test setting of spatial index.
Added unit test that verifies that VP9 encoder wrapper correctly sets spatial index in EncodedImage. Bug: webrtc:9721 Change-Id: Id1eb83a423e36273f97659dc76cd5a089a836e6a Reviewed-on: https://webrtc-review.googlesource.com/98003 Reviewed-by: Rasmus Brandt <brandtr@webrtc.org> Commit-Queue: Sergey Silkin <ssilkin@webrtc.org> Cr-Commit-Position: refs/heads/master@{#24575}
This commit is contained in:
committed by
Commit Bot
parent
1a6a4f3d62
commit
548dec4a81
@ -58,14 +58,21 @@ class TestVp9Impl : public VideoCodecUnitTest {
|
||||
std::vector<EncodedImage> encoded_frame;
|
||||
std::vector<CodecSpecificInfo> codec_specific;
|
||||
ASSERT_TRUE(WaitForEncodedFrames(&encoded_frame, &codec_specific));
|
||||
for (size_t frame_num = 0; frame_num < num_spatial_layers; ++frame_num) {
|
||||
for (size_t spatial_idx = 0; spatial_idx < num_spatial_layers;
|
||||
++spatial_idx) {
|
||||
const CodecSpecificInfoVP9& vp9 =
|
||||
codec_specific[frame_num].codecSpecific.VP9;
|
||||
codec_specific[spatial_idx].codecSpecific.VP9;
|
||||
if (vp9.temporal_idx == kNoTemporalIdx) {
|
||||
EXPECT_EQ(temporal_idx, 0);
|
||||
} else {
|
||||
EXPECT_EQ(vp9.temporal_idx, temporal_idx);
|
||||
}
|
||||
if (num_spatial_layers == 1) {
|
||||
EXPECT_FALSE(encoded_frame[spatial_idx].SpatialIndex());
|
||||
} else {
|
||||
EXPECT_EQ(encoded_frame[spatial_idx].SpatialIndex(),
|
||||
static_cast<int>(spatial_idx));
|
||||
}
|
||||
EXPECT_EQ(vp9.temporal_up_switch, temporal_up_switch);
|
||||
|
||||
// Ensure there are no duplicates in reference list.
|
||||
@ -211,6 +218,22 @@ TEST_F(TestVp9Impl, EncoderWith2TemporalLayers) {
|
||||
ExpectFrameWith(1);
|
||||
}
|
||||
|
||||
TEST_F(TestVp9Impl, EncoderWith2SpatialLayers) {
|
||||
codec_settings_.VP9()->numberOfSpatialLayers = 2;
|
||||
EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK,
|
||||
encoder_->InitEncode(&codec_settings_, 1 /* number of cores */,
|
||||
0 /* max payload size (unused) */));
|
||||
|
||||
SetWaitForEncodedFramesThreshold(2);
|
||||
EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK,
|
||||
encoder_->Encode(*NextInputFrame(), nullptr, nullptr));
|
||||
std::vector<EncodedImage> encoded_frame;
|
||||
std::vector<CodecSpecificInfo> codec_info;
|
||||
ASSERT_TRUE(WaitForEncodedFrames(&encoded_frame, &codec_info));
|
||||
EXPECT_EQ(encoded_frame[0].SpatialIndex(), 0);
|
||||
EXPECT_EQ(encoded_frame[1].SpatialIndex(), 1);
|
||||
}
|
||||
|
||||
TEST_F(TestVp9Impl, EncoderExplicitLayering) {
|
||||
// Override default settings.
|
||||
codec_settings_.VP9()->numberOfTemporalLayers = 1;
|
||||
|
||||
Reference in New Issue
Block a user