fixed filter mem leak

This commit is contained in:
Joe Dong
2024-09-10 17:49:52 +08:00
parent ba1f44d5d4
commit aee0d87a78
2 changed files with 8 additions and 10 deletions
@@ -565,5 +565,6 @@ class OBCameraNode {
bool enable_heartbeat_ = false;
bool enable_color_undistortion_ = false;
image_transport::Publisher color_undistortion_publisher_;
std::vector<std::shared_ptr<ob::Filter>> filter_list_;
};
} // namespace orbbec_camera
+7 -10
View File
@@ -425,13 +425,13 @@ void OBCameraNode::setupDevices() {
void OBCameraNode::setupDepthPostProcessFilter() {
auto depth_sensor = device_->getSensor(OB_SENSOR_DEPTH);
// set depth sensor to filter
auto filter_list = depth_sensor->getRecommendedFilters();
if (!filter_list.empty()) {
filter_list_ = depth_sensor->getRecommendedFilters();
if (!filter_list_.empty()) {
RCLCPP_ERROR(logger_, "Failed to get depth sensor filter list");
return;
}
for (size_t i = 0; i < filter_list.size(); i++) {
auto filter = filter_list[i];
for (size_t i = 0; i < filter_list_.size(); i++) {
auto filter = filter_list_[i];
std::map<std::string, bool> filter_params = {
{"DecimationFilter", enable_decimation_filter_},
{"HDRMerge", enable_hdr_merge_},
@@ -1513,11 +1513,8 @@ std::shared_ptr<ob::Frame> OBCameraNode::processDepthFrameFilter(
if (frame == nullptr || frame->getType() != OB_FRAME_DEPTH) {
return nullptr;
}
auto sensor = device_->getSensor(OB_SENSOR_DEPTH);
CHECK_NOTNULL(sensor.get());
auto filter_list = sensor->getRecommendedFilters();
for (size_t i = 0; i < filter_list.size(); i++) {
auto filter = filter_list[i];
for (size_t i = 0; i < filter_list_.size(); i++) {
auto filter = filter_list_[i];
CHECK_NOTNULL(filter.get());
if (filter->isEnabled() && frame != nullptr) {
frame = filter->process(frame);
@@ -2486,4 +2483,4 @@ orbbec_camera_msgs::msg::IMUInfo OBCameraNode::createIMUInfo(
return imu_info;
}
} // namespace orbbec_camera
} // namespace orbbec_camera