My mobile workstation has 2 display adapters: Intel630 and QuadroP1000. We used to have SDK 2018 integrated in our component, now we use SDK 2020. On both SDK version I have been experiencing difficulty with streaming from XProtect channels when both adapters are enabled. I need to disable integrated display adapter Intel630 for the camera stream to start. Otherwise I get an attempt to connect to the camera, but no video and the following exception thrown:
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> VideoOS.Platform.Primitives.Error: NmTimeStamp::CmTimeStamp::CmTimeStamp (line TimeStamp/win32/TimeStamp-OSD.cpp, 742): Error initializing time stamp. Invalid number of milliseconds given!
at msclr.interop.marshal_as<class NmTimeStamp::CmTimeStamp,class System::DateTime>(CmTimeStamp* , DateTime* const_stamp)
at VideoOS.Toolkit.RendererToolkit.MoveTo(Int32 sourceToMove, DateTime timeStamp)
at VideoOS.UI.Common.WPF.VideoPlayer.Toolkit.ToolkitWrapper.ExecuteSourceOperation(MoveToSourceOperation moveToSourceOperation)
at VideoOS.UI.Common.WPF.VideoPlayer.Toolkit.VideoImage.VideoImageManager.VideoImageMoveTo(VideoImage videoImage, DateTime timeStamp)
at VideoOS.UI.Common.WPF.VideoPlayer.Toolkit.ToolkitVideoSource.MoveTo(DateTime timeStamp)
at VideoOS.UI.Common.WPF.VideoPlayer.VideoPlayer.PlaybackMoveTo(DateTime timeStamp)
at VideoOS.Platform.SDK.UI.DirectX.ImageViewerDirectX.GoTo(Double nImageMilliseconds)
at VideoOS.Platform.SDK.UI.SDKImageViewerControl.ImageViewerGoto(DateTime gotoTime)
at VideoOS.Platform.SDK.UI.SDKImageViewerControl.ImageViewer_onConnectResponseReceived(Object sender, OnConnectResponseReceivedEventArgs e)
at System.EventHandler`1.Invoke(Object sender, TEventArgs e)
at VideoOS.Platform.SDK.UI.DirectX.ImageViewerDirectX.set_Connected(Boolean value)
at System.EventHandler`1.Invoke(Object sender, TEventArgs e)
at System.EventHandler`1.Invoke(Object sender, TEventArgs e)
at System.EventHandler.Invoke(Object sender, EventArgs e)
at VideoOS.UI.Common.WPF.VideoPlayer.Model.VideoFeedModel.set_ConnectionState(ConnectionState value)
at VideoOS.UI.Common.WPF.VideoPlayer.Toolkit.ToolkitVideoSource._videoImage_ConnectionStateChanged(Object sender, EventArgs e)
at System.EventHandler.Invoke(Object sender, EventArgs e)
at VideoOS.UI.Common.WPF.VideoPlayer.Toolkit.VideoImage.VideoImage.set_ConnectionState(ConnectionState value)
at VideoOS.UI.Common.WPF.VideoPlayer.Toolkit.VideoImage.VideoImageManager.<>c__DisplayClass52_0.<_toolkitWrapper_SourceStateChanged>b__0()
We tried to enforce the Milestone SDK to use nvidia display adapter with the trick found here: https://developer.milestonesys.com/s/article/Smart-Client-hardware-acceleration-GPU-switch
VideoOS.Platform.EnvironmentOptions.OptionHardwareDecodingModeOnlyNvidia
but no luck, it doesn’t make a difference for my workstation. Below is my workstation’s specs. Do You have any clue what is the reason of the exception? All in all it may be something more than the Intel630 fault.
computer model: HP Zbook G5 (intel630 and QuadroP1000)
os: Windows 10 20H2 19042.928
intel630 drivers: 27.20.100.8853 (device manager)
intel chipset drivers: 10.1.18121.8164
official nvidia drivers not installed:
intel630 enabled, quadroP1000 enabled - does not stream
intel630 disabled, quadroP1000 enabled - streams
official nvidia drivers installed 462.59-quadro-rtx-desktop-notebook-win10-64bit-international-dch-whql:
intel630 enabled, quadroP1000 enabled - does not stream
intel630 disabled, quadroP1000 enabled - streams