public static bool StartStream(Record3DDevice device /*, OnNewFrame onNewFrameCallback, OnStreamStopped onStreamStoppedCallback*/)
        {
            var _frameMetadata = frameMetadata;
            int rgbBuffLength  = _frameMetadata.width * _frameMetadata.height * _frameMetadata.numComponentsPerColorTexturePixel;
            int posBuffLength  = _frameMetadata.width * _frameMetadata.height * _frameMetadata.numComponentsPerPositionTexturePixel;

            rgbBuffer       = new byte[rgbBuffLength];
            positionsBuffer = new float[posBuffLength];

            _OnNewFrame newFrameCallback = (data) =>
            {
                frameWidth  = data.frameWidth;
                frameHeight = data.frameHeight;
                Marshal.Copy(data.rgbFrameBufferPtr, rgbBuffer, 0, rgbBuffer.Length);
                Marshal.Copy(data.depthFrameBufferPtr, positionsBuffer, 0, positionsBuffer.Length);
            };

            _OnStreamStopped streamStoppedCallback = () =>
            {
            };

            bool connectionEstablished = StartStreaming(device, newFrameCallback, streamStoppedCallback);

            return(connectionEstablished);
        }
 private static extern bool StartStreaming(Record3DDevice device, _OnNewFrame onNewFrameCallback, _OnStreamStopped onStreamStoppedCallback);