public static void WriteDeviceConfig <T>(this PXCMCapture.Device device, T metaData, CaptureMode captureMode) where T : DS4Meta
        {
            int backLightCompensation = device.QueryColorBackLightCompensation();
            int brightness            = device.QueryColorBrightness();
            int contrast = device.QueryColorContrast();

            PXCMRangeF32 depthRange    = device.QueryDepthSensorRange();
            float        minDepthRange = depthRange.min;
            float        maxDepthRange = depthRange.max;

            ushort confidenceThreshold = device.QueryDepthConfidenceThreshold();

            bool autoExposure  = device.QueryColorAutoExposure();
            bool autoPowerline = device.QueryColorAutoPowerLineFrequency();

            int colorExposure = device.QueryColorExposure();
            int colorGain     = device.QueryColorGain();

            float depthExposure = device.QueryDSLeftRightExposure();
            int   depthGain     = device.QueryDSLeftRightGain();

            var  depthExposureInfo = device.QueryDSLeftRightExposureInfo();
            bool depthAutoExposure = depthExposureInfo.automatic;

            metaData.DeviceConfig.BackLightCompensation = backLightCompensation;
            metaData.DeviceConfig.minDepthRange         = minDepthRange;
            metaData.DeviceConfig.maxDepthRange         = maxDepthRange;
            metaData.DeviceConfig.colorAutoExposure     = autoExposure;
            metaData.DeviceConfig.depthAutoExposure     = depthAutoExposure;

            metaData.DeviceConfig.ColorExposure = (float)colorExposure;
            metaData.DeviceConfig.ColorGain     = colorGain;

            if (metaData.DeviceConfig.DepthExposure == 0)
            {
                metaData.DeviceConfig.DepthExposure = 33.3f;
                metaData.DeviceConfig.DepthGain     = 1;
            }
            //{
            //    BackLightCompensation = backLightCompensation,
            //    Brightness = brightness,
            //    Contrast = contrast,
            //    minDepthRange = minDepthRange,
            //    maxDepthRange = maxDepthRange,
            //    confidenceThreshold = confidenceThreshold,
            //    autoPowerline = autoPowerline,

            //    colorAutoExposure = autoExposure,
            //    depthAutoExposure = depthAutoExposure,

            //    ColorExposure = (float)colorExposure,
            //    ColorGain = colorGain,
            //    DepthExposure = depthExposure,
            //    DepthGain = depthGain
            //};

            metaData.CaptureMode = captureMode.ToString().ToLower();
        }