aboutsummaryrefslogtreecommitdiff
path: root/test/vp9_ext_ratectrl_test.cc
diff options
context:
space:
mode:
Diffstat (limited to 'test/vp9_ext_ratectrl_test.cc')
-rw-r--r--test/vp9_ext_ratectrl_test.cc31
1 files changed, 23 insertions, 8 deletions
diff --git a/test/vp9_ext_ratectrl_test.cc b/test/vp9_ext_ratectrl_test.cc
index 2bfa6281d..33fa05c65 100644
--- a/test/vp9_ext_ratectrl_test.cc
+++ b/test/vp9_ext_ratectrl_test.cc
@@ -18,6 +18,7 @@
#include "third_party/googletest/src/include/gtest/gtest.h"
#include "vp9/simple_encode.h"
#include "vpx/vpx_ext_ratectrl.h"
+#include "vpx/vpx_tpl.h"
#include "vpx_dsp/vpx_dsp_common.h"
namespace {
@@ -41,7 +42,7 @@ constexpr int kDefaultMaxGfInterval = 16;
constexpr int kReadMinGfInterval = 5;
constexpr int kReadMaxGfInterval = 13;
const char kTestFileName[] = "bus_352x288_420_f20_b8.yuv";
-const double kPsnrThreshold = 30.50;
+const double kPsnrThreshold = 30.4;
struct ToyRateCtrl {
int magic_number;
@@ -151,6 +152,19 @@ vpx_rc_status_t rc_send_firstpass_stats_gop_short(
return VPX_RC_OK;
}
+vpx_rc_status_t rc_send_tpl_gop_stats(vpx_rc_model_t rate_ctrl_model,
+ const VpxTplGopStats *tpl_gop_stats) {
+ const ToyRateCtrl *toy_rate_ctrl =
+ static_cast<ToyRateCtrl *>(rate_ctrl_model);
+ EXPECT_EQ(toy_rate_ctrl->magic_number, kModelMagicNumber);
+ EXPECT_GT(tpl_gop_stats->size, 0);
+
+ for (int i = 0; i < tpl_gop_stats->size; ++i) {
+ EXPECT_GT(tpl_gop_stats->frame_stats_list[i].num_blocks, 0);
+ }
+ return VPX_RC_OK;
+}
+
vpx_rc_status_t rc_get_encodeframe_decision(
vpx_rc_model_t rate_ctrl_model,
const vpx_rc_encodeframe_info_t *encode_frame_info,
@@ -384,7 +398,7 @@ vpx_rc_status_t rc_get_encodeframe_decision_gop_short_overlay(
EXPECT_EQ(encode_frame_info->show_index, 3);
EXPECT_EQ(encode_frame_info->gop_index, 0);
EXPECT_EQ(encode_frame_info->frame_type, vp9::kFrameTypeOverlay);
- EXPECT_EQ(toy_rate_ctrl->gop_global_index, 2);
+ EXPECT_EQ(toy_rate_ctrl->gop_global_index, 1);
}
// When the model recommends an invalid q, valid range [0, 255],
@@ -678,7 +692,7 @@ class ExtRateCtrlTest : public ::libvpx_test::EncoderTest,
void PreEncodeFrameHook(::libvpx_test::VideoSource *video,
::libvpx_test::Encoder *encoder) override {
if (video->frame() == 0) {
- vpx_rc_funcs_t rc_funcs;
+ vpx_rc_funcs_t rc_funcs = {};
rc_funcs.rc_type = VPX_RC_QP;
rc_funcs.create_model = rc_create_model;
rc_funcs.send_firstpass_stats = rc_send_firstpass_stats;
@@ -721,10 +735,11 @@ class ExtRateCtrlTestGOP : public ::libvpx_test::EncoderTest,
encoder->Control(VP9E_SET_MIN_GF_INTERVAL, kDefaultMinGfInterval);
encoder->Control(VP9E_SET_MAX_GF_INTERVAL, kDefaultMaxGfInterval);
- vpx_rc_funcs_t rc_funcs;
+ vpx_rc_funcs_t rc_funcs = {};
rc_funcs.rc_type = VPX_RC_GOP_QP;
rc_funcs.create_model = rc_create_model_gop;
rc_funcs.send_firstpass_stats = rc_send_firstpass_stats_gop;
+ rc_funcs.send_tpl_gop_stats = rc_send_tpl_gop_stats;
rc_funcs.get_encodeframe_decision = rc_get_encodeframe_decision_gop;
rc_funcs.get_gop_decision = rc_get_gop_decision;
rc_funcs.update_encodeframe_result = rc_update_encodeframe_result_gop;
@@ -768,7 +783,7 @@ class ExtRateCtrlTestGOPShort : public ::libvpx_test::EncoderTest,
encoder->Control(VP9E_SET_MAX_GF_INTERVAL, kDefaultMaxGfInterval);
encoder->Control(VP9E_SET_TARGET_LEVEL, vp9::LEVEL_AUTO);
- vpx_rc_funcs_t rc_funcs;
+ vpx_rc_funcs_t rc_funcs = {};
rc_funcs.rc_type = VPX_RC_GOP_QP;
rc_funcs.create_model = rc_create_model_gop_short;
rc_funcs.send_firstpass_stats = rc_send_firstpass_stats_gop_short;
@@ -816,7 +831,7 @@ class ExtRateCtrlTestGOPShortOverlay
encoder->Control(VP9E_SET_MAX_GF_INTERVAL, kDefaultMaxGfInterval);
encoder->Control(VP9E_SET_TARGET_LEVEL, vp9::LEVEL_AUTO);
- vpx_rc_funcs_t rc_funcs;
+ vpx_rc_funcs_t rc_funcs = {};
rc_funcs.rc_type = VPX_RC_GOP_QP;
rc_funcs.create_model = rc_create_model_gop_short;
rc_funcs.send_firstpass_stats = rc_send_firstpass_stats_gop_short;
@@ -865,7 +880,7 @@ class ExtRateCtrlTestGOPShortNoARF
encoder->Control(VP9E_SET_MAX_GF_INTERVAL, kDefaultMaxGfInterval);
encoder->Control(VP9E_SET_TARGET_LEVEL, vp9::LEVEL_AUTO);
- vpx_rc_funcs_t rc_funcs;
+ vpx_rc_funcs_t rc_funcs = {};
rc_funcs.rc_type = VPX_RC_GOP_QP;
rc_funcs.create_model = rc_create_model_gop_short;
rc_funcs.send_firstpass_stats = rc_send_firstpass_stats_gop_short;
@@ -919,7 +934,7 @@ class ExtRateCtrlTestRdmult : public ::libvpx_test::EncoderTest,
void PreEncodeFrameHook(::libvpx_test::VideoSource *video,
::libvpx_test::Encoder *encoder) override {
if (video->frame() == 0) {
- vpx_rc_funcs_t rc_funcs;
+ vpx_rc_funcs_t rc_funcs = {};
rc_funcs.rc_type = VPX_RC_GOP_QP_RDMULT;
rc_funcs.create_model = rc_create_model_gop_short;
rc_funcs.send_firstpass_stats = rc_send_firstpass_stats_gop_short;