V4.4.0 (09/2017)
SDK version v4.4.0: Release Notes
Main Changes:
- Better multithread support: concurrent applications made with Papillon will be more reliable and faster (several race conditions fixed, see Fixes section below)
- New: new face logging plugin, FaceLog6 (Real-time face identification), optimised to handle several high-definition video streams on a single computation node (i7 CPU or higher recommended)
- Fixed: random crash in SafeZone2D (Intelligent Motion Detection) plugin when exiting an application
New features:
- Added: Core: PFrame: new method PFrame::Crop()
- Added: Core: PFeatureMap: new method PFeatureMap::Translate() to shift location of feature points and feature rectangles
- Added: Core: PFeatureMap: new methods PFeatureMap::AddPoint() and PFeatureMap::AddRectangle() to replace PFeatureMap::Add() wich is now deprecated
- Added: Core: PDetection: new method PDetection::GetOrigin() and PDetection::SetOrigin() to handle regions-of-interest
- Added: Core: PDetection: new method PDetection::Translate() to shift location of detected points and rectangles
- Added: Core: PDetectionList: new method PDetectionList::Translate() to shift location of detections (PDetection)
- Added: Core: PMath: new method PMath::RandBool()
- Added: Core: new classes to help developers to create reliable multithreaded applications: PReadWriteLock, PReadLocker, PWriteLocker
- Added: Core: for convenience, PInt64 values can now be cast to PInt32 if they fit in (see PBoxing and PObject::CastTo())
- Added: support of Region-Of-Interet (ROI) to FaceLog2 (DEPRECATED, favour FaceLog6) and FaceLog4 (DEPRECATED, favour FaceLog6) plugins
Changes:
- Improved: PWatchlist is faster when used by multiple threads at the same time
- Improved: PImage: better error message when PImage::Load() fails
- Changed: PapillonSDK::Initialise(): more logs at startup to quickly identify main issues about plugins or licenses
- Changed: PapillonSDK::Initialise(): flag E_LOAD_PLUGINS have been replaced by PapillonSDK::E_DONT_LOAD_PLUGINS: all available Papillon plugins are now loaded by default when calling PapillonSDK::Initialise(); you have to specify PapillonSDK::E_DONT_LOAD_PLUGINS flag if you don't want to load plugins at startup
- Changed: PapillonSDK::Initialise(): new flag PapillonSDK::E_SILENT_START to disable logging when calling PapillonSDK::Initialise()
- Improved: PUtils: add support of regions-of-interest in PUtils::DrawLabel() which now handle origin parameters stored in PDetection
- Changed: PMap::Remove() (and PProperties::Remove()) now returns a PResult object rather than a bool
- Changed: PResult: all methods related to serialiZation methods (named with Z) are now deprecated and have been replaced by serialiSation (named with S) for consistent english naming, see PResult::ErrorSerialisation() for example (PResult::ErrorSerialization() is now deprecated)
- Changed: PSystemInfo::GetPhysicallyInstalledRAMInMB() is now deprecated and has been replaced PSystemInfo::GetTotalRAM()
- Removed: PAlarm: methods related to Twilio (cloud communication platforms) have been removed
- Improved: some additional tests have been added to Installation Auto Test program to check correct SDK installation
Fixes:
- Fixed: multithread issue: race condition in plugin DescriberDnn
- Fixed: multithread issue: race condition in PGuid::CreateUniqueId()
- Fixed: multithread issue: race condition in PFrame::GetTimestampUTC()
- Fixed: multithread issue: race condition in PFeaturePoint::FeaturePoints()
- Fixed: multithread issue: race condition in PMath::RandUInt32(), PMath::RandUInt64(), PMath::RandUInt63()
- Fixed: multithread issue: race condition in PObjectMonitoring (internal objects counters issue)
- Fixed: random crash in SafeZone2D (Intelligent Motion Detection) plugin when exiting an application (destruction order of static objects)
Documentation:
- Minor fixes and improvements in Quick Start Guide
- Improved: PAlarm: better documentation for PAlarm::SendEmail()