summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/vp9_ext_ratectrl_test.cc67
1 files changed, 49 insertions, 18 deletions
diff --git a/test/vp9_ext_ratectrl_test.cc b/test/vp9_ext_ratectrl_test.cc
index aa3609344..a8c4032d4 100644
--- a/test/vp9_ext_ratectrl_test.cc
+++ b/test/vp9_ext_ratectrl_test.cc
@@ -8,6 +8,8 @@
* be found in the AUTHORS file in the root of the source tree.
*/
+#include <new>
+
#include "test/codec_factory.h"
#include "test/encode_test_driver.h"
#include "test/util.h"
@@ -18,7 +20,7 @@
namespace {
constexpr int kModelMagicNumber = 51396;
-constexpr unsigned int PrivMagicNumber = 5566UL;
+constexpr unsigned int PrivMagicNumber = 5566;
constexpr int kFrameNum = 5;
constexpr int kLosslessCodingIndex = 2;
@@ -27,13 +29,14 @@ struct ToyRateCtrl {
int coding_index;
};
-int rc_create_model(void *priv, const vpx_rc_config_t *ratectrl_config,
- vpx_rc_model_t *rate_ctrl_model_pt) {
+vpx_rc_status_t rc_create_model(void *priv,
+ const vpx_rc_config_t *ratectrl_config,
+ vpx_rc_model_t *rate_ctrl_model_pt) {
ToyRateCtrl *toy_rate_ctrl = new (std::nothrow) ToyRateCtrl;
EXPECT_NE(toy_rate_ctrl, nullptr);
toy_rate_ctrl->magic_number = kModelMagicNumber;
toy_rate_ctrl->coding_index = -1;
- *rate_ctrl_model_pt = (vpx_rc_model_t)toy_rate_ctrl;
+ *rate_ctrl_model_pt = toy_rate_ctrl;
EXPECT_EQ(priv, reinterpret_cast<void *>(PrivMagicNumber));
EXPECT_EQ(ratectrl_config->frame_width, 352);
EXPECT_EQ(ratectrl_config->frame_height, 288);
@@ -41,11 +44,12 @@ int rc_create_model(void *priv, const vpx_rc_config_t *ratectrl_config,
EXPECT_EQ(ratectrl_config->target_bitrate_kbps, 24000);
EXPECT_EQ(ratectrl_config->frame_rate_num, 30);
EXPECT_EQ(ratectrl_config->frame_rate_den, 1);
- return 0;
+ return vpx_rc_ok;
}
-int rc_send_firstpass_stats(vpx_rc_model_t rate_ctrl_model,
- const vpx_rc_firstpass_stats_t *first_pass_stats) {
+vpx_rc_status_t rc_send_firstpass_stats(
+ vpx_rc_model_t rate_ctrl_model,
+ const vpx_rc_firstpass_stats_t *first_pass_stats) {
const ToyRateCtrl *toy_rate_ctrl =
static_cast<ToyRateCtrl *>(rate_ctrl_model);
EXPECT_EQ(toy_rate_ctrl->magic_number, kModelMagicNumber);
@@ -53,10 +57,10 @@ int rc_send_firstpass_stats(vpx_rc_model_t rate_ctrl_model,
for (int i = 0; i < first_pass_stats->num_frames; ++i) {
EXPECT_DOUBLE_EQ(first_pass_stats->frame_stats[i].frame, i);
}
- return 0;
+ return vpx_rc_ok;
}
-int rc_get_encodeframe_decision(
+vpx_rc_status_t rc_get_encodeframe_decision(
vpx_rc_model_t rate_ctrl_model,
const vpx_rc_encodeframe_info_t *encode_frame_info,
vpx_rc_encodeframe_decision_t *frame_decision) {
@@ -70,10 +74,24 @@ int rc_get_encodeframe_decision(
if (encode_frame_info->coding_index == 0) {
EXPECT_EQ(encode_frame_info->frame_type, 0 /*kFrameTypeKey*/);
+ EXPECT_EQ(encode_frame_info->ref_frame_valid_list[0],
+ 0); // kRefFrameTypeLast
+ EXPECT_EQ(encode_frame_info->ref_frame_valid_list[1],
+ 0); // kRefFrameTypePast
+ EXPECT_EQ(encode_frame_info->ref_frame_valid_list[2],
+ 0); // kRefFrameTypeFuture
}
if (encode_frame_info->coding_index == 1) {
EXPECT_EQ(encode_frame_info->frame_type, 2 /*kFrameTypeAltRef*/);
+ EXPECT_EQ(encode_frame_info->ref_frame_valid_list[0],
+ 1); // kRefFrameTypeLast
+ EXPECT_EQ(encode_frame_info->ref_frame_valid_list[1],
+ 0); // kRefFrameTypePast
+ EXPECT_EQ(encode_frame_info->ref_frame_valid_list[2],
+ 0); // kRefFrameTypeFuture
+ EXPECT_EQ(encode_frame_info->ref_frame_coding_indexes[0],
+ 0); // kRefFrameTypeLast
}
if (encode_frame_info->coding_index >= 2 &&
@@ -83,6 +101,18 @@ int rc_get_encodeframe_decision(
if (encode_frame_info->coding_index == 5) {
EXPECT_EQ(encode_frame_info->frame_type, 3 /*kFrameTypeOverlay*/);
+ EXPECT_EQ(encode_frame_info->ref_frame_valid_list[0],
+ 1); // kRefFrameTypeLast
+ EXPECT_EQ(encode_frame_info->ref_frame_valid_list[1],
+ 1); // kRefFrameTypePast
+ EXPECT_EQ(encode_frame_info->ref_frame_valid_list[2],
+ 1); // kRefFrameTypeFuture
+ EXPECT_EQ(encode_frame_info->ref_frame_coding_indexes[0],
+ 4); // kRefFrameTypeLast
+ EXPECT_EQ(encode_frame_info->ref_frame_coding_indexes[1],
+ 0); // kRefFrameTypePast
+ EXPECT_EQ(encode_frame_info->ref_frame_coding_indexes[2],
+ 1); // kRefFrameTypeFuture
}
if (encode_frame_info->coding_index == kLosslessCodingIndex) {
// We should get sse == 0 at rc_update_encodeframe_result()
@@ -90,29 +120,29 @@ int rc_get_encodeframe_decision(
} else {
frame_decision->q_index = 100;
}
- return 0;
+ return vpx_rc_ok;
}
-int rc_update_encodeframe_result(
+vpx_rc_status_t rc_update_encodeframe_result(
vpx_rc_model_t rate_ctrl_model,
const vpx_rc_encodeframe_result_t *encode_frame_result) {
const ToyRateCtrl *toy_rate_ctrl =
static_cast<ToyRateCtrl *>(rate_ctrl_model);
EXPECT_EQ(toy_rate_ctrl->magic_number, kModelMagicNumber);
- int64_t ref_pixel_count = 352 * 288 * 3 / 2;
+ const int64_t ref_pixel_count = 352 * 288 * 3 / 2;
EXPECT_EQ(encode_frame_result->pixel_count, ref_pixel_count);
if (toy_rate_ctrl->coding_index == kLosslessCodingIndex) {
EXPECT_EQ(encode_frame_result->sse, 0);
}
- return 0;
+ return vpx_rc_ok;
}
-int rc_delete_model(vpx_rc_model_t rate_ctrl_model) {
+vpx_rc_status_t rc_delete_model(vpx_rc_model_t rate_ctrl_model) {
ToyRateCtrl *toy_rate_ctrl = static_cast<ToyRateCtrl *>(rate_ctrl_model);
EXPECT_EQ(toy_rate_ctrl->magic_number, kModelMagicNumber);
delete toy_rate_ctrl;
- return 0;
+ return vpx_rc_ok;
}
class ExtRateCtrlTest : public ::libvpx_test::EncoderTest,
@@ -146,11 +176,12 @@ TEST_F(ExtRateCtrlTest, EncodeTest) {
cfg_.rc_target_bitrate = 24000;
std::unique_ptr<libvpx_test::VideoSource> video;
- video.reset(new libvpx_test::YUVVideoSource("bus_352x288_420_f20_b8.yuv",
- VPX_IMG_FMT_I420, 352, 288, 30, 1,
- 0, kFrameNum));
+ video.reset(new (std::nothrow) libvpx_test::YUVVideoSource(
+ "bus_352x288_420_f20_b8.yuv", VPX_IMG_FMT_I420, 352, 288, 30, 1, 0,
+ kFrameNum));
ASSERT_NE(video.get(), nullptr);
ASSERT_NO_FATAL_FAILURE(RunLoop(video.get()));
}
+
} // namespace