Introduction
Introduction to MIP SDK 2019 R2
Last release of XProtect Express and XProtect Professional
The 2019 R2 release is the last release of XProtect Express and XProtect Professional. The 2019 R2 release of the MIP SDK is therefore the last release to officially support these products, also referred to as E-code products in the MIP SDK documentation. Future releases of the MIP SDK will not be tested with any E-code products and support for E-code products will gradually be removed. MIP SDK documentation on E-code functionality or special E-code considerations will be gradually removed.
MIPSDK General
- Breaking change: As of 2019 R2 the Central/AlarmService API has been removed from the Event Server for security reasons. Protocol integrations should instead use the secure Central/AlarmService2 API. Please refer to the Alarm List sample for an example of how to utilize this interface.
- The Milestone XProtect DirectShow filter is no longer distributed as part of the MIP SDK, but it can still be downloaded from here. Furthermore, the DirectShow filter will be discontinued with the 2020 R1 release of the MIP SDK.
XProtect Smart Client
New XProtect Smart Client Search feature: The XProtect Smart Client already offers several ways of searching recordings from the Playback tab, the Sequence Explorer tab, and the LPR tab. The 2019 R2 release adds a dedicated Search tab and MIP SDK support for creating new search functionality. The basic scoping and search functionality on the Search tab can be extended by Search plug-ins that provide new search categories in addition to the basic search categories (bookmarks and smart motion search).
A Search plug-in provides one or more Search agents and optional customization of the Search tab user interface. Each Search agent implements a custom search algorithm and new search filters that allow the user to search recordings using the new search category.
In the 2019 R2 release, the Search tab is hidden by default and can be enabled by adding a Windows registry key. Please refer to the MIP SDK for sample code and to the MIP SDK documentation for an introduction to developing Search plug-ins.
- In 2017 R3 a new command was implemented to enable sending commands to cameras from the Smart Client and to retrieve a response. This has now been extended to support all devices, not just cameras. See VideoOS.Platform.Messaging.MessageId.Control.DriverCommand.
Configuration API
- The RemoveDeviceGroup method for device groups has had a new optional parameter added allowing for force-deleting the group even if it is not empty. Previous behavior (which is still the default) was that a group could not be deleted unless it was empty.
Samples
- Search Agent plug-in sample has been added, demonstrating how to implement and deploy a Search plug-in.
- The DirectShow sample is no longer included in the MIP SDK. It is suggested to use either the .NET libraries or Toolkits instead of DirectShow.
- Audio Recorder sample has been removed since the Audio Export sample makes it redundant.
Fixed issues
- In standalone environment configuration cache was not always properly cleared on logout, leading to outdated information being used on subsequent logins.
- There was a change in behavior for ImageViewerControl in the 2019 R1 release. Setting PlaybackControllerFQID to null on ImageViewerControl in the Smart Client plugin would put the ImageViewerControl in browse mode instead of the mode of the current window as it should have.
- SetSelectedViewItemCommand only worked in the main window, not in secondary or floating windows.
- If you created or edited an Alarm Definition using the Configuration API the AutoClose property would not be saved.
- A timing issue could cause exports in the MKV format to include a picture of a padlock as the first frame and then the export would be transcoded to 400x400 resolution no matter the resolution of the saved video footage.
- Using MessageId.Control.DriverCommand in the Admin environment (Management Client) could cause the Management Client to hang.
- EnvironmentManager.Instance.EnvironmentOptions[EnvironmentOptions.HardwareDecodingMode] would in some cases not be followed properly by ImageViewers in a standalone integration.
- The response from ProvideCurrentStateRequest contained devices removed from the system until the Event Server was restarted.
- Setting the Volume property on one AudioPlayerControl would affect all controls in the Smart Client - including the one used by the Smart Client itself.
- Sending the SmartClient.RefreshTimelineRequest message with a related ID of a MIP sequence source had no effect.
- It was not possible to set the volume on an AudioControl before calling Initialize, therefore a sound might be heard briefly. Volume can now be set prior to calling Initialize in order to avoid hearing any sound.
- For certain device types the hardware settings were not available through Configuration API.
- In the JPEGVideoSource class in the Get(DateTime dateTime, TimeSpan maxTimeAfter, int maxCountAfter) method a bug had been introduced that caused the method to hang when called.
- If a MultiWindowCommand SetViewInWindow message were meant for the main window it would instead affect the current window.