Use correct base q for tpl pass in DuckyEncode
Bug: b/244730922
Change-Id: I51af27ac6059ac2c987bb493006edd5833d220e9
diff --git a/av1/ducky_encode.cc b/av1/ducky_encode.cc
index 5bfc124..a4fa2f8 100644
--- a/av1/ducky_encode.cc
+++ b/av1/ducky_encode.cc
@@ -47,6 +47,7 @@
int g_usage;
int max_ref_frames;
int speed;
+ int base_qindex;
enum aom_rc_mode rc_end_usage;
aom_rational64_t timestamp_ratio;
std::vector<FIRSTPASS_STATS> stats_list;
@@ -54,12 +55,13 @@
};
DuckyEncode::DuckyEncode(const VideoInfo &video_info, int max_ref_frames,
- int speed) {
+ int speed, int base_qindex) {
impl_ptr_ = std::unique_ptr<EncodeImpl>(new EncodeImpl());
impl_ptr_->video_info = video_info;
impl_ptr_->g_usage = GOOD;
impl_ptr_->max_ref_frames = max_ref_frames;
impl_ptr_->speed = speed;
+ impl_ptr_->base_qindex = base_qindex;
impl_ptr_->rc_end_usage = AOM_Q;
// TODO(angiebird): Set timestamp_ratio properly
// timestamp_ratio.den = cfg->g_timebase.den;
@@ -455,7 +457,8 @@
// encoding frame frame_number
aom::EncodeFrameDecision frame_decision = { aom::EncodeFrameMode::kQindex,
aom::EncodeGopMode::kGopRcl,
- { 128, -1 } };
+ { impl_ptr_->base_qindex,
+ -1 } };
(void)frame;
EncodeFrame(frame_decision);
if (ppi->cpi->common.show_frame) pending_ctx_size_ = 0;
diff --git a/av1/ducky_encode.h b/av1/ducky_encode.h
index ffa53b0..086681b 100644
--- a/av1/ducky_encode.h
+++ b/av1/ducky_encode.h
@@ -74,7 +74,7 @@
class DuckyEncode {
public:
explicit DuckyEncode(const VideoInfo &video_info, int max_ref_frames,
- int speed = 3);
+ int speed, int base_qindex);
~DuckyEncode();
std::vector<FIRSTPASS_STATS> ComputeFirstPassStats();
void StartEncode(const std::vector<FIRSTPASS_STATS> &stats_list);
diff --git a/test/ducky_encode_test.cc b/test/ducky_encode_test.cc
index ce64253..fe4ddf3 100644
--- a/test/ducky_encode_test.cc
+++ b/test/ducky_encode_test.cc
@@ -35,7 +35,7 @@
1, "bus_352x288_420_f20_b8.yuv" };
video_info.file_path =
libaom_test::GetDataPath() + "/" + video_info.file_path;
- DuckyEncode ducky_encode(video_info, kMaxRefFrames);
+ DuckyEncode ducky_encode(video_info, kMaxRefFrames, 3, 128);
std::vector<FIRSTPASS_STATS> frame_stats =
ducky_encode.ComputeFirstPassStats();
EXPECT_EQ(frame_stats.size(), static_cast<size_t>(video_info.frame_count));
@@ -52,7 +52,7 @@
17, "bus_352x288_420_f20_b8.yuv" };
video_info.file_path =
libaom_test::GetDataPath() + "/" + video_info.file_path;
- DuckyEncode ducky_encode(video_info, kMaxRefFrames);
+ DuckyEncode ducky_encode(video_info, kMaxRefFrames, 3, 128);
std::vector<FIRSTPASS_STATS> frame_stats =
ducky_encode.ComputeFirstPassStats();
ducky_encode.StartEncode(frame_stats);
@@ -78,7 +78,7 @@
17, "bus_352x288_420_f20_b8.yuv" };
video_info.file_path =
libaom_test::GetDataPath() + "/" + video_info.file_path;
- DuckyEncode ducky_encode(video_info, kMaxRefFrames);
+ DuckyEncode ducky_encode(video_info, kMaxRefFrames, 3, 128);
std::vector<FIRSTPASS_STATS> frame_stats =
ducky_encode.ComputeFirstPassStats();
ducky_encode.StartEncode(frame_stats);
diff --git a/test/ratectrl_qmode_test.cc b/test/ratectrl_qmode_test.cc
index 6d11f59..71d858c 100644
--- a/test/ratectrl_qmode_test.cc
+++ b/test/ratectrl_qmode_test.cc
@@ -1036,6 +1036,7 @@
AV1RateControlQMode rc;
rc_param_.max_gop_show_frame_count = 16;
rc_param_.max_ref_frames = 3;
+ rc_param_.base_q_index = 117;
ASSERT_THAT(rc.SetRcParam(rc_param_), IsOkStatus());
const auto gop_info = rc.DetermineGopInfo(firstpass_info);
ASSERT_THAT(gop_info.status(), IsOkStatus());
@@ -1046,7 +1047,8 @@
frame_rate, AOM_IMG_FMT_I420,
50, libaom_test::GetDataPath() + "/hantro_collage_w352h288.yuv"
};
- DuckyEncode ducky_encode(input_video, 3, 3);
+ DuckyEncode ducky_encode(input_video, rc_param_.max_ref_frames, 3,
+ rc_param_.base_q_index);
ducky_encode.StartEncode(firstpass_info.stats_list);
// Read TPL stats
std::vector<TplGopStats> tpl_gop_list =