fix: restart playback streams on loop

This commit is contained in:
slz
2026-06-16 18:31:58 +08:00
parent 7af4470b28
commit 8b261fce77
3 changed files with 23 additions and 1 deletions
@@ -192,6 +192,8 @@ class OBCameraNode {
void startIMU(); void startIMU();
void restartPlaybackStreams();
int openSocSyncPwmTrigger(uint16_t fps); int openSocSyncPwmTrigger(uint16_t fps);
int closeSocSyncPwmTrigger(); int closeSocSyncPwmTrigger();
void startGmslTrigger(); void startGmslTrigger();
+20
View File
@@ -3303,6 +3303,26 @@ void OBCameraNode::startIMU() {
} }
} }
void OBCameraNode::restartPlaybackStreams() {
if (!is_playback_device_ || !is_running_.load()) {
return;
}
try {
stopStreams();
startStreams();
stopIMU();
startIMU();
} catch (const ob::Error &e) {
RCLCPP_WARN_STREAM(logger_, "Failed to restart playback streams: "
<< orbbec_camera::formatObErrorWithStatus(e));
} catch (const std::exception &e) {
RCLCPP_WARN_STREAM(logger_, "Failed to restart playback streams: " << e.what());
} catch (...) {
RCLCPP_WARN_STREAM(logger_, "Failed to restart playback streams");
}
}
void OBCameraNode::stopStreams() { void OBCameraNode::stopStreams() {
std::lock_guard<decltype(device_lock_)> lock(device_lock_); std::lock_guard<decltype(device_lock_)> lock(device_lock_);
+1 -1
View File
@@ -1023,7 +1023,7 @@ void OBCameraNodeDriver::initializeBagPlayback() {
try { try {
playback_device_->seek(0); playback_device_->seek(0);
if (ob_camera_node_) { if (ob_camera_node_) {
ob_camera_node_->startStreams(); ob_camera_node_->restartPlaybackStreams();
} }
} catch (const ob::Error &e) { } catch (const ob::Error &e) {
RCLCPP_WARN_STREAM(logger_, "Failed to restart bag playback: " RCLCPP_WARN_STREAM(logger_, "Failed to restart bag playback: "