Class Hierarchy
This inheritance list is sorted roughly, but not completely, alphabetically:
[detail level 12345]
 CButton
 CCalendar
 CCheckBox
 CContentControl
 CContextMenu
 CControl
 CDynamicResourceExtension
 CEventArgs
 CException
 CForm
 CFrameworkElement
 CHidValueChangedEventArgs
 CIAddChild
 CIAlarmCommand
 CIClientMessageInspector
 CICommunicationService
 CIDisposable
 CIEndpointBehavior
 CIEquatable
 CILicenseService
 CINotifyPropertyChanged
 CISearchManager
 CIServiceInfo
 CItemNodeUserControl
 CIXmlSerializable
 CMarkupExtension
 CMenuItem
 CObject
 Cobject
 CProgressBar
 CRadioButton
 CRangeBase
 CRoutedEventArgs
 CScrollViewer
 CSystem.Collections.Generic.List
 CSystem.EventArgs
 CSystem.Runtime.Serialization.IExtensibleDataObject
 CSystem.ServiceModel.ClientBase
 CSystem.ServiceModel.Configuration.BehaviorExtensionElement
 CSystem.ServiceModel.IClientChannel
 CTextBlock
 CTextBox
 CToggleButton
 CUserControl
 CVideoOS.ConfigurationApi.ClientService.IConfigurationService
 CVideoOS.ConfigurationApi.ClientService.QueryItemsAssist with querying for ConfigurationItems on a given server
 CVideoOS.Platform.Admin.AssociatedPropertiesContains a cache of properties to be configured by the TabUserControl
 CVideoOS.Platform.Admin.ContextMenuItemDefines one context menu entry, to be used in the Administration clients.
This class is constructed and defined in the ItemManager that owns a given type of Item, as identified by it's Kind
 CVideoOS.Platform.Admin.ItemManagerThis class is created once for all Items of a specific Kind and is responsible for getting and saving configuration for all Items of that Kind

This class is also responsible for creating, filling and saving UserControl and relevant fields changed by the user in the administrators.
Normally there will be one ItemManager for each ItemNode.
If the Items being managed are stored on another server, then this class can utilize the Init() and Close() methods to setup sessions to the remote server in anticipation of calls to GetItems().

EventServer and Items on MAP
This class is also involved in defining ContextMenu on the SmartClient MAP, because the plug-in executing in the Event Server, are providing the Smart Client MAP ViewItem with all relevant plug-ins and their definitions.
As the Event Server uses authorization for Items, the ItemNode needs to define the SecurityActions relevant for the items being managed by the ItemManager. A minimum of two SecurityActions must always be defined for the Items to be available in the Smart Client.

Item Selection in the Administrators
Selection of an Item can happen via mouse click on the TreeView.
The user action will result in the following sequences of events:
a) ItemManager is accessed through the ItemNode
b) The GenerateUserControl() is called to allow ItemManager to create the User Control, setup the ConfigurationChangedByUserEvent, and return the UserControl to the caller.
c) The caller will add the UserControl to its relevant panel and set userControl.Dock = DockStyle.Fill to fill available area.
d) Existing configuration is fetched by calling the ItemManager.GetItem(FQID)
e) The ItemManager.FillUserControl(item) method is called to let the ItemManager populate the UserControl.


When de-selecting an item, the ItemManager.FillUserControl(null) is called to let the ItemManager clear the UserControl. The parent UserControl will also have Enabled=false; set shortly after this call.
Note: A ItemManager.ClearUserControl() is now defined - this is used when no items are selected to let the implementation clear all fields and disable the entire form.
Item edit and update
After an Item is selected or created, the system needs to know if any updates have been done by the administrator.
Ensure the ConfigurationChangedByUserHandler is called whenever the administrator changes something on the UI.
This will allow the administration application to enable Save and Apply buttons as appropriate.
When the administrator presses a Save or Apply button, the ValidateAndSaveUserControl is called to let the ItemManager and the underlying UserControl validate the entered values. If fields are valid the method returns true.

TreeView name change
On the TreeView itself, it is possible to press F2 and edit the name directly. In this case the updated name is passed to the ItemManager via the SetItemName(name) method.
The ItemManager should save the new name immediately.
 CVideoOS.Platform.Admin.ItemManager.ItemSummaryHeaderA structure which describes a column header in a summary pane
 CVideoOS.Platform.Admin.ItemNodeAn ItemNode contains all relevant information for a configuring and maintaining a specific kind of item.
It has ItemKind, name and a reference to an ItemManager.
The ItemManager assist in managing individual items and the UI controls to be used for this task. This class is constructed and used in all Environments, either to manage Items, or to get lists of them via GetItems(...) or GetItem(...) methods
 CVideoOS.Platform.Admin.MapAlarmContextMenuDefine a ContextMenu line to be displayed on the map when right clicking
 CVideoOS.Platform.Admin.SecurityActionContains definition of a specific security action. An Action could be "MANAGE" or "VIEW". The DisplayName should be the translated version to be used on UI
 CVideoOS.Platform.Admin.TabPluginDefines a plugin to be placed on the tab control of a built-in object
 CVideoOS.Platform.Admin.ToolsOptionsDialogPluginA class specifying an OptionsDialog plug-in to the Administrator program.

Each of the OptionsDialogPlugin’s will have a separate tab in the tools-options dialog.
The plug-in should initialize the UI as part of the class construction.
The UserControl will be docked to fill the tab page.

When the SaveChanges method is called, the plug-in can use the base method ‘SaveProperties’ to save the configuration, if all configuration fields are saved in the Property dictionary
 CVideoOS.Platform.Background.EventServerControlThis class only exist in the EventServer MIP Environment
 CVideoOS.Platform.Client.ActiveElementsOverlayRenderParametersDefines how WPF UIElements are placed on top of video. Used by ImageViewerAddOn.ActiveElementsOverlay methods
 CVideoOS.Platform.Client.AudioPlayerIt supports playing live and recorded audio from an XProtect server or from an export in XProtect format.
Supported in Smart Client and standalone environments.
 CVideoOS.Platform.Client.BitmapSource
 CVideoOS.Platform.Client.ClientActionDefines a client action that can be activated by the operator of the Smart Client. In the Smart Client, client actions can be assigned to keyboard shortcuts, joystick buttons and dragged to camera view items as overlay buttons
 CVideoOS.Platform.Client.ClientActionGroupDefines a client action group. Groups support hierarchies
 CVideoOS.Platform.Client.ConnectionStateCurrent state information for a session
 CVideoOS.Platform.Client.ConnectResponseEventEventArgsThe argument filled on the ConnectResponseEvent.
 CVideoOS.Platform.Client.Export.ItemExtensionsExtension methods providing easy access to export related properties on view item items provided in the ViewItems property of ExportParameters instance provided to ExportManager
 CVideoOS.Platform.Client.ExportManagerThis class contains information and methods used when the user exports something in the Smart Client. The ExportManager needs to copy all relevant data to the defined folder, so when it starts in Offline mode the plug-in can get hold of all relevant data.
The plug-ins configuration is automatically included in the exported material.
See the PluginDefinition.GenerateExportManager(...) for how the Smart Client creates your implementation of this class
 CVideoOS.Platform.Client.ExportParametersContains all relevant parameters selected by the user or environment used for an export. The class is build by the Environment
 CVideoOS.Platform.Client.Hid.ConnectResultType representing the result of a call to HidInstance.ConnectAsync
 CVideoOS.Platform.Client.Hid.HidButtonValueDataClass representing a button pressed value with optional dynamic parameters. Class used to signal that button has been pressed or released. Class can contain a dynamic parameters string. The dynamic parameters are prepared by the plug-in and can, for example, represent the key sequence typed into a key pad before pressing the command button
 CVideoOS.Platform.Client.Hid.HidConfigurationPropertyAbstract base class for a HID configuration property. Configuration properties are used when creating/connecting to a HidInstance
 CVideoOS.Platform.Client.Hid.HidInputBase class for a Human Interface Device (HID) input. Class has unique ID, user-friendly Name and default ActionId. The HID input element can be associated with an action, that will be executed by the environment when the input value changes
 CVideoOS.Platform.Client.Hid.HidInstanceA Human Interface Device (HID) plugin is very similar to the BackgroundPlugin with few members added to service human interface devices (keyboards, joysticks, trackballs, etc.).
For more information, refer into the BackgroundPlugin documentation
 CVideoOS.Platform.Client.Hid.HidPluginHuman Interface Device (HID) plugin base class. Inherit from this class to create a new HID plugin. HID instances created by the plugin are exposed as joysticks in the Environment
 CVideoOS.Platform.Client.ImageViewerAddOnThis class is created and send as a parameter on the ClientControl.NewImageViewerControlEvent event
The fields and properties on this class is mostly in a 'listen' mode, as another ImageViewerControl will control the actual video as usually.
This class can then be used for applying overlay in the form of analytics graphics or text.
By registering on the StartLive and StopLive events, the CloseEvent and the PropertyChanged event, a plug-in can ensure to follow the modes and states that may change in the underlaying ImageViewerControl.

Note: If using a background thread to retrieve and format overlays, a Invoke is required before calling UserControl related methods like SetOverlay and ClearOverlay
 CVideoOS.Platform.Client.LiveStreamInformationEventArgsThe argument filled on the LiveStreamInformationEvent.
 CVideoOS.Platform.Client.LoginPluginA class specifying an Login plug-in.
Login plugin are called during the smart client login process. It can choose to be called as part of the normal login flow of the smart client and/or after the normal login flow. In the latter case the plugin can define a user interface to be shown in the login dialog
 CVideoOS.Platform.Client.PlaybackControllerBuild-in controller containing playback information and events, e.g. current play time, goto, prev, next etc
 CVideoOS.Platform.Client.PlaybackController.BrowseTimeInfoUse by application to inform the PlaybackController about previous and next time stamps. The PlaybackController uses these to navigate when the device with this deviceId is selected, and a 'Next' or 'Previous' is requested (via UI or command)
 CVideoOS.Platform.Client.PropertyClassAbstract class incapsulating a key-value based property list.
 CVideoOS.Platform.Client.RawSourceThis class wraps RawVideoSource and RawLiveSource, handling buffering video, synchronizing with the given PlaybackController and ensuring a uniform return of frames whether live or playback
 CVideoOS.Platform.Client.ShapesOverlayRenderParametersDefines how WPF shapes is placed on top of video. Used by ImageViewerControl.ShapesOverlay methods
 CVideoOS.Platform.Client.SidePanelPlaceDefinitionDefines a side panel placement. Used in SidePanelPlugin.SidePanelPlaceDefinitions
 CVideoOS.Platform.Client.ThemeContains a set of Colors to describe the current selected Theme.
The ThemeType can be used for further selecting matching icons or buttons.
For simply applying these colors to your UserControl, use the ClientControl.Instance.RegisterUIControlForAutoTheming( userControl ), where the userControl should be the main part of your ViewItem. The titlebar can afterwards be updated depending on the selection state with the 4 properties starting with the letters 'ViewItem'.
Notice that side panels, property panel and option configuration panels are automatically themed
 CVideoOS.Platform.Client.TimelineDataAreaClass representing one interval to be marked on the timeline.
If this is used with a TimelineSequenceSource of type TimelineSequenceSource.TimelineSequenceSourceType.Marker only the begin time of the interval is used
 CVideoOS.Platform.Client.TimelineSequenceSourceImplement derived class capable of delivering information about when data is available for a source and return instances in the TimelineSequenceSources property of the ViewItemManager
 CVideoOS.Platform.Client.TimelineSourceQueryResultClass for holding timeline data from a source for one interval
 CVideoOS.Platform.Client.ViewControlItemBase class for all ViewControlItems
 CVideoOS.Platform.Client.ViewGroupThe content of a ViewGroup: Data and Info
 CVideoOS.Platform.Client.ViewGroupDataThe XML content of a ViewGroup
 CVideoOS.Platform.Client.ViewGroupInfoContains the header information for a Smart Client view group.
 CVideoOS.Platform.Client.ViewItemPluginClass defining one Smart Client ViewItem.
The ViewItemPlugin is only constructed one time.
For each ViewItem defined on any view layout, a call to GenerateViewItemManager is performed to create a ViewItemManager. This instance of the ViewItemManager is then responsible for the configuration in relation to one viewitem.
The ViewItemManager will again generate ViewItemUserControl and PropertiesUserControl as appropriate for this viewitem.
e.g. if a given ViewLayout is shown once, then only one ViewItemUserControl is generated, and only one PropertiesUserControl is generated when selected in setup mode.
Now, if multiple floating windows are opened with SAME ViewLayout, and thereby same configuration of a ViewItem's, then multiple ViewItemUserControl's may be requested via the same ViewItemManager.
The properties part of the class is used to build the tree node in the Smart Client
 CVideoOS.Platform.Client.ViewItemToolbarPlaceDefinitionDefines view item toolbar placement information. Used in ViewItemToolbarPlugin.ViewItemToolbarPlaceDefinition
 CVideoOS.Platform.Client.ViewItemToolbarPluginInstanceRepresents an actual view item toolbar plugin instance. An instance of this class will be created for each toolbar plugin that is added to the Smart Client UI
 CVideoOS.Platform.Client.ViewLayoutThe Layout represent a specific Smart Client view layout without content. This class is provided by the PluginDefinition
 CVideoOS.Platform.Client.WindowInformationThis class provide information of the currently executing window. It is accessed from the ViewItemUserControl.WindowInformation
 CVideoOS.Platform.Client.WorkSpaceNotificationClass defining a works space notification
 CVideoOS.Platform.Client.WorkSpaceToolbarPlaceDefinitionDefines work space toolbar placement information. Used in WorkSpaceToolbarPlugin.WorkSpaceToolbarPlaceDefinition
 CVideoOS.Platform.Client.WorkSpaceToolbarPluginInstanceRepresents an actual work space toolbar plug-in instance. An instance of this class will be created for each toolbar plug-in that is added to the Smart Client UI
 CVideoOS.Platform.ClientControlThe class to access Client relevant methods
 CVideoOS.Platform.ConfigurationConfiguration provides access to all configuration objects within the Milestone Platform.
This covers well known Milestone objects like Cameras, Servers, Presets events etc, but also 3rd party plug-in objects can be accessed though this interface.
Access to this class is done via Configuration.Instance
 CVideoOS.Platform.Configuration.RegistrationServiceEndpointDefines one individual endpoint, contained within some service. Multiple Endpoints are relevant for e.g. support of multiple Authentication types or multiple Uri's
 CVideoOS.Platform.Configuration.ServiceURIInfoThe information stored for each services
 CVideoOS.Platform.ConfigurationItems.ConfigurationApiPropertiesContains the properties provided by a ConfigurationItem
 CVideoOS.Platform.ConfigurationItems.ConfigurationServiceClass used to call methods on the ConfigurationAPI
 CVideoOS.Platform.ConfigurationItems.FactoryContains a set of methods for creating paths and conversions
 CVideoOS.Platform.ConfigurationItems.IConfigurationChildItemContains fields relevant for a ConfiguratonItem with category = "ChildItem"
 CVideoOS.Platform.ConfigurationItems.IMIPItemInterface for the MIPItem typed Configuration API
 CVideoOS.Platform.ConfigurationItems.MIPOptionPropertiesContains settings used on the Management Clients option menu
 CVideoOS.Platform.ConfigurationItems.ServerTaskRepresent a task that is running on the server
 CVideoOS.Platform.ConfigurationItems.ServerTaskResultAbstract wrapper for the ServerTask, allowing to init strongly typed properties for the result
 CVideoOS.Platform.ConfigurationItems.UpdateHardwareDetailContains the details for each device/item on the hardware, about what has changed
 CVideoOS.Platform.ConfigurationItems.ValueTypeInformationThis class assist in defining what values are valid for a given property
 CVideoOS.Platform.CroppingInfoClass returned as part of the BitmapData class
 CVideoOS.Platform.Data.AlarmUpdateKeyThis class specifies the available keys when doing an alarm update
 CVideoOS.Platform.Data.AlertConverterAllows for conversion from legacy MAD format to MAD format version 2.5
 CVideoOS.Platform.Data.BitmapDataResultThe result type received when using the ThumbnailQueue to fetch a thumbnail. The type has properties to indicate if an error occurred, and the actual data (if no error occurred)
 CVideoOS.Platform.Data.BookmarkThe Bookmark class represents a bookmark instance
 CVideoOS.Platform.Data.BookmarkReferenceThe result of getting a new bookmark reference. This class is returned as a result for the BookmarkGetNewReference method
 CVideoOS.Platform.Data.BookmarkServiceProvides access to the bookmark service of the ServerCommandService.
Note that this service is only available on the high-end XProtect Corporate products.
For the products where it is not supported, each method entry is ignored and a single message is logged in the MIP log.

The methods of this service is invoked through the singleton reference 'Instance'.
E.g. A new bookmark may be created using the statement:
Bookmark bookmark1 = BookmarkService.Instance.BookmarkCreate(cameraFqid, timeBegin, timeTrigger, timeEnd, reference, header, description);

The 'Bookmark' class contains all the information related to the new bookmark, especially the BookmarkFQID property, which holds the unique identification of the new bookmark.

Existing bookmarks may be queried by BookmarkSearchTime or BookmarkSearchFromBookmark. BookmarkSearchTime searches for bookmarks within a specific time interval. BookmarkSearchFromBookmark begins the search from the time right after a specific existing bookmark.
The search may take several seconds. Therefore it may be relevant to use the asynchronous equivalents BookmarkSearchTimeAsync and BookmarkSearchFromBookmarkAsync in stead.


A known bookmark may be quieried by means of the BookmarkGet method
 CVideoOS.Platform.Data.CameraDeviceDefinitionThis class is responsible for describing the parameters for a single camera device
 CVideoOS.Platform.Data.DataSourceAn abstract class to be used for implementation of a DataSource.
Within the MIP Environment there are currently these built-in implementations:
AlertDataSource - to get access to video alerts
SequenceDataSource - to get access to recorded video related sequence information
StreamDataSource - to get the configured streams on a camera
MetadataSource - to get the configured metadata stream information on a metadata item


If a plug-in can provide list of data related to a specific Item, implementation of this class can be used.

Construction can be performed in two ways:
Call the GetDataSource() on the owning Item
Construct the correct class based on the Item at hand
 CVideoOS.Platform.Data.DataTypeRepresents a type of Data being provided by a DataSource
 CVideoOS.Platform.Data.DataType.JPEGTypeGuidsReserved for future use
 CVideoOS.Platform.Data.DataType.SequenceTypeGuidsBuild-in DataType Ids for camera Items
 CVideoOS.Platform.Data.DataType.TimeLineInformationTypeGuids
 CVideoOS.Platform.Data.EnumCapabilityValueThis class is responsible for describing one of the allowed values for an enum capability. Each value is selectable in the drop-down list for the enum capability
 CVideoOS.Platform.Data.EventGroupThis class is used to group EventTypes
 CVideoOS.Platform.Data.EventHeaderTypesContains the built-in types used in the EventHeader.Type on the BaseEvent class. Partners are welcome to use their own types.
These types can be used to filter message reception of type level, instead of receiving all messages, when using the MessageCommunication classes. VideoOS.Platform.Messaging.CommunicationIdFilter constructor for more on usage
 CVideoOS.Platform.Data.EventTypeThis class is used to define Event Types which an VideoOS.Platform.Admin.ItemManager can deliver to the Event Server using the method GetKnownEventTypes(CultureInfo culture). Event Types are used in defining the events, which can trigger alarms
 CVideoOS.Platform.Data.FaultDeviceError state of processed marked data
 CVideoOS.Platform.Data.GenericVideoSource< PcmAudioDataList >
 CVideoOS.Platform.Data.HardwareDefinitionThis class represents a piece of hardware that can added to a runnig system using the MIP driver
 CVideoOS.Platform.Data.HardwareDeviceDefinitions.DeviceDefinitionBase class responsible for describing the parameters for a single device
 CVideoOS.Platform.Data.IAudioRecorderThis class is a base class for audio recorder implementations.
In the .Net Library there is one implementation, for recording audio from a PC attached microphone
 CVideoOS.Platform.Data.ICancelableRequestDefines a cancelable thumbnail queue request
 CVideoOS.Platform.Data.IDirectSpeakerControllerInterface of DirectSpeakerController sends an audio stream directly to an outgoing speaker
 CVideoOS.Platform.Data.IExporterThe common interface used by DBExporter and AVIExporter
 CVideoOS.Platform.Data.IInternalCommandServiceImplementer< TDataType >Interface for communication with InternalCommandService. Used by instances of BaseVideoSource
 CVideoOS.Platform.Data.IInternalCommandServiceImplementer< BitmapData >
 CVideoOS.Platform.Data.IInternalCommandServiceImplementer< JPEGData >
 CVideoOS.Platform.Data.IInternalCommandServiceImplementer< PcmAudioDataList >
 CVideoOS.Platform.Data.IThumbnailQueueDiagnosticsDiagnostics for the ThumbnailQueue providing a snapshot of the current state of the queue
 CVideoOS.Platform.Data.JPEGDataContains the JPEG as bytes
 CVideoOS.Platform.Data.MediaDataContains one piece of media information. For video it will be one frame, for audio it will be for a short period
 CVideoOS.Platform.Data.MediaDataHelpers.AudioRecorderToMediaDataClass providing data conversion from IAudioRecorder to MediaData
 CVideoOS.Platform.Data.MediaDataHelpers.MediaDataQueueClass implementing media data buffers queue
 CVideoOS.Platform.Data.MediaProviderChannelThis MediaProvider provides an interface for sending video frames to a Milestone XProtect Recording Server.
The specific MIPMediaProvider driver has to be configured to point at this executing application and port, as defined in this class.
 CVideoOS.Platform.Data.MediaProviderServiceThe MediaProviderService will open for TCP socket and listen for connections.
New MediaProvider's need to be created for each channel that will be available for video later on
 CVideoOS.Platform.Data.MediaProviderSessionContains the properties that a given session is using.
When used on the initial SessionOpening method, it will contain the values as requested by the server side.
The application can then modify the values to what is relevant for the given application and session.
This class is created by the MediaProviderService when a new HTTP request has been received that want to receive a new stream.
Note that multiple MediaProviderSession classes can exist on the same MediaProvider when multiple servers are connecting to the same channel
 CVideoOS.Platform.Data.MetadataDeviceCapabilityThis class is responsible for describing a capability for a metadata device. A capability describes a single setting that will appear on the settings tab for the device
 CVideoOS.Platform.Data.MetadataDeviceDefintionThis class is responsible for describing the parameters used by a single metadata device on a piece of hardware
 CVideoOS.Platform.Data.MetadataHardwareDefinitionThis class represents the overall
 CVideoOS.Platform.Data.MetadataPlaybackDataThis class is responsible for containing the information about a single "frame" of recorded metadata
 CVideoOS.Platform.Data.MetadataPlaybackSourceMetadataPlaybackSource gets metadata in raw mode. This means that the Generic Byte Header as well as the content is available.
When getting metadata from the server, it should be considered that the Get() method can take some time and is not ideal to execute on a UI thread.
Only supported in Smart Client and standalone environments
 CVideoOS.Platform.Data.MetadataProviderChannelThis MetadataProviderChannel provides an interface for sending metadata to a Milestone XProtect Recording Server
 CVideoOS.Platform.Data.MetadataQueueResultThe result type received when using the MetadataQueue to fetch a metadata. The type has properties to indicate if an error occurred, and the actual data (if no error occurred)
 CVideoOS.Platform.Data.MetadataSupplierThis class automatically provides metadata when available, both in live and playback
 CVideoOS.Platform.Data.MetadataTypeDefinitionThis class is responsible for handling the parameters that define the type of metadata a metadata device delivers when using the MIP driver. The display name (or its translation) will be used as the headline on the settings tab for the device in the Management Client. All capabilities in this type will then appear as children in the setting tab
 CVideoOS.Platform.Data.PropertyThe Property class is used for events generated with access control plugins. The AccessControlEvent class references this class
 CVideoOS.Platform.Data.RawVideoSourceDataContains the raw GenericByteData content, used by RawVideoSource during playback of raw frames
 CVideoOS.Platform.Data.RestrictedMediaThe RestrictedMedia class represents a restricted media instance
 CVideoOS.Platform.Data.RestrictedMediaLiveThis RestrictedMediaLive class represents a restricted media live instance
 CVideoOS.Platform.Data.RestrictedMediaLiveResultResult of processed restricted media live
 CVideoOS.Platform.Data.RestrictedMediaResultResult of processed restricted media
 CVideoOS.Platform.Data.RestrictedMediaService
 CVideoOS.Platform.Data.SequenceAviExportElementClass for defining each element of an AVI sequence export
 CVideoOS.Platform.Data.SmartClientProfileSettingData class for a Smart Client Profile setting
 CVideoOS.Platform.Data.StateGroupThis class is used to define a state group, referenced by EventType
 CVideoOS.Platform.Data.VideoSourceGives access to recorded video
 CVideoOS.Platform.Data.WarningDeviceWarning state of processed restricted media
 CVideoOS.Platform.Data.WAVExporterThis class will use environment specific implementation to export one or mixture of multiple audio streams to an WAV file. You can do sound mixing with combination of speaker output and microphone input for instance. To export multiple audio streams, you need to set the AudioList property then call the StartExport(DateTime, DateTime) method
 CVideoOS.Platform.EnvironmentCapabilitiesUsed by the EnvironmentManager.Instance.HasCapability() method
 CVideoOS.Platform.EnvironmentManagerThe EnvironmentManager is the top class for the MIP Environment. The class can always be accessed though: EnvironmentManager.Instance As it is a singleton
 CVideoOS.Platform.EnvironmentOptionsOptions available for the EnvironmentManager.Instance.EnvironmentOptions dictionary
 CVideoOS.Platform.EventsAndState.EventsAndStateSessionProvides access to the Events and State
 CVideoOS.Platform.EventsAndState.IEventReceiverEventReceiver Implement this interface to be able to receive events and state.

See also
EventsAndStateSession.Create(Login.LoginSettings, IEventReceiver)
 CVideoOS.Platform.EventsAndState.InternalSpecifier< T >Specifies either a collection of ids or a match for any ID
 CVideoOS.Platform.EventsAndState.InternalSpecifier< Guid >
 CVideoOS.Platform.EventsAndState.InternalSpecifier< string >
 CVideoOS.Platform.EventsAndState.SubscriptionRuleSpecifier for a subscription
 CVideoOS.Platform.EventsData.AccessControlDataData of an access control event
 CVideoOS.Platform.EventsData.AnalyticsBoundingBoxThe representation of a bounding box, describing a rectangle in normalized coordinates within the scene
 CVideoOS.Platform.EventsData.AnalyticsColorThe representation of an ARGB color
 CVideoOS.Platform.EventsData.AnalyticsDataWithoutSnapshotsData of an analytics event
 CVideoOS.Platform.EventsData.AnalyticsMotionThe representation of an object's tracked motion through the scene
 CVideoOS.Platform.EventsData.AnalyticsObjectRepresents an analytics object
 CVideoOS.Platform.EventsData.AnalyticsPointThe representation of a point described by a set of normalized coordinates
 CVideoOS.Platform.EventsData.AnalyticsPolygonThe representation of a polygon describing a set of normalized coordinates and color
 CVideoOS.Platform.EventsData.AnalyticsRuleThe representation of the rule, which triggered the event
 CVideoOS.Platform.EventsData.AnalyticsSnapshotThe representation of a snapshot associated with the event with time offset relative to the event timestamp
 CVideoOS.Platform.EventsData.AnalyticsVendorInformation about the analytics vendor including any custom data
 CVideoOS.Platform.EventsData.ChangedEventDataActionsPossible values of the IEventChangedData<T>.Action
 CVideoOS.Platform.EventsData.MipItemPositionChangedEventDataThe data of a MIP Item Position Changed free-form event in the RESTful Events API
 CVideoOS.Platform.EventsData.MipItemPositionChangedEventDataPositionInfoDefines the position
 CVideoOS.Platform.EventsData.SmartWallChangedEventDataRelatedItemA configuration item that is affected
 CVideoOS.Platform.EventsData.SmartWallEventChangedDataData included in the Data field for VideoWallChanged event
 CVideoOS.Platform.EventsData.SystemConfigurationChangedEventDataThe data of a System Configuration Changed free-form event in the RESTful Events API
 CVideoOS.Platform.EventsData.SystemConfigurationChangedEventDataRelatedItemA configuration item that is affected
 CVideoOS.Platform.FQIDThe Fully Qualified ID contains a complete set of fields to contact a server and get further details. The purpose is to identify an Item to the level where it contains enough information for contacting the correct server, on a relevant protocol, and obtain further information for the item from that server. The key identification are build up of:
1) ServerId.Id Guid - identify a specific server or set of configuration.
2) ParentId Guid - the parent FQID will contain this in the ObjectId field
3) ObjectId Guid - a unique id for this object (Item)
If an FQID does not have a parent, the parentId is Guid.Empty
To make lookup easier and to assist in displaying relevant selection choices for users, the following type fields are present:
1) FolderType - identify if this is some kind of grouping or collection
2) Kind Guid - identifies what type of object this FQID identifies.
The Kind class contains a set of predefined values for all Milestone known Kinds, e.g. Kind.Camera is assigned to FQIDs for cameras and groups of cameras.

Note: When some object cannot be identified by a Guid, but rather a string, the ObjectIdString can be used as an alternative to the ObjectId. It is though highly recommended to fill the ObjectId if possible.
The FQID is primarily created by plug-in developed ItemManagers and during deserialization of configurations.
This method is NOT intended for overrides, as MIP Environment need to be able to deserialize a XML string to a correct FQID object.
A camera sample for XProtect Corporate:
 CVideoOS.Platform.ISourceDataBase interface for common properties between different video source datas
 CVideoOS.Platform.ItemThis class is used as a base class of all objects and items, be it cameras, audio sources or plug-in developed objects. For simple Items that does not have any Children this base class itself can be used, often though you will need to implement a class that inherit from this Item and make overrides to GetChildren, HasChildren, GetParent and perhaps more methods
 CVideoOS.Platform.ItemProperties
 CVideoOS.Platform.JsonHandling.IElementInterface used to describe one json element. Specific classes for each json formatted type implements this interface
 CVideoOS.Platform.JsonHandling.JsonBuilderA class for basic Json handling. This class handles construction of json objects in string format
 CVideoOS.Platform.JsonHandling.JsonObjectHandling JSON formated fields. This class constructior will use the JsonReader to pass the json string and construct IElement objects of all sub fields
 CVideoOS.Platform.JsonHandling.JsonReaderConverts JSON string into an ElementList
 CVideoOS.Platform.JsonHandling.JsonUtilitiesClass for assisting in handling Json strings
 CVideoOS.Platform.JsonHandling.TokenContains a single json token with field name, the value in either Text or BoolValue
 CVideoOS.Platform.KindKind is a class that contains Milestone defined kinds as static members. Each field is a GUID.
New plugins defines their own Kinds on the plugins ItemNodes.
In the ItemPicker each Kind is represented with a specific icon. The ItemPicker uses the icon defined on the ItemNode.
During load of the plugins the plug-in defined ItemNodes and their Kinds and Icons are added to the static Hashtable members of this class.
 CVideoOS.Platform.License.ConcurrentLicenseManagerNOTE: This class has been discontinued and should no longer be used
 CVideoOS.Platform.License.CryptoHelperCan encrypt and decrypt data
 CVideoOS.Platform.License.ILicenseServiceFor internal use only
 CVideoOS.Platform.License.LicenseInformationThis class is used for both license requests and license responses.
It contains the information flowing from a plugin to and from the license server.
 CVideoOS.Platform.License.LicenseItemContains information for one single reserved licensed item.
This class can be used to ear-mark the specific items to have a valid license, or are in trial mode. The items that are added above the licensed max and therefore are extra items in trial mode.
The plug-in will decided how may items can be added above the licensed count, and for how long they can be in this mode before an activation is required.
 CVideoOS.Platform.License.LicenseManagerThe LicenseManager assist the plugins in managing licenses for a plugin or stand alone application.
 CVideoOS.Platform.License.OemResourceManagerUsed internally for extranting OEM resources. Only used for light weight OEM solutions
 CVideoOS.Platform.License.ReservedLicenseManagerThis class is used for handling licenses to be reserved for specific items.
All the items to have a licensed reserved for them need to have a LicenseItem saved in the LicenseInformation. The LicenseItem contains the id of the item to have a license, and the current state of the license. The state can be that it is a normal license, an item in trial mode and a trial end date.
The main difference between this class and the ConcurrentLicenseManager, is that the ConcurrentLicenseManager assist with checking for concurrent use of the licenses
 CVideoOS.Platform.License.ResolvedLicenseCountContainer for various license count information
 CVideoOS.Platform.License.SystemLicenseContains information about the general license for the installed XProtect product
 CVideoOS.Platform.Live.BaseLiveSource< LiveSourceContent, LiveContentEventArgs >
 CVideoOS.Platform.Live.BaseLiveSource< LiveSourceContent, LiveContentPcmEventArgs >
 CVideoOS.Platform.Live.BaseLiveSource< LiveSourceRawContent, LiveContentRawEventArgs >
 CVideoOS.Platform.Live.LiveSourceAn abstract class to be used for implementation of a LiveSources.
Within the MIP Environment there are currently these built-in implementations:
JPEGLiveSource
BitmapLiveSource
RawLiveSource
 CVideoOS.Platform.Live.LiveSourceStatusContains the LiveStatus information. It is transmitted as XML in between live video stream and contains changes relating to a given camera
 CVideoOS.Platform.Live.LiveSourceTimeoutClass used to report a timeout from the toolkit
 CVideoOS.Platform.Live.MetadataLiveContentThis class contains the data delivered by a live metadata stream. All fields are immutable after construction
 CVideoOS.Platform.Live.MetadataLiveSourceThis class is responsible for delivering live metadata from a device.
Only supported in Smart Client and standalone environments
 CVideoOS.Platform.Log.GroupContains constants defining the different type of logs
 CVideoOS.Platform.Log.LogClientThis class is used for storing log messages in the server side logs
 CVideoOS.Platform.Log.LogMessageContains one log message
 CVideoOS.Platform.Log.LogMessageDictionaryRepresent a set of log messages that a MIP plugin would like to define in the log system. Used when using the LogClient to register messages for later use
 CVideoOS.Platform.Log.PermissionStateUsed when performing audit logging - specify result of an permission check
 CVideoOS.Platform.Log.SeverityContains constants definining the severity levels available
 CVideoOS.Platform.Log.StatusContains constants defining if a message also should be considered to change a state
 CVideoOS.Platform.Login.AuthenticationTypeDefines the authentication types used in MIP
 CVideoOS.Platform.Login.LoginServerProductInfoContains information about the server that is logged on to.
 CVideoOS.Platform.Login.LoginSettingsLoginSettings contain a Token of login for one server. It needs to be renewed once in a while
 CVideoOS.Platform.Login.LoginSettingsCacheContains the cache of all LoginSettings currently in use by the Environment
 CVideoOS.Platform.Login.UtilA utility class to build user CredentialCache and NetworkCredential
 CVideoOS.Platform.Messaging.AddToExportCommandDataThis class is used with the MessageId.SmartClient.AddToExportCommand message
 CVideoOS.Platform.Messaging.AnalyticsMessageDataContains a definition of one analytics event
 CVideoOS.Platform.Messaging.ApplicationControlCommandDataA set of const strings to defined available values for the ApplicationControlCommand message
 CVideoOS.Platform.Messaging.ChangedAlarmDataThis class is contained on the Server.ChangedAlarmIndication.
The content identifies what changes has been made.
When changes only involved a single alarm, the ChangeHint is ChangeHintSingleAlarm and the AlarmId can be used to get the alarm again.
When changes involves a number of alarms on a specific source, the ChangeHint is ChangeHistMassUpdateForSource, and the SourceId can be used to run though alarms for that source and check the changes
 CVideoOS.Platform.Messaging.ChangedAlarmHistoriesDataThis class is contained on the Server.ChangedAlarmHistoryIndication.
The content identifies the changes made to alarm history. E.g. changing state or changing assignee on an alarm.
 CVideoOS.Platform.Messaging.ChangedAlarmHistoryDataThis class contains a single AlarmUpdateActivity, and is part of ChangedAlarmUpdateActivitiesData. See class AlarmUpdateKey for possible AlarmUpdateKeys
 CVideoOS.Platform.Messaging.ClearIndicatorCommandDataThis class contains the commands to control clearing the red, yellow indicators on top of the Camera images
 CVideoOS.Platform.Messaging.CommunicationIdFilterThe CommunicationIdFilter is used to identify what messages to subscribe to, on another machine.
It is used in the Messaging.MessageCommunication class.
 CVideoOS.Platform.Messaging.DriverCommandDataUse with MessageId = DriverCommand.
 CVideoOS.Platform.Messaging.DriverResponseDataThe response coming back from sending a message with MessageId = DriverCommand
 CVideoOS.Platform.Messaging.EndPointIdentityDataContains the FQID and the username used for login at that EndPoint identified by the EndPointFQID.
This class is used in conjunction with the WhoAreOnlineResponse and NewEndPointIndication messages
 CVideoOS.Platform.Messaging.IMessageClientMessages (through WebSockets) is a BETA API. Future releases might break backwards compatibility of the API and the clients
 CVideoOS.Platform.Messaging.IMessageReceiverArgsInterface holding received message parameters like topic and data
 CVideoOS.Platform.Messaging.IsDirectInputHIDHandledByPlugInRequestDataThis class is used to identify a DirectInput device found by the DirectInput HID plugin. The class represents the Data object of the MessageId.SmartClient.IsDirectInputHIDHandledByPlugInRequest message
 CVideoOS.Platform.Messaging.ItemStateDefines the current state a given Item has.
This class is used in conjunction with the ProvideCurrentStateResponse message.
 CVideoOS.Platform.Messaging.LensCommandDataA set of const strings to defined available values for the LensCommand message
 CVideoOS.Platform.Messaging.MapRequestDataClass filled when sending a GetMapRequest
 CVideoOS.Platform.Messaging.MapResponseDataIs part of the Message.Data field for a GetMapResponse message
 CVideoOS.Platform.Messaging.MapResponseDataInstanceShort identification of a map
 CVideoOS.Platform.Messaging.MessageA Message contains information send from a sender to one or multiple receivers. It is identified by a String, the well known messages created and send by the MIP Environment are defined in class VideoOS.Platform.Messaging.MessageId.
The fields may be filled out or not filled out depending on the MessageId. The MessageId is the identification of the message, a plugin can use any MessageId they choose of additional communication.
The field Reason - is a string containing why this message has been send, could be the name of a rule, a black list, or simply a user action. The RelatedFQID is used for some Messages – see documentation for each MessageId. The Data field is simply an object relevant to the specific MessageId
 CVideoOS.Platform.Messaging.MessageCommunicationManagerThe MessageCommunicationManager holds MessageCommunication classes for each EventServer it has connection to. The EventServers are identified by the ServerId.Id of their owning Management Server
 CVideoOS.Platform.Messaging.MessageFilterThis class is the base class for classes that can assist in filtering messages.
The MessageIdFilter matches on the MessageId itself.
The AnyFilter is an always-true filter – most useful for debugging.
A plugin can create own filters as appropriate for matching and filtering on specific combination the available fields
 CVideoOS.Platform.Messaging.MessageIdThe MessageId class contains the definitions of all the system defined messages
 CVideoOS.Platform.Messaging.MessageId.ControlThis class is a collection of static strings for controlling camera or triggering events.
 CVideoOS.Platform.Messaging.MessageId.LPRThis class is a collection of static strings for subscribing to LPR match lists related events.
 CVideoOS.Platform.Messaging.MessageId.ServerThis class is a collection of static strings for server communications. The event and alarm messages will be sent to the EventServer and others represent communication to the logon server.
 CVideoOS.Platform.Messaging.MessageId.SmartClientThis class is a collection of static strings mostly for use when executing in the Smart Client
The 4 playback message Id's can also be used for a ImageViewerControl running in the .Net Library
 CVideoOS.Platform.Messaging.MessageId.SystemThis class is a collection of static strings used for messages relevant on a system level
 CVideoOS.Platform.Messaging.MoveCommandThe commands available for the SetSelectedViewItemData message
 CVideoOS.Platform.Messaging.MultiWindowCommandA set of const strings to defined available values for the MultiWindowCommandData structure
Please note this class has same name as a command, but should be used in the MultiWindowCommandData.MultiWindowCommand field
 CVideoOS.Platform.Messaging.MultiWindowCommandDataThe data structure filled when sending the MultiWindowCommand message.
 CVideoOS.Platform.Messaging.MyKeyValueKeyValue to be used for serialization
 CVideoOS.Platform.Messaging.MyRectangleDefines a version of rectangle that can be serialized
 CVideoOS.Platform.Messaging.PlaybackCommandDataA class specifying how to start PlayBack. Used by the PlaybackCommand for instructing the Smart Client, and by the PlaybackIndication when the Smart Client informs of user or other program commands
 CVideoOS.Platform.Messaging.PlaybackDataContains the possible values to be filled in the PlaybackCommandData.Command field. This class is send as Data in messages with MessagesIds SmartClient.PlaybackCommand and SmartClient.PlaybackIndication
 CVideoOS.Platform.Messaging.PlaybackPlayModeDataClass of strings specifying the playback modes
 CVideoOS.Platform.Messaging.PlaybackTimeInformationDataA class holding information about the currently received data to display.
This class is sent to the PlaybackController to keep it updated with available data and possible skipping of gaps.
 CVideoOS.Platform.Messaging.PTZAUXCommandDataA struct specifying the AUX specifics for the PTZAUXCommand message, used in the message's Data field
 CVideoOS.Platform.Messaging.PTZCenterCommandDataDefines a rectangle in witch to center and zoom.
 CVideoOS.Platform.Messaging.PTZGetAbsoluteRequestDataA struct defining the PTZ values returned by the PTZGetAbsoluteRequest message.
The values for Pan an Tilt are between -1..1
The value for Zoom are in interval 0..1, where 0=full zoom out; 1=full zoom in;
 CVideoOS.Platform.Messaging.PTZMoveAbsoluteCommandDataA struct specifying the PTZ and speed of a PTZMoveAbsoluteCommand message, used in the message's Data field
 CVideoOS.Platform.Messaging.PTZMoveCommandDataA struct specifying the PTZ Move command of a PTZMoveCommand message, used in the message's Data field
 CVideoOS.Platform.Messaging.PTZMoveStartCommandDataA struct specifying the PTZ and speed of a PTZMoveStartCommand message, used in the message's Data field
 CVideoOS.Platform.Messaging.PTZMoveStartCommandData2A struct specifying the PTZ and speed of a PTZMoveStartCommand message, used in the message's Data field
 CVideoOS.Platform.Messaging.PTZRectangleCommandDataDefines a rectangle to be displayed. All values are in pixels
 CVideoOS.Platform.Messaging.RecorderErrorIndicationDataDescribes in detail the error
 CVideoOS.Platform.Messaging.SetCameraInViewCommandDataThis structure is used when sending the SetCameraInViewCommand to tell the Smart Client what camera to insert in what position on current displayed view
 CVideoOS.Platform.Messaging.SetSelectedViewItemDataThis class is used by the SetSelectedViewItemCommand message id. It describes what view item should be selected within the currently selected window
 CVideoOS.Platform.Messaging.ShowCamerasInFloatingWindowDataDefines the state of a floating window and the cameras it contains.
Fill this class when sending a message with id SmartClient.ShowCamerasInFloatingWindowCommand
 CVideoOS.Platform.Messaging.SmartClientMessageDataContains a single message to be displayed in the message area of the Smart Client.
This class is used to display new messages in the message area of the Smart Client, as well as changing or removing existing messages.
Fill this class when sending a message with id SmartClient.SmartClientMessageCommand
 CVideoOS.Platform.Messaging.SmartClientToastDataAbstract base class for the available toast message types. Use the specialized implementations to fill in information about the toast message to display
 CVideoOS.Platform.Messaging.SmartMapGetPositionRequestDataThis class is used with the MessageId.SmartClient.SmartMapGetPositionRequest message
 CVideoOS.Platform.Messaging.SmartMapGoToAreaCommandDataThis class is used with the MessageId.SmartClient.SmartMapGoToAreaCommand message
 CVideoOS.Platform.Messaging.SmartMapGoToLocationCommandDataThis class is used with the MessageId.SmartClient.SmartMapGoToLocationCommand message
 CVideoOS.Platform.Messaging.SmartMapGoToPositionCommandDataThis class is used with the MessageId.SmartClient.SmartMapGoToPositionCommand message
 CVideoOS.Platform.Messaging.SmartMapNavigateToCameraDataThis class is used with the MessageId.SmartClient.SmartMapNavigateToCamera message
 CVideoOS.Platform.Messaging.SmartMapNavigateToDeviceDataThis class is used with the MessageId.SmartClient.SmartMapNavigateToDevice message
 CVideoOS.Platform.Messaging.SmartMapPositionDataThis class is used with the MessageId.SmartClient.SmartMapPositionChangedIndication or MessageId.SmartClient.SmartMapGetPositionRequest message
 CVideoOS.Platform.Messaging.SmartMapSelectItemCommandDataThis class is used with the MessageId.SmartClient.SmartMapSelectItemCommand message
 CVideoOS.Platform.Messaging.SystemConfigurationChangedDetailsClass defines one change, used by SystemConfigurationChangedDetailsIndicationData
 CVideoOS.Platform.Messaging.SystemConfigurationChangedDetailsIndicationDataThis class is coming with the MessageId.System.SystemConfigurationChangedDetailsIndication message
 CVideoOS.Platform.Messaging.TalkToSpeakerDataThe class send as data when sending a command to start or stop the 'talk' button. The command TalkToSpeakerCommand with this Data is implemented in the Smart Client
 CVideoOS.Platform.Messaging.VideoWallApplyXmlCommandDataContains information for what to change on a video wall. The listed devices (cameras) are removed from the monitor
 CVideoOS.Platform.Messaging.VideoWallIndicationDataContains description of a change on a video wall
 CVideoOS.Platform.Messaging.VideoWallRemoveCamerasCommandDataContains information for what to change on a video wall
 CVideoOS.Platform.Messaging.VideoWallSetCamerasCommandDataContains information for what to change on a video wall
 CVideoOS.Platform.Messaging.VideoWallSetLayoutAndCamerasCommandDataContains information for what to change on a video wall
 CVideoOS.Platform.Messaging.VideoWallSetLayoutCommandDataContains information for what to change on a video wall
 CVideoOS.Platform.Messaging.VideoWallShowTextCommandDataContains information for what to change on the Video Wall
 CVideoOS.Platform.Messaging.ViewItemControlCommandDataA set of const strings to defined available values for the ViewItemControlCommand message
 CVideoOS.Platform.Messaging.ViewItemInformationContains description of one ViewItem.
The class is used by the VideoWallIndicationData class to inform about VideoWall View changes
 CVideoOS.Platform.Messaging.WindowStateChangedIndicationDataA set of const strings to define available values for the WindowStateChangedIndication message
 CVideoOS.Platform.Metadata.MetadataContentThis class is responsible for containing metadata received from the VMS system
 CVideoOS.Platform.Metadata.MetadataDeserializerThis class is responsible for deserializing metadata stored in the ONVIF metadata format
 CVideoOS.Platform.Metadata.MetadataSerializerThis class is responsible for serializing metadata to the ONVIF XML metadata format
 CVideoOS.Platform.PluginDefinitionThe PluginDefinition is the ‘entry’ point to any plug-in.
This is the starting point for any plug-in development and the class MUST be available for a plug-in to be loaded.
Here the references to all other plug-in known objects and classes are defined. The class is an abstract class where all implemented methods and properties need to be declared with override. The class is constructed when the environment is loading the DLL
 CVideoOS.Platform.PositioningInformationDefines the position for an Item, the direction and view zone
 CVideoOS.Platform.Properties.StringsA strongly-typed resource class, for looking up localized strings, etc
 CVideoOS.Platform.Proxy.Alarm.IAlarmCommandToken
 CVideoOS.Platform.Proxy.AlarmClient.AlarmClientManagerThe alarm client manager can be used in order to handle alarm client VideoOS.Platform.Proxy.AlarmClient.IAlarmClient. The alarm client manager will create a alarm client to use when handling alarms. The client is created based on a server id which is the server to get the alarms from. In order to receive alarms from the server it must have a Event Server running. The alarm client manager will keep track of created clients and handle caching of the clients
 CVideoOS.Platform.Proxy.AlarmClient.IAlarmClientThe alarm client is used to handle alarm specific actions. The client can be used to both add and get alarms. Updates of already existing alarms can be done primarily updating the alarm management field such as alarm state and and owner. The alarm history can also be received which is the collection of all the changes made to a specific alarm
 CVideoOS.Platform.Proxy.BookmarkApi.BookmarkDataModel
 CVideoOS.Platform.Proxy.BookmarkApi.IBookmarkApiClient
 CVideoOS.Platform.Proxy.BookmarkApi.NewBookmarkReferenceDataModel
 CVideoOS.Platform.Proxy.BookmarkApi.PatchBookmarkDataModel
 CVideoOS.Platform.Proxy.BookmarkApi.PathDataModel
 CVideoOS.Platform.Proxy.BookmarkApi.RelationsDataModel
 CVideoOS.Platform.Proxy.ConfigApi.ConfigurationApiManagerClass containing proxy classes for towards all servers this usercontext is working with
 CVideoOS.Platform.Proxy.ConfigApi.ConfigurationItemPathClass that represents a path in the configuration API
 CVideoOS.Platform.Proxy.ConfigApi.IConfigurationClientDecorator
 CVideoOS.Platform.Proxy.EvidenceLockApi.EvidenceLockDataModel
 CVideoOS.Platform.Proxy.EvidenceLockApi.IEvidenceLockApiClient
 CVideoOS.Platform.Proxy.EvidenceLockApi.NewEvidenceLockReferenceDataModel
 CVideoOS.Platform.Proxy.EvidenceLockApi.PatchEvidenceLockDataModel
 CVideoOS.Platform.Proxy.EvidenceLockApi.PathDataModel
 CVideoOS.Platform.Proxy.EvidenceLockApi.RelationsDataModel
 CVideoOS.Platform.Proxy.EvidenceLockApi.RetentionOptionDataModel
 CVideoOS.Platform.Proxy.RestApi.ApiCountersA set of counters related to the use of the RestAPI
 CVideoOS.Platform.Proxy.RestApi.ConfigApiRelated.IRestSerializer
 CVideoOS.Platform.Proxy.RestApi.DetailRest
 CVideoOS.Platform.Proxy.RestApi.ErrorRest
 CVideoOS.Platform.Proxy.RestApi.IRestApiClient
 CVideoOS.Platform.Proxy.RestApi.IServiceRegistrationClientDefining the interface for the rest implementaion of the registration service
 CVideoOS.Platform.Proxy.RestApi.ServiceInformationThe information stored for each service
 CVideoOS.Platform.Proxy.RestApi.ServiceInformationEndpointContains details for each available endpoint
 CVideoOS.Platform.Proxy.RestApi.WellKnownInformationClass to assist with getting and interpreting the well known information provided by the IDP
 CVideoOS.Platform.Proxy.SecurityApi.EffectivePermissionsModelContains the effective permissions for all the objects within a security namespace, the caller has access to
 CVideoOS.Platform.Proxy.SecurityApi.ISecurityApiClient
 CVideoOS.Platform.Proxy.SecurityApi.ObjectPermissionsModelContains permission bits for one objectId
 CVideoOS.Platform.Proxy.SecurityApi.SecurityActionDefines a security action, also called permission
 CVideoOS.Platform.Proxy.SecurityApi.SecurityNamespaceModelContains the definition of one security namespace
 CVideoOS.Platform.Resources.StringsA strongly-typed resource class, for looking up localized strings, etc
 CVideoOS.Platform.RuleAction.ActionDefinitionDefinition of an action
 CVideoOS.Platform.RuleAction.ActionElementSelectable element in the action
 CVideoOS.Platform.RuleAction.ActionManagerManager for plug-ins to specify and execute actions
 CVideoOS.Platform.Search.ActivateResultResult of the SearchToolbarPluginInstance.Activate method
 CVideoOS.Platform.Search.Errors.SearchErrorAbstract base class for all search errors
 CVideoOS.Platform.Search.FilterConfigurations.FilterConfigurationBaseBase class for all search filter configuration types. These types are used as input to the user control resolver when creating a SearchFilterEditControl
 CVideoOS.Platform.Search.FilterValues.FilterValueBaseFilter value abstraction which must be the base class for all search filter values. The sub-classes must be serializable to allow storing/retrieving filter values to/from disk
 CVideoOS.Platform.Search.FilterValues.RegionSelectionRegions selection for a single camera item
 CVideoOS.Platform.Search.FilterValues.Standard.PersonAgeFilterValueFilter value representing an age span for a person
 CVideoOS.Platform.Search.FilterValues.Standard.PersonGenderFilterValueFilter value representing genders of a person
 CVideoOS.Platform.Search.FilterValues.Standard.VehicleColorFilterValueFilter value representing colors of a vehicle
 CVideoOS.Platform.Search.FilterValues.Standard.VehicleLicensePlateFilterValueFilter value representing the license plate of a vehicle
 CVideoOS.Platform.Search.Results.BoundingShapeAbstract base class for all supported bounding shapes. Do not create custom implementation of the class but instead always use the built-in implementations that are available in the framework
 CVideoOS.Platform.Search.Results.ResultPropertySearch result property. Property has Title and typed value (for example, DateTimeValue). Value always contains string representation of the type value. There only one typed value is not empty/null
 CVideoOS.Platform.Search.Results.SearchResultUserControlTypesContains the ids for built in search results for the built in visual representation of search results
 CVideoOS.Platform.Search.SearchAgentPluginDefines the search agent plugin interface. Inherit this class to create an implementation of a specific type of search agent
 CVideoOS.Platform.Search.SearchCriteriaData class containing all search criteria data (i.e. values of selected SearchFilters) which is to be used in the SearchDefinition it belongs to
 CVideoOS.Platform.Search.SearchDefinitionRepresents an independent search definition
 CVideoOS.Platform.Search.SearchFilterRepresents a single searchable filter
 CVideoOS.Platform.Search.SearchFilterCategoryRepresents a single searchable category containing all the filters associated with that category
 CVideoOS.Platform.Search.SearchInputData class representing the input to the SearchDefinition.Search(VideoOS.Platform.Search.SearchInput,System.Threading.CancellationToken) method
 CVideoOS.Platform.Search.SearchResultDataRepresents a single search result. A search performed on a Search.SearchDefinition instance may yield many instances of derivatives of this class
 CVideoOS.Platform.Search.SearchResultDataMetadataObjectsClass representing a set of metadata objects that is associated with a SearchResultData
 CVideoOS.Platform.Search.SearchScopeSearch scope used when starting a search. Includes a timespan and list of items in which to limit the search
 CVideoOS.Platform.Search.SearchToolbarPluginThe SearchToolbarPlugin defines a plugin that resides in the action/preview area of the Search tab in Smart Client
 CVideoOS.Platform.Search.SearchUserControlResolverSingleton used to resolve/instantiate user controls for search results and/or search filters
 CVideoOS.Platform.Search.SearchUserControlsPluginDefines the search user controls plugin interface. Inherit this class to create custom UI controls to visualize SearchResultData and/or FilterConfigurationBase instances
 CVideoOS.Platform.ServerIdThe ServerId holds enough information for creating a connection.
Typically this can be used to construct an URL.
For plug-in developed solutions the ServerId need to be understood by the plug-ins own ItemManager, as this class is the primary place for creating, deleting and getting Items.
 CVideoOS.Platform.UI.Controls.VideoOSMessageBoxUtility class used to display a standard message box to the user
 CVideoOS.Platform.UI.Controls.VideoOSMessageBox.OptionsOptions class allowing a caller to override the defaults (eg. buttons text and appearances)
 CVideoOS.Platform.UI.Controls.VideoOSMessageBox.ResultClass containing the message box result
 CVideoOS.Platform.UI.Controls.VideoOSStyleFocusVisualStyleStatic class containing attached properties used to apply a focus visual style matching the current theme
 CVideoOS.Platform.UI.Controls.VideoOSTableColumnBaseBase class for all column types supported by VideoOSTable
 CVideoOS.Platform.UI.Controls.VideoOSThemingExposes utility method to apply a specific theme on a particular branch of the visual tree
 CVideoOS.Platform.UI.DependencyObjectExtension
 CVideoOS.Platform.UI.ItemPickerForm.IsItemVisibleEventArgsSend on the IsItemVisibleEvent event for checking if an Item should be visible
 CVideoOS.Platform.UI.ItemPickerForm.ValidateEventArgsIs used on the ValidateSelectionEvent event - when the client application can validate if an Item is selectable
 CVideoOS.Platform.UI.Resources.StringsA strongly-typed resource class, for looking up localized strings, etc
 CVideoOS.Platform.UI.ScrollableWindowsFormsHost.NativeMethods.RECT
 CVideoOS.Platform.UI.UtilA utility class to collect all Icons used in the system for both plug-ins and for the Environment.
Lookup to an Icon is done via KindToImageIndex, and KindToCategory can be used for the default Category if an Kind
 CVideoOS.Platform.UI.Utils.PopupUtils.NativeMethods.MonitorInfoEx
 CVideoOS.Platform.UI.Utils.PopupUtils.NativeMethods.PointStruct
 CVideoOS.Platform.UI.Utils.PopupUtils.NativeMethods.Rect
 CVideoOS.Platform.UI.WindowsFormsHostConstants
 CVideoOS.Platform.UserContextThis class is used for stand alone applications and services that need to handle multiple users logging in to the same set of server(s).
Some functions and methods are required to be called though this class instead of the usual Configuration.Instance.SomeMethod
 CVideoOS.Platform.Util.AdaptiveStreaming.IStreamSelectionParamsInterface fro setting stream selection parameters
 CVideoOS.Platform.Util.AnalyticsOverlayBuilderA utility class to construct a bitmap that can be used as an overlay on top of video
 CVideoOS.Platform.Util.ByteArrayHelperHelper class for work with byte arrays
 CVideoOS.Platform.Util.ConfigurationChangedServiceFor internal use only
 CVideoOS.Platform.Util.DifferentiatedAdministrationRightsThis class is only relevant for Corporate VMS systems, while running inside the Management Client
 CVideoOS.Platform.Util.Error.IErrorHandler< out T >Interface for subscribing to generic error (of type exception)
 CVideoOS.Platform.Util.Error.IErrorHandler< T >
 CVideoOS.Platform.Util.GuidUtilUtility class for dealing with creation of unique Guids based on a string input. NOTE: Code borrowed and slightly modified (only SHA1 support) from this OpenSource project (license terms updated accordingly): https://github.com/Faithlife/FaithlifeUtility/blob/master/src/Faithlife.Utility/GuidUtility.cs
 CVideoOS.Platform.Util.Images.CropDefaultValuesStatic class representing cropping rectangle default values (eg. no cropping)
 CVideoOS.Platform.Util.Images.DecoderDefaultValuesStatic class representing decoder default values
 CVideoOS.Platform.Util.ImageServer.UserIdentificationClass handling identity of a user. Depending on user type, not all fields will be filled for a given user
 CVideoOS.Platform.Util.ImageServer.UserIdTypeClass containing definitions of different user types
 CVideoOS.Platform.Util.ImageServer.UserIdType.InternalSIDHandles 'fake' SID's for basic users
 CVideoOS.Platform.Util.ImageServer.UserIdType.UserIDTypeConstantsConstant class for UserID specific information. E.g. Guids for UserId types
 CVideoOS.Platform.Util.InternalConfigServiceFor internal use only
 CVideoOS.Platform.Util.InternalMediaServiceFor internal use only
 CVideoOS.Platform.Util.InternalMediaService.RawConnectParamsFor internal use only
 CVideoOS.Platform.Util.IPcmSourceSettingsInterface for getting audio parameters
 CVideoOS.Platform.Util.JpegUtilUtil to analyze JPEG content
 CVideoOS.Platform.Util.MigrationFor internal use
 CVideoOS.Platform.Util.Pcm.PcmHelperHelper class containing different utilities
 CVideoOS.Platform.Util.Performance.ElapseTimeTracker
 CVideoOS.Platform.Util.Performance.PerformanceInformationIs used to store performance information, used by somee Environments
 CVideoOS.Platform.Util.Performance.TimeInfoClass
 CVideoOS.Platform.Util.SecurityAccessThis class assists in maintaining security access for Items and validating what Items a user can access. The plug-in must be sure to register and unregister the Items that is under access control, e.g. has a SecurityAccess defined. This could be done in the ItemManager.ValidateAndSaveUserControl method with a call to RegisterItem(Item) and in the ItemManager.DeleteItem(Item) with a call to UnregisterItem(Item)
 CVideoOS.Platform.Util.ServiceUtilThe ServiceUtil class is used as common point to register services and later retrieve a list of the registered services.

Service types are identified by a Guid, and in case of multiple registrations of the same service type, an instance field is used to distinguish them
 CVideoOS.Platform.Util.SortContains method for Sorting assistance
 CVideoOS.Platform.Util.SpnFactoryThe SpnFactory is a helper class to get the right SPN for a connection
 CVideoOS.Platform.Util.Svc.IServiceRegistrationService
 CVideoOS.Platform.Util.TimeConvert
 CVideoOS.Platform.Util.ToolkitXmlProviders.IToolkitXmlProviderParamsBase interface for toolkit provider params
 CVideoOS.Platform.Util.ToolkitXmlProviders.ToMediaConverterClass providing convertions form item, fqid and kind to media string
 CVideoOS.Platform.Util.UrlUtilUtility for URL formatting
 CVideoOS.Platform.Util.ViewItemUtilityConstruct an XML node containg the definition of a View, as used by Video Wall
 CWindow
 CWindowsFormsHost