-
Notifications
You must be signed in to change notification settings - Fork 4.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
pipeline Frame Buffering Management in RealSense SDK 2.0 #10677
Comments
Hi @SowisLiuYiming The frame queue capacity can be set with SDK script code. C++ - see under the 'librealsense2' heading |
@MartyG-RealSense Here is my code: std::thread t(& {
} |
Some RealSense users have had good results with a frame queue capacity value of '50' instead of '5'. Instead of sleeping for '50', do you get better results if you use for (int i = 0; i < 50; i++) { to do nothing for 50 frames. It might look something like this:
|
Changing the frame queue capacity value to "50" does not solve the problem.
|
Is the bool isRet made true by the instruction bool isRet; ? Assuming that the script has to pass through the 'unFilter' section of code before it can reach the instruction that makes isRet true, does performance improve if you comment out the unFilter.get_data() instruction to see whether that instruction is causing a delay?
|
// unFilter.get_data(); Original Code("pipeline.poll_for_frames(&frameset) return true" timeout probability:0.5%):
Now Code add queue("pipeline.poll_for_frames(&frameset) return true" timeout probability:30%):
|
The SDK has a C++ instruction called rs2_release_frame() https://github.com/IntelRealSense/librealsense/blob/master/src/rs.cpp#L1024-L1028 Alternatively, performing a pipeline.Stop() releases all the resources in the pipeline. |
Thanks for sharing the SDK. I have used both SDKS. |
You mentioned earlier in this discussion that "When a hub is used to connect multiple sensors, frames will sometimes be lost when obtaining frames". Did you build the SDK from source code with RSUSB backend set to True, please? If you did, then the RSUSB backend installation method is not best suited to use with multiple cameras. For multicam applications, It is better to perform a 'native' source code build (RSUSB = false) where the kernel is patched. For a comparison of the advantages and disadvantages of these two installation methods, you can visit #5212 (comment) and scroll down to the section headed What are the advantages and disadvantages of using libuvc vs patched kernel modules? |
Hi @SowisLiuYiming Do you require further assistance with this case, please? Thanks! |
Case closed due to no further comments received. |
Before opening a new issue, we wanted to provide you with some useful suggestions (Click "Preview" above for a better view):
All users are welcomed to report bugs, ask questions, suggest or request enhancements and generally feel free to open new issue, even if they haven't followed any of the suggestions above :)
Issue Description
<Describe your issue / question / feature request / etc..>
I am investigating frame buffer management in pipelines. I saw the Web 。
https://github.com/IntelRealSense/librealsense/wiki/Frame-Buffering-Management-in-RealSense-SDK-2.0
I know the pipeline is a synchronized platform, it contains a frame queue that buffers the received frames.
The pipeline does not expose an API for setting the frame queue capacity, if the user wish to set the capacity to a value that is more compatible for his needs it can be done by changing the source code: pipeline_processing_block::pipeline_processing_block()
But I can't find this method in the code(librealsense-2.38.1\src).
problem:pipeline_processing_block::pipeline_processing_block() Which file is this method in? How is it called?
The text was updated successfully, but these errors were encountered: