# Orbbec SDK Configuration File Introduction (OrbbecSDKConfig_v1.0.xml) The Orbbec SDK configuration file is an XML file that defines the global configuration of the Orbbec SDK. Upon initialization, the SDK Context will load a configuration file and apply as global configurations. If you have your own configuration file, you can specify it by entering the file path when calling the Context constructor. If you don't provide a path (or input an empty string), the SDK will look for a file named `OrbbecSDKConfig.xml` in the working directory. If neither the specified file nor the default file is found, the SDK will revert to using the built-in default configuration file. ## Log Configuration Log configuration mainly sets the Log level, the Log level output to the console, the Log level output to a file, configures the path for saving Log files, sets the size of each Log file, and sets the number of Log files. ```cpp 0 0 1 100 3 false ``` ## Memory Configuration ```cpp true 2048 10 10 ``` **Notes** 1. The default size of the memory pool is 2GB (2048MB). ```cpp 2048 ``` 2. The default number of frame buffere queue in the Pipeline is 10. If the host machine processes slowly, the SDK will buffer up to 10 frames internally, which may affect the delay time in retrieving frames by the user. If the delay is significant, you can reduce the number of buffers. ```cpp 10 ``` 3. The default number of queues in the internal processing unit (Processing unit) is 10. If the host machine processes slowly, the SDK will buffer up to 10 frames internally, which may affect the delay time in retrieving frames by the user. If the delay is significant, you can reduce the number of queues. ```cpp 10 ``` ## Global Timestamp Based on the device's timestamp and considering data transmission delays, the timestamp is converted to the system timestamp dimension through linear regression. It can be used to synchronize timestamps of multiple different devices. The implementation plan is as follows: 1. Global timestamp fitter: Regularly obtain the device timestamp and the current system timestamp, and calculate the fitting equation parameters using a linear regression method. 2. Global timestamp converter: Convert the data frame timestamp unit to the same unit as the device timestamp, then calculate the overflow times according to the device timestamp to convert to a 64-bit timestamp, and then convert to a global timestamp according to the fitting parameters output by the global timestamp fitter. ```cpp true 1000 100 ``` 1. By default, the device time is obtained every eight seconds to update the global timestamp fitter. ```cpp 1000 ``` 2. The default queue size of the global timestamp fitter is 10. ```cpp 100 ``` **Notes** 1. The global timestamp mainly supports the Gemini 330 series. Gemini 2, Gemini 2L, Femto Mega, and Femto Bolt are also supported but not thoroughly tested. If there are stability issues with these devices, the global timestamp function can be turned off. ```cpp false ``` ## Pipeline Configuration ```cpp true true ``` 1. Pipeline primarily sets which video streams to enable. By default, only Depth and Color streams are enabled. You can add to enable IR streams, left IR, and right IR as follows. ```cpp true true true ``` ## Device Configuration ```cpp true LibUVC 0 0 5000 2000 848 480 30 Y16 1280 720 30 MJPG 848 480 30 Y8 848 480 30 Y8 848 480 30 Y8 ``` 1. Set whether to enumerate network devices. Femto Mega and Gemini 2 XL support network functions. If you need to use the network functions of these two devices, you can set this to true. ```cpp true ``` 2. Set whether to use LibUVC or V4L2 to receive data on Linux or ARM. V4L2 is not supported by all devices, and we recommend using LibUVC. The Gemini 330 series devices support V4L2, but kernel patches are needed to obtain Metadata data. ```cpp LibUVC ``` 3. Set the resolution, frame rate, and data format.