Define opaque struct of RC class for C
Bug: b:383744068
Change-Id: Ibb44d790f14ae990b5d041d06dda26edcd0cc9f6
diff --git a/av1/ratectrl_rtc.cc b/av1/ratectrl_rtc.cc
index 9861932..7ee58e9 100644
--- a/av1/ratectrl_rtc.cc
+++ b/av1/ratectrl_rtc.cc
@@ -402,46 +402,50 @@
extern "C" {
-void *av1_ratecontrol_rtc_create(const AomAV1RateControlRtcConfig *rc_cfg) {
+AomAV1RateControlRTC *av1_ratecontrol_rtc_create(
+ const AomAV1RateControlRtcConfig *rc_cfg) {
if (rc_cfg == nullptr) return nullptr;
- return aom::AV1RateControlRTC::Create(*rc_cfg).release();
+ return reinterpret_cast<AomAV1RateControlRTC *>(
+ aom::AV1RateControlRTC::Create(*rc_cfg).release());
}
-void av1_ratecontrol_rtc_destroy(void *controller) {
+void av1_ratecontrol_rtc_destroy(AomAV1RateControlRTC *controller) {
delete reinterpret_cast<aom::AV1RateControlRTC *>(controller);
}
bool av1_ratecontrol_rtc_update(
- void *controller, const struct AomAV1RateControlRtcConfig *rc_cfg) {
+ AomAV1RateControlRTC *controller,
+ const struct AomAV1RateControlRtcConfig *rc_cfg) {
if (controller == nullptr || rc_cfg == nullptr) return false;
return reinterpret_cast<aom::AV1RateControlRTC *>(controller)
->UpdateRateControl(*rc_cfg);
}
-int av1_ratecontrol_rtc_get_qp(void *controller) {
+int av1_ratecontrol_rtc_get_qp(const AomAV1RateControlRTC *controller) {
if (controller == nullptr) return 0;
- return reinterpret_cast<aom::AV1RateControlRTC *>(controller)->GetQP();
+ return reinterpret_cast<const aom::AV1RateControlRTC *>(controller)->GetQP();
}
AomAV1LoopfilterLevel av1_ratecontrol_rtc_get_loop_filter_level(
- void *controller) {
+ const AomAV1RateControlRTC *controller) {
if (controller == nullptr) {
return { { 0, 0 }, 0, 0 };
}
- return reinterpret_cast<aom::AV1RateControlRTC *>(controller)
+ return reinterpret_cast<const aom::AV1RateControlRTC *>(controller)
->GetLoopfilterLevel();
}
AomFrameDropDecision av1_ratecontrol_rtc_compute_qp(
- void *controller, const AomAV1FrameParamsRTC *frame_params) {
+ AomAV1RateControlRTC *controller,
+ const AomAV1FrameParamsRTC *frame_params) {
if (controller == nullptr || frame_params == nullptr)
return kAomFrameDropDecisionOk;
return reinterpret_cast<aom::AV1RateControlRTC *>(controller)
->ComputeQP(*frame_params);
}
-void av1_ratecontrol_rtc_post_encode_update(void *controller,
+void av1_ratecontrol_rtc_post_encode_update(AomAV1RateControlRTC *controller,
uint64_t encoded_frame_size) {
if (controller == nullptr) return;
reinterpret_cast<aom::AV1RateControlRTC *>(controller)
@@ -449,18 +453,21 @@
}
bool av1_ratecontrol_rtc_get_segmentation(
- void *controller, AomAV1SegmentationData *segmentation_data) {
+ const AomAV1RateControlRTC *controller,
+ AomAV1SegmentationData *segmentation_data) {
if (controller == nullptr || segmentation_data == nullptr) return false;
- return reinterpret_cast<aom::AV1RateControlRTC *>(controller)
+ return reinterpret_cast<const aom::AV1RateControlRTC *>(controller)
->GetSegmentationData(segmentation_data);
}
-AomAV1CdefInfo av1_ratecontrol_rtc_get_cdef_info(void *controller) {
+AomAV1CdefInfo av1_ratecontrol_rtc_get_cdef_info(
+ const AomAV1RateControlRTC *controller) {
if (controller == nullptr) {
return { 0, 0, 0 };
}
- return reinterpret_cast<aom::AV1RateControlRTC *>(controller)->GetCdefInfo();
+ return reinterpret_cast<const aom::AV1RateControlRTC *>(controller)
+ ->GetCdefInfo();
}
void av1_ratecontrol_rtc_init_ratecontrol_config(
diff --git a/av1/ratectrl_rtc.h b/av1/ratectrl_rtc.h
index 755b7ca..3d0807b 100644
--- a/av1/ratectrl_rtc.h
+++ b/av1/ratectrl_rtc.h
@@ -99,6 +99,9 @@
int scaling_factor_den[kAomAV1MaxSpatialLayers];
} AomAV1RateControlRtcConfig;
+struct AomAV1RateControlRTC;
+typedef struct AomAV1RateControlRTC AomAV1RateControlRTC;
+
#ifdef __cplusplus
namespace aom {
@@ -152,24 +155,27 @@
#ifdef __cplusplus
extern "C" {
#endif
-void *av1_ratecontrol_rtc_create(const AomAV1RateControlRtcConfig *rc_cfg);
-void av1_ratecontrol_rtc_destroy(void *controller);
-bool av1_ratecontrol_rtc_update(void *controller,
+AomAV1RateControlRTC *av1_ratecontrol_rtc_create(
+ const AomAV1RateControlRtcConfig *rc_cfg);
+void av1_ratecontrol_rtc_destroy(AomAV1RateControlRTC *controller);
+bool av1_ratecontrol_rtc_update(AomAV1RateControlRTC *controller,
const AomAV1RateControlRtcConfig *rc_cfg);
-int av1_ratecontrol_rtc_get_qp(void *controller);
+int av1_ratecontrol_rtc_get_qp(const AomAV1RateControlRTC *controller);
AomAV1LoopfilterLevel av1_ratecontrol_rtc_get_loop_filter_level(
- void *controller);
+ const AomAV1RateControlRTC *controller);
AomFrameDropDecision av1_ratecontrol_rtc_compute_qp(
- void *controller, const AomAV1FrameParamsRTC *frame_params);
+ AomAV1RateControlRTC *controller, const AomAV1FrameParamsRTC *frame_params);
-void av1_ratecontrol_rtc_post_encode_update(void *controller,
+void av1_ratecontrol_rtc_post_encode_update(AomAV1RateControlRTC *controller,
uint64_t encoded_frame_size);
bool av1_ratecontrol_rtc_get_segmentation(
- void *controller, AomAV1SegmentationData *segmentation_data);
+ const AomAV1RateControlRTC *controller,
+ AomAV1SegmentationData *segmentation_data);
-AomAV1CdefInfo av1_ratecontrol_rtc_get_cdef_info(void *controller);
+AomAV1CdefInfo av1_ratecontrol_rtc_get_cdef_info(
+ const AomAV1RateControlRTC *controller);
void av1_ratecontrol_rtc_init_ratecontrol_config(
AomAV1RateControlRtcConfig *config);
diff --git a/test/ratectrl_rtc_test.cc b/test/ratectrl_rtc_test.cc
index ff9a28e..18d46ae 100644
--- a/test/ratectrl_rtc_test.cc
+++ b/test/ratectrl_rtc_test.cc
@@ -539,7 +539,7 @@
}
void RcExternMethodsInterfaceTest::TestCreateRateControl() {
- void *controller = av1_ratecontrol_rtc_create(&rc_cfg_);
+ AomAV1RateControlRTC *controller = av1_ratecontrol_rtc_create(&rc_cfg_);
ASSERT_NE(controller, nullptr);
@@ -547,7 +547,7 @@
}
void RcExternMethodsInterfaceTest::TestUpdateRateControl() {
- void *controller = av1_ratecontrol_rtc_create(&rc_cfg_);
+ AomAV1RateControlRTC *controller = av1_ratecontrol_rtc_create(&rc_cfg_);
ASSERT_NE(controller, nullptr);
@@ -561,7 +561,7 @@
frame_params_.temporal_layer_id = 0;
frame_params_.frame_type = kAomKeyFrame;
- void *controller = av1_ratecontrol_rtc_create(&rc_cfg_);
+ AomAV1RateControlRTC *controller = av1_ratecontrol_rtc_create(&rc_cfg_);
ASSERT_NE(controller, nullptr);
const AomFrameDropDecision decision =
@@ -578,7 +578,7 @@
frame_params_.temporal_layer_id = 0;
frame_params_.frame_type = kAomKeyFrame;
- void *controller = av1_ratecontrol_rtc_create(&rc_cfg_);
+ AomAV1RateControlRTC *controller = av1_ratecontrol_rtc_create(&rc_cfg_);
ASSERT_NE(controller, nullptr);
const AomFrameDropDecision decision =
@@ -588,7 +588,7 @@
}
void RcExternMethodsInterfaceTest::TestGetLoopFilterLevelRateControl() {
- void *controller = av1_ratecontrol_rtc_create(&rc_cfg_);
+ AomAV1RateControlRTC *controller = av1_ratecontrol_rtc_create(&rc_cfg_);
ASSERT_NE(controller, nullptr);
AomAV1LoopfilterLevel lpf_level;
@@ -608,7 +608,7 @@
}
void RcExternMethodsInterfaceTest::TestPostEncodeUpdateRateControl() {
- void *controller = av1_ratecontrol_rtc_create(&rc_cfg_);
+ AomAV1RateControlRTC *controller = av1_ratecontrol_rtc_create(&rc_cfg_);
ASSERT_NE(controller, nullptr);
av1_ratecontrol_rtc_post_encode_update(controller, 380);
av1_ratecontrol_rtc_destroy(controller);
@@ -616,7 +616,7 @@
void RcExternMethodsInterfaceTest::TestGetSegmentationDataRateControl() {
rc_cfg_.aq_mode = 1; // VARIANCE_AQ = 1
- void *controller = av1_ratecontrol_rtc_create(&rc_cfg_);
+ AomAV1RateControlRTC *controller = av1_ratecontrol_rtc_create(&rc_cfg_);
ASSERT_NE(controller, nullptr);
AomAV1SegmentationData segmentation_data;
// This should return false as this test case doesn't run any part of the
@@ -627,7 +627,7 @@
}
void RcExternMethodsInterfaceTest::TestGetCdefInfoRateControl() {
- void *controller = av1_ratecontrol_rtc_create(&rc_cfg_);
+ AomAV1RateControlRTC *controller = av1_ratecontrol_rtc_create(&rc_cfg_);
ASSERT_NE(controller, nullptr);
AomAV1CdefInfo cdef_level;
cdef_level.cdef_strength_y = 0xabcd;
@@ -643,7 +643,7 @@
}
void RcExternMethodsInterfaceTest::TestCreateRateControlConfig() {
- void *controller = av1_ratecontrol_rtc_create(&rc_cfg_);
+ AomAV1RateControlRTC *controller = av1_ratecontrol_rtc_create(&rc_cfg_);
ASSERT_NE(controller, nullptr);
AomAV1RateControlRtcConfig config;
@@ -656,7 +656,7 @@
}
void RcExternMethodsInterfaceTest::TestDestroyRateControlRTC() {
- void *controller = av1_ratecontrol_rtc_create(&rc_cfg_);
+ AomAV1RateControlRTC *controller = av1_ratecontrol_rtc_create(&rc_cfg_);
ASSERT_NE(controller, nullptr);
av1_ratecontrol_rtc_destroy(controller);