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);