Introduction
Introduction to MIP SDK 2018 R2
Discontinuation
2018 releases will be the last MIP SDK releases to include the following components: ImageViewer, AudioPlayer, EngineManager ActiveXs and the "UseActiveX" environment option.
Existing applications using these components should not be affected during 2018 since maintenance work on these components will continue until 2019 R1, but with no new functionality added.
With MIP SDK 2019 R1 these components will be officially discontinued and will no longer be included in the MIP SDK. For Web and C++ development, we strongly recommend developers to already now start using the Mobile Server interface instead. As for Windows based applications, we recommend using the ImageViewerControl or ImageViewerWpfControl .NET controls.
MIPSDK General
- A new class, WAVExporter, for exporting audio without video has been added. It makes it possible to export one or multiple audio streams to a WAV file. As an example, it is possible to mix a combination of speaker output and microphone input.
- For some internal event types, the Data object sent with NewEventsIndication will now be of type AnalyticsEvent, and thereby include extra metadata such as window and event index information in the ObjectList property. This, among other things, makes it possible to better identify the source of an event. AnalyticsEvent derives from BaseEvent, which was the object type used so far, and thus existing integrations will continue to work unaffected by this change.
Component Integrations
- In previous versions, if an environment that is needed was not initialized by the integration, the standalone SDK would attempt to automatically load and initialize the required environments.
Due to security reasons, this has been removed. Therefore, an integration that is not itself doing all the necessary initializations will now get an exception, whereby in previous versions of the SDK, it would have run without problems. - Due to a shortcoming in the NVIDIA libraries being used, all calls to a toolkit instance, utilizing NVIDIA graphics cards, must come from the thread that created the toolkit instance. If this is not followed, you are likely to get the result NOT_MOVED.
This can also happen with certain SDK classes utilizing the toolkits and in that case you should rewrite your code to only access each instance from one thread. - Speaker support added to the AudioPlayerControl. A property identifying which speaker to be used has been added to the control. This allows for playback of speakers as well as microphones.
- The Control.DriverResponse message has now also been implemented for the standalone environment, thus enabling custom commands to return a response.
Configuration API
- It is now possible to create, modify and delete alarm definitions through the Configuration API as well as through the VideoOS.Platform.ConfigurationItems.AlarmDefinitionFolder and VideoOS.Platform.ConfigurationItems.AlarmDefinition strongly typed classes.
- User permissions for user defined events can now be edited through the Configuration API.
XProtect Smart Client
- When sending the message SmartClient.GetCurrentWorkspaceRequest to a window in the Smart Client, this will return the workspace currently shown in that window.
- ImageViewerAddOn now exposes three new methods (all starting with 'ActiveElementsOverlay') allowing for adding, updating and removing objects of classes that derive from the WPF class UIElement. Examples of such classes are Button, TextBlock and UserControls. This enables plug-ins to add interactive elements on top of the video.
XProtect Event Server
- The GPS position for MIP items representing built-in devices is now available through the PositioningInformation property in the Event Server (this was already available in the other environments).
Samples
- MiniSystem access control plug-in sample has been removed. Please refer to the DemoAccessControlPlugin sample for an example of how to do an access control plug-in.
- SCAudioExport has been added. This plug-in sample can be used to export mixed audio stream into a WAV file in the Smart Client.
- AudioExportSample has been added. This component integration sample can be used to export mixed audio stream into a WAV file in a standalone application.
- ActiveElementsOverlay has been added. This sample demonstrates how to show WPF controls as interactive overlays on a camera view item in the Smart Client using the new ActiveElementsOverlay methods on the ImageViewerAddOn.
- AddLayout and AddLayout_PS have been added. These samples demonstrate how to create view layouts using C# and PowerShell scripts respectively.
- Server Side Carrousel sample had an issue that caused it to reload properties incorrectly upon a PropertyChangedEvent, resulting in an undefined FQID. This has now been fixed.
Fixed issues
- Two changes have been made to enable a Smart Client MIP plug-in to use SmartWall monitors and related SmartWall monitor presets. The plug-in is also able to use the active views on the Smart Wall Monitors:
1) The Smart Wall hierarchy, which is similar to the view groups and views, now has a ‘Kind’ as Kind.View (this was previously Kind.SmartWallMonitor).
2) Both hierarchies are available at the same time.
For MIP plug-ins that modify the content of the Smart Wall, by changing the active Views on a monitor using the InsertCameraInView message, you should re-test this solution. Consider using the VideoWallSetCamerasCommand message to control content on the Smart Wall monitors.
- Zoom commands sent to a device using the MIPDriver were parsed incorrectly by MediaProviderChannel, meaning that the consumer would always receive PTZMoveCommandHome no matter what was done by the operator. This has been fixed.
- Switching to a secondary video stream in the ImageViewerControl or ImageViewerWPFControl did not work if the secondary video stream was configured to use multicast. This has now been fixed.
- A change in the way overlays were scaled using relative versus absolute pixel coordinates was made in the release 2017 R3. In that release and the subsequent 2018 R1, absolute coordinates were no longer scaled when changing the display size. The old behavior has now been reinstated in 2018 R2 for backwards combability reasons. See also the SDK documentation on VideoOS.Platform.Data.BoundingBox. It is however recommended to use only relative coordinates (0.0 - 1.0) going forward.
- GetChildren on a camera item in the Event Server incorrectly returned an empty list, thus making it impossible to get the list of configured presets for the given camera in this environment. This has been fixed.
- An issue in SetSequence that prevented Smart Client plug-ins to properly play video in a loop has been fixed.
- The PlaybackWpfUserControl could be made to crash on a certain sequence of mouse-over events. This has now been fixed.
- An ImageViewerWpfControl problem with un-assigning event handlers that could potentially cause a memory leak has been fixed.
- In certain scenarios, the Smart Client would retain a reference to a plug-in user control, causing it never to be garbage collected, and thus leaking memory. This has been fixed.
- If an ImageViewerWpfControl attempted to connect to an offline recording server or camera, it would be incapable of connecting to another camera afterwards. This has now been fixed.
- If you either iterate through all MIP items or used the Configuration.GetItemsBySearch on an XProtect Essential+ installation, you would receive a ServerFaultMIPException, because certain functions are not available on this product, but access to them was attempted anyways. This has now been fixed.