summaryrefslogtreecommitdiff
path: root/test/simple_encode_test.cc
diff options
context:
space:
mode:
authorangiebird <angiebird@google.com>2019-12-03 15:34:03 -0800
committerangiebird <angiebird@google.com>2019-12-03 18:33:10 -0800
commit42916ce60416d00f1188afd09c6a088ae9c91de9 (patch)
tree0e18cff89c868cea3084c253836e987aaba47f0d /test/simple_encode_test.cc
parentf0878a719ab79c743e561e2eb35855219f73d969 (diff)
downloadlibvpx-42916ce60416d00f1188afd09c6a088ae9c91de9.tar
libvpx-42916ce60416d00f1188afd09c6a088ae9c91de9.tar.gz
libvpx-42916ce60416d00f1188afd09c6a088ae9c91de9.tar.bz2
libvpx-42916ce60416d00f1188afd09c6a088ae9c91de9.zip
Fix the encode inconsistency of SimpleEncode
Make sure restore_coding_context() is always called in the end of encode_with_recode_loop(). Add EncodeConsistencyTest. Change-Id: I3c8e4c8fcff4e3f7afef9bec469beef2a5fb6eeb
Diffstat (limited to 'test/simple_encode_test.cc')
-rw-r--r--test/simple_encode_test.cc42
1 files changed, 42 insertions, 0 deletions
diff --git a/test/simple_encode_test.cc b/test/simple_encode_test.cc
index 8caf8bfe2..e93a1a469 100644
--- a/test/simple_encode_test.cc
+++ b/test/simple_encode_test.cc
@@ -107,6 +107,48 @@ TEST(SimpleEncode, EncodeFrameWithQuantizeIndex) {
}
simple_encode.EndEncode();
}
+
+TEST(SimpleEncode, EncodeConsistencyTest) {
+ std::vector<int> quantize_index_list;
+ std::vector<uint64_t> ref_sse_list;
+ std::vector<double> ref_psnr_list;
+ std::vector<size_t> ref_bit_size_list;
+ {
+ SimpleEncode simple_encode(w, h, frame_rate_num, frame_rate_den,
+ target_bitrate, num_frames, infile_path);
+ simple_encode.ComputeFirstPassStats();
+ const int num_coding_frames = simple_encode.GetCodingFrameNum();
+ simple_encode.StartEncode();
+ for (int i = 0; i < num_coding_frames; ++i) {
+ EncodeFrameResult encode_frame_result;
+ simple_encode.EncodeFrame(&encode_frame_result);
+ quantize_index_list.push_back(encode_frame_result.quantize_index);
+ ref_sse_list.push_back(encode_frame_result.sse);
+ ref_psnr_list.push_back(encode_frame_result.psnr);
+ ref_bit_size_list.push_back(encode_frame_result.coding_data_bit_size);
+ }
+ simple_encode.EndEncode();
+ }
+ {
+ SimpleEncode simple_encode(w, h, frame_rate_num, frame_rate_den,
+ target_bitrate, num_frames, infile_path);
+ simple_encode.ComputeFirstPassStats();
+ const int num_coding_frames = simple_encode.GetCodingFrameNum();
+ EXPECT_EQ(static_cast<size_t>(num_coding_frames),
+ quantize_index_list.size());
+ simple_encode.StartEncode();
+ for (int i = 0; i < num_coding_frames; ++i) {
+ EncodeFrameResult encode_frame_result;
+ simple_encode.EncodeFrameWithQuantizeIndex(&encode_frame_result,
+ quantize_index_list[i]);
+ EXPECT_EQ(encode_frame_result.quantize_index, quantize_index_list[i]);
+ EXPECT_EQ(encode_frame_result.sse, ref_sse_list[i]);
+ EXPECT_DOUBLE_EQ(encode_frame_result.psnr, ref_psnr_list[i]);
+ EXPECT_EQ(encode_frame_result.coding_data_bit_size, ref_bit_size_list[i]);
+ }
+ simple_encode.EndEncode();
+ }
+}
} // namespace
} // namespace vp9