|
@@ -30,7 +30,8 @@ bool StreamNode::open_stream() {
|
|
|
status_ = StreamStatus::OPEN_FAILED;
|
|
|
return false;
|
|
|
}
|
|
|
- PLOGI.printf("StreamNode [%s]: Stream fps %d", name_.c_str(), demuxer_->get_fps());
|
|
|
+ fps_ = demuxer_->get_fps();
|
|
|
+ PLOGI.printf("StreamNode [%s]: Stream fps %d", name_.c_str(), fps_);
|
|
|
|
|
|
auto codec_id = demuxer_->get_video_codec();
|
|
|
|
|
@@ -189,10 +190,11 @@ void StreamNode::process_stream_folder()
|
|
|
continue; // Skip frame
|
|
|
}
|
|
|
|
|
|
- auto metaData = std::make_shared<meta::MetaData>();
|
|
|
- metaData->image = frame.clone();
|
|
|
- metaData->from = name_;
|
|
|
- send_output_data(metaData);
|
|
|
+ auto frame_data = std::make_shared<meta::FrameData>();
|
|
|
+ frame_data->image = frame.clone();
|
|
|
+ frame_data->from = name_;
|
|
|
+ frame_data->fps = fps_; // Set FPS for folder processing
|
|
|
+ send_output_data(frame_data);
|
|
|
}
|
|
|
status_ == StreamStatus::CLOSED;
|
|
|
PLOGI.printf("StreamNode [%s]: Exiting FOLDER processing loop (Running: %s, Status: %d).",
|
|
@@ -233,10 +235,11 @@ void StreamNode::process_stream_cpu()
|
|
|
continue; // Skip frame
|
|
|
}
|
|
|
|
|
|
- auto metaData = std::make_shared<meta::MetaData>();
|
|
|
- metaData->image = frame.clone();
|
|
|
- metaData->from = name_;
|
|
|
- send_output_data(metaData);
|
|
|
+ auto frame_data = std::make_shared<meta::FrameData>();
|
|
|
+ frame_data->image = frame.clone();
|
|
|
+ frame_data->from = name_;
|
|
|
+ frame_data->fps = fps_;
|
|
|
+ send_output_data(frame_data);
|
|
|
}
|
|
|
PLOGI.printf("StreamNode [%s]: Exiting CPU processing loop (Running: %s, Status: %d).",
|
|
|
name_.c_str(), running_ ? "true" : "false", static_cast<int>(status_));
|
|
@@ -344,13 +347,14 @@ void StreamNode::process_stream_gpu()
|
|
|
continue; // Skip this decoded frame
|
|
|
}
|
|
|
|
|
|
- cv::Mat frame_gpu(decoder_->get_height(), decoder_->get_width(), CV_8UC3, frame_data);
|
|
|
+ cv::Mat frame(decoder_->get_height(), decoder_->get_width(), CV_8UC3, frame_data);
|
|
|
|
|
|
// Create metadata and copy the frame data
|
|
|
- auto metaData = std::make_shared<meta::MetaData>();
|
|
|
- metaData->image = frame_gpu.clone(); // CLONE is crucial here!
|
|
|
- metaData->from = name_;
|
|
|
- send_output_data(metaData);
|
|
|
+ auto frame_data = std::make_shared<meta::FrameData>();
|
|
|
+ frame_data->image = frame.clone(); // CLONE is crucial here!
|
|
|
+ frame_data->from = name_;
|
|
|
+ frame_data->fps = fps_; // Use demuxer FPS for consistency
|
|
|
+ send_output_data(frame_data);
|
|
|
}
|
|
|
if (status_ == StreamStatus::ERROR)
|
|
|
{
|