Introduction
Introduction to MIP SDK 2021 R1
The MIP SDK is now available online
In addition to the MIP SDK installer, the same content is now also available on several online platforms.
NuGet.org
This is the new location for all MIP SDK binaries, published as seven different packages.
GitHub
This is the new location for MIP SDK samples. They are currently made available in three repositories, one for each type of integration. Samples for MIP SDK Mobile and Video Processing Service will be added in the near future.
Visual Studio Marketplace
This is the location for the five Visual Studio templates, all contained in one VS extension.
Documentation
All MIP SDK documentation can be found here.
Tools
The MIP SDK tools can now be downloaded directly via the Download Software page.
There is one installer for Milestone StableFPS and one installer for the MIP SDK tools.
In addition to the MIP SDK Tray Manager, the Milestone Depends Utility and the 3rd Party Driver Test Tool, which can all also be found in the normal MIP SDK installer, the MIP SDK tools installer contains Visual Studio F1 Help. With this you can look up reference information about MIP classes and members from within an editor window in Visual Studio, just by pressing F1.
Samples and templates in the MIP SDK Installer have also been changed to reference NuGet packages.
Please refer to the updated Getting Started Guide for a quick tutorial on how to work with these online resources.
The MIP SDK Installer is planned to be discontinued after the 2022 R1 product release, which will then be the last version of the installer.
MIPSDK General
Changes to authentication
From the 2021 R1 release, an internal OpenID- and OAuth2-compliant identity server is now used for authentication in XProtect. This affects how integrations log on to the VMS.
How this affects integrations with XProtect depends on the type of integration:
- Plugin integration. No changes are needed.
- Component integration. It is highly recommended to rebuild the integration using the SDK in this release as this will ensure interoperability with future releases of XProtect. However, existing integrations should still work if encryption is not enabled on the server. It is also strongly encouraged that component integrations include the possibility to set the secureOnly flag, but then be aware that it will not be possible to login to a server that is not running HTTPS and OAuth2.0 when this flag is set to true.
- Protocol integrations need to implement logging on to the identity server as well as supporting HTTPS on the communication channel. The old interfaces will still be available for some time to ensure backward compatibility with existing integrations.
- UI components in
VideoOS.Platform.UI.Controls
andVideoOS.Platform.Themes
have been removed. They were always intended for internal use only and it thus decided to remove them from the SDK. A set of public controls are currently being considered. VideoOS.Platform.SDK.RemoteRetrievalTasks.RetrievalTask
has a new method,Cleanup()
, that tells the server not to include the task in future queries.
Smart Client
VideoOS.Platform.ClientControl.ImageViewerAddOn
now exposes two properties:IndependentPlaybackEnabled
to enable or disable the independent playback mode, andIndependentPlaybackController
to control the playback of a camera in the SC.VideoOS.Platform.Client.TimelineSequenceSource
has been extended with the new methodGetPreviewWpfUserControl
that allows for providing a WPFUserControl
as an alternative toGetPreviewUserControl
.
Management Client
- MIP defined rule actions can now be used in recurring rules (in addition to the already available support in event based rules).
Driver Framework
- The limitation of one camera per hardware for Driver Framework drivers has been removed from VMS version 2021 R1 and forward.
Configuration API
- New functionality allowing firmware file upload to the Management Server and usage of this file to upgrade the hardware device firmware has been added to Configuration API. Two new methods were exposed to allow this:
UploadFileChunk
andUpdateFirmwareHardware
. - It is now possible to add, remove and control hardware device events using the Configuration API. This applies to all types of devices (cameras, microphones, speakers etc.). This configuration was previously only possible to do using the Management Client.
The security permission configuration has been extended to also include managing these fields: Time Profile, Playback period and PTZ Priority.
These fields are available for configuration on the same device types as are seen in the Management Client:
- Cameras (Live, playback and PTZ Priority)
- Microphone (Live & playback)
- Speaker (Live & playback)
- Metadata (Live & Playback)
For Output devices, it is possible to select time profiles for activating output. For user-defined events it is possible to select time profile for the triggering time. Notice that the selection of a time profile will first be shown when the corresponding tick mark has been selected. For example, the “View Live” tick mark needs to be selected first, and saved, before the related “View Live Within Time Profile” appears.
Support has been added for configuring additional areas in the Tools Options dialog in the Management Client.
A new ToolOptionFolder configuration item has been added as a child on the systems root folder. It contains (for now) 3 child items of type ToolOption:
- RecordingServerToolOption
- ServerLogToolOption
- BookmarkToolOption
Each of these configuration items contains the same properties as shown in the management client. The only exception is that the tick mark for selecting support for a pre-2018 Log Server is not available.
The type (id) for each of these tool options are defined in the VideoOS.Configuration.dll in class ToolOptionIds. Also notice that each of these configuration items can be read and updated directly when using the above IDs - and that the content of each of the items is specialized to each type.
- It is now possible to add and manage view groups via the API just like it can be done using the Management Client.
- It is now possible to create and edit views just like it can be done using the Smart Client.
Toolkits
- Discontinuation: Milestone Media Storage Source Toolkit will no longer support connecting to a remote database over the network. It will still support reading a database stored on disk locally.
Video Processing Service (VPS)
- A device license is no longer required for each video channel when pushing video from XProtect to the VPS (Video Processing Service). In addition, returning metadata to XProtect is also possible without the cost of a device license. It is only when a (modified) video stream is returned from the VPS back to XProtect that a device license is required.
Visual Studio support
- Templates for Visual Studio 2013 and 2015 have been removed. Currently supported versions of Visual Studio are 2017 and 2019.
Samples
A number of changes have been made to the samples. Some samples were redundant and have been removed, while others have been expanded. See the lists below.
Added
- The
CameraPlaybackControl
sample has been added to show how the independent playback mode of a camera in the SC can be enabled or disabled. It also demonstrates in what way the controlling of the playback of a camera can be done. - The
LogRead
sample has been added to show how to use theLogClient
class to read logs from XProtect server. - The
ConfigAPIFirmwareUpdate
sample has been added to show how to update the firmware on a compatible hardware device. It also demonstrates how uploading of firmware file to the Management Server can be done.
Updated
- The
PlaybackWPFUser
has been renamed toImageViewerClient
and updated with functionality to load exported .Scp files as well as playing audio streams. - The
AdminTabPlugin
sample has been updated to include simple PTZ control functionality. - The
TimelineViewItem
sample has been updated to useGetPreviewWpfUserControl
instead ofGetPreviewUserControl
. - The
SCAnimalsSearchAgent
sample has been renamed toSCSearchAgent
. It contains two search agents now,SCAnimalsSearchAgent
and a new search agent calledSCPeopleWithAccessoriesSearchAgent
that demonstrates how to use the built-in search categories. - The
DemoDriver
sample has been updated to pass on theFPS
setting to theDemoDriverDevice
application. - The
DataSource
sample has been renamed toSequenceViewer
.
Removed
- The
AlarmClientWPF
has been removed because it was rather simple compared to theAlarmEventViewer
. - The
SCBookmark
has been removed since 3 other samples contain similar code. - The
ConfigAPIImport
has been removed since the solution was deprecated. - The
UIVideoProvider
has been removed because the functionality exists in theCameraMetadataProvider
sample. - The
SCOverlayOnEvent
has been removed since the sample is similar toSCOverlayGraphOnEvent
. - The
PlaybackUser
has been removed since new solutions should build on WPF not Windows Forms. For WPF see theImageViewerClient
sample. - The
SmartClientExtension
has been removed because of similarity withEventLibraryGenerator
. - The
VideoViewerQuality
has been removed because quality setting triggered server-side transcoding, which should be avoided. - The
SCOverlayImageTester
has been removed since it uses the deprecatedSetOverlay
method.
Fixed issues
- PTZ messages are now also supported for Management Client plug-ins.
- Duplicate driver IDs (e.g., if a driver was incorrectly added twice to the MIPDrivers folder) could lead to a device not working or update hardware crashing the Management Client.
- On certain computers with graphics cards that incorrectly identified themselves as being capable of H264 and H265 decoding, some of the video source classes would fail connecting if the camera was changed.
- ImageViewerControl could in some situations throw a NullReferenceException after Close() was called.
- In certain cases, if a metadata export contained multiple archives only one of them would be loaded by MetadataPlaybackSource.
- Metadata streams from driver framework drivers would be restarted after 10 seconds of inactivity. They will now be kept open.
- A problem in the ImageViewerControl.Close() method caused LiveStreamInformationEvent to no longer be triggered on subsequent connections.
- For ConfigurationItems.StreamDefinition object calling ValidateItem() method before Save() would cause the changes not to be saved even though ValidateItem() succeeded.
- If Close() and then Initialize() was called on ImageViewerControl events would no longer fire.
- Initialization of MIP communication failed if the Event Server is in Windows cluster and Management Server is not in that cluster. Therefore, the communication was not working.
- When using EnvironmentManager.SendMessage to send custom message from Management Client and MessageCommunication.RegisterCommunicationFilter to receive in Event Server, messages could be received multiple times in EVS after doing a refresh in the Management Client.