Add max_ref_frames and max_depth paramters to API
They are not yet implemented (or even validated) and should not be
until all callers of the API populate them.
Bug: b/240412144
Change-Id: I126265cc1dbd6108e052fb4587d9fa702097362b
diff --git a/av1/ratectrl_qmode_interface.h b/av1/ratectrl_qmode_interface.h
index 316a699..1e4e5c6 100644
--- a/av1/ratectrl_qmode_interface.h
+++ b/av1/ratectrl_qmode_interface.h
@@ -30,10 +30,19 @@
};
struct RateControlParam {
+ // Range of allowed GOP sizes (number of displayed frames).
int max_gop_show_frame_count;
int min_gop_show_frame_count;
- int ref_frame_table_size; // number of reference frame buffers
+ // Number of reference frame buffers, i.e., size of the DPB.
+ int ref_frame_table_size;
+ // Maximum number of references a single frame may use.
+ int max_ref_frames;
+ // Maximum pyramid depth. e.g., 1 means only one ARF per GOP,
+ // 2 would allow an additional level of intermediate ARFs.
+ int max_depth;
+
int base_q_index;
+
int frame_width;
int frame_height;
};
diff --git a/test/ratectrl_qmode_test.cc b/test/ratectrl_qmode_test.cc
index 1678beb..60a230f 100644
--- a/test/ratectrl_qmode_test.cc
+++ b/test/ratectrl_qmode_test.cc
@@ -950,6 +950,8 @@
RateControlParam rc_param = {};
rc_param.max_gop_show_frame_count = 8;
rc_param.ref_frame_table_size = 3;
+ rc_param.max_ref_frames = 3;
+ rc_param.max_depth = 3;
rc_param.frame_width = 128;
rc_param.frame_height = 128;
ASSERT_THAT(rc.SetRcParam(rc_param), IsOkStatus());
@@ -984,6 +986,8 @@
RateControlParam rc_param = {};
rc_param.max_gop_show_frame_count = 8;
rc_param.ref_frame_table_size = 3;
+ rc_param.max_ref_frames = 3;
+ rc_param.max_depth = 3;
rc_param.frame_height = 128;
rc_param.frame_width = 128;
ASSERT_THAT(rc.SetRcParam(rc_param), IsOkStatus());
@@ -1024,6 +1028,8 @@
rc_param.max_gop_show_frame_count = 32;
rc_param.min_gop_show_frame_count = 4;
rc_param.ref_frame_table_size = 7;
+ rc_param.max_ref_frames = 7;
+ rc_param.max_depth = 5;
ASSERT_THAT(rc.SetRcParam(rc_param), IsOkStatus());
const auto gop_info = rc.DetermineGopInfo(firstpass_info);
@@ -1051,6 +1057,8 @@
rc_param.max_gop_show_frame_count = 16;
rc_param.min_gop_show_frame_count = 4;
rc_param.ref_frame_table_size = 7;
+ rc_param.max_ref_frames = 7;
+ rc_param.max_depth = 5;
// Just an arbitrary base qp for the test.
rc_param.base_q_index = 128;
ASSERT_THAT(rc.SetRcParam(rc_param), IsOkStatus());