mirror of
https://github.com/orbbec/OrbbecSDK_ROS2.git
synced 2026-10-04 03:57:46 +08:00
Update skip color implementation
This commit is contained in:
@@ -653,16 +653,12 @@ class OBCameraNode {
|
||||
int laser_index0_ir_brightness_ = 60;
|
||||
int laser_index0_ir_ae_max_exposure_ = 17000;
|
||||
|
||||
int interleave_skip_color_index_ = 1;
|
||||
int interleave_skip_depth_index_ = 1;
|
||||
|
||||
double delta_duration_us_ = 1000.0;
|
||||
int delta_fps_ = 2;
|
||||
VideoStreamInfo color_stream_info_ = {OB_FRAME_COLOR, 0};
|
||||
VideoStreamInfo depth_stream_info_ = {OB_FRAME_DEPTH, 0};
|
||||
VideoStreamInfo left_ir_stream_info_ = {OB_FRAME_IR_LEFT, 0};
|
||||
VideoStreamInfo right_ir_stream_info_ = {OB_FRAME_IR_RIGHT, 0};
|
||||
uint64_t left_last_time=0;
|
||||
uint64_t right_last_time=0;
|
||||
uint64_t depth_last_time_ = 0;
|
||||
};
|
||||
} // namespace orbbec_camera
|
||||
|
||||
@@ -2165,11 +2165,10 @@ void OBCameraNode::onNewFrameCallback(const std::shared_ptr<ob::Frame> &frame,
|
||||
std::shared_ptr<ob::VideoFrame> video_frame;
|
||||
if (frame->getType() == OB_FRAME_COLOR) {
|
||||
if (interleave_frame_enable_ && interleave_skip_enable_) {
|
||||
interleave_skip_color_index_++;
|
||||
if (interleave_skip_color_index_ % 2 == 0) {
|
||||
if (std::abs(static_cast<int64_t>(getFrameTimestampUs(frame)) -
|
||||
static_cast<int64_t>(depth_last_time_)) < 4000) {
|
||||
return;
|
||||
}
|
||||
// updateStreamInfo(frame, color_stream_info_);
|
||||
}
|
||||
video_frame = frame->as<ob::ColorFrame>();
|
||||
} else if (frame->getType() == OB_FRAME_DEPTH) {
|
||||
@@ -2177,6 +2176,7 @@ void OBCameraNode::onNewFrameCallback(const std::shared_ptr<ob::Frame> &frame,
|
||||
if (interleave_frame_enable_ && interleave_skip_enable_) {
|
||||
if (video_frame->getMetadataValue(OB_FRAME_METADATA_TYPE_LASER_POWER_MODE) ==
|
||||
interleave_skip_index_) {
|
||||
depth_last_time_ = getFrameTimestampUs(frame);
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -2188,27 +2188,6 @@ void OBCameraNode::onNewFrameCallback(const std::shared_ptr<ob::Frame> &frame,
|
||||
if (video_frame->getMetadataValue(OB_FRAME_METADATA_TYPE_LASER_POWER_MODE) !=
|
||||
interleave_skip_index_) {
|
||||
return;
|
||||
} else {
|
||||
if (frame->getType() == OB_FRAME_IR_LEFT) {
|
||||
if ((getFrameTimestampUs(frame) - left_last_time) > 37000) {
|
||||
RCLCPP_WARN_STREAM(logger_,
|
||||
"left this FrameTimestampUs: " << (getFrameTimestampUs(frame)));
|
||||
RCLCPP_WARN_STREAM(logger_, "left last FrameTimestampUs: " << (left_last_time));
|
||||
RCLCPP_WARN_STREAM(logger_, "left-between current and previous fram "
|
||||
<< (getFrameTimestampUs(frame) - left_last_time));
|
||||
}
|
||||
left_last_time = getFrameTimestampUs(frame);
|
||||
}
|
||||
if (frame->getType() == OB_FRAME_IR_RIGHT) {
|
||||
if ((getFrameTimestampUs(frame) - right_last_time) > 37000) {
|
||||
RCLCPP_WARN_STREAM(logger_,
|
||||
"right this FrameTimestampUs: " << (getFrameTimestampUs(frame)));
|
||||
RCLCPP_WARN_STREAM(logger_, "right last FrameTimestampUs: " << (right_last_time));
|
||||
RCLCPP_WARN_STREAM(logger_, "right-between current and previous fram "
|
||||
<< (getFrameTimestampUs(frame) - right_last_time));
|
||||
}
|
||||
right_last_time = getFrameTimestampUs(frame);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user