/// -or-<br/>
/// <paramref name="type"/> is <see cref="BarcodeType.QR"/>.<br/>
/// -or-<br/>
- /// <paramref name="type"/> is invalid.
+ /// <paramref name="type"/> is invalid.<br/>
/// -or-<br/>
/// <paramref name="message"/> contains illegal characters.
/// </exception>
/// <exception cref="ArgumentException">
/// <paramref name="message"/> is too long.<br/>
/// -or-<br/>
- /// <paramref name="type"/> is <see cref="BarcodeType.QR"/>.
+ /// <paramref name="type"/> is <see cref="BarcodeType.QR"/>.<br/>
/// -or-<br/>
- /// <paramref name="type"/> is invalid.
+ /// <paramref name="type"/> is invalid.<br/>
/// -or-<br/>
/// <paramref name="message"/> contains illegal characters.
/// </exception>
/// <exception cref="ArgumentException">
/// <paramref name="message"/> is too long.<br/>
/// -or-<br/>
- /// <paramref name="type"/> is <see cref="BarcodeType.QR"/>.
+ /// <paramref name="type"/> is <see cref="BarcodeType.QR"/>.<br/>
/// -or-<br/>
- /// <paramref name="type"/> is invalid.
+ /// <paramref name="type"/> is invalid.<br/>
/// -or-<br/>
/// <paramref name="message"/> contains illegal characters.
/// </exception>
/// <exception cref="ArgumentException">
/// <paramref name="message"/> is too long.<br/>
/// -or-<br/>
- /// <paramref name="type"/> is <see cref="BarcodeType.QR"/>.
+ /// <paramref name="type"/> is <see cref="BarcodeType.QR"/>.<br/>
/// -or-<br/>
- /// <paramref name="type"/> is invalid.
+ /// <paramref name="type"/> is invalid.<br/>
/// -or-<br/>
/// <paramref name="message"/> contains illegal characters.
/// </exception>
/// </exception>
/// <exception cref="ArgumentNullException"><paramref name="path"/> is null.</exception>
/// <exception cref="ArgumentException"><paramref name="imageFormat"/> is invalid.</exception>
+ /// <example>
/// <code>
- /// BarcodeImageConfiguration imageConfig = new BarcodeImageConfiguration(new Size(500, 400), "/opt/usr/test-barcode-generate-new", BarcodeImageFormat.JPG);
+ /// var imageConfig = new BarcodeImageConfiguration(new Size(500, 400), "/opt/usr/test-barcode-generate-new", BarcodeImageFormat.JPG);
/// </code>
+ /// </example>
/// <since_tizen> 3 </since_tizen>
public BarcodeImageConfiguration(Size size, string path, BarcodeImageFormat imageFormat)
{
/// </exception>
/// <exception cref="ArgumentNullException"><paramref name="path"/> is null.</exception>
/// <exception cref="ArgumentException"><paramref name="imageFormat"/> is invalid.</exception>
+ /// <example>
/// <code>
- /// BarcodeImageConfiguration imageConfig = new BarcodeImageConfiguration(500, 400, "/opt/usr/test-barcode-generate-new", BarcodeImageFormat.JPG);
+ /// var imageConfig = new BarcodeImageConfiguration(500, 400, "/opt/usr/test-barcode-generate-new", BarcodeImageFormat.JPG);
/// </code>
+ /// </example>
/// <since_tizen> 3 </since_tizen>
public BarcodeImageConfiguration(int width, int height, string path, BarcodeImageFormat imageFormat)
: this(new Size(width, height), path, imageFormat)
internal EngineConfiguration(string engineType1, string engineType2)
{
-
if (IsSupportedEngineType(engineType1, engineType2) == false)
{
throw new NotSupportedException($"{engineType1} or {engineType2} : Not Supported");
EngineConfig.SetInt(Handle, key, value).Validate("Failed to set attribute");
}
-
internal void Set(string key, bool value)
{
EngineConfig.SetBool(Handle, key, value).Validate("Failed to set attribute");
/// <summary>
/// Represents a configuration of <see cref="FaceDetector"/> instances.
/// </summary>
+ /// <feature>http://tizen.org/feature/vision.face_recognition</feature>
/// <since_tizen> 3 </since_tizen>
public class FaceDetectionConfiguration : EngineConfiguration
{
/// -or-<br/>
/// The format of <paramref name="source"/> is not supported.
/// </exception>
+ /// <feature>http://tizen.org/feature/vision.face_recognition</feature>
/// <since_tizen> 3 </since_tizen>
public static async Task<Rectangle[]> DetectAsync(MediaVisionSource source)
{
/// <returns>A task that represents the asynchronous detect operation.</returns>
/// <exception cref="ArgumentNullException"><paramref name="source"/> is null.</exception>
/// <exception cref="NotSupportedException">The feature is not supported.</exception>
+ /// <feature>http://tizen.org/feature/vision.face_recognition</feature>
/// <since_tizen> 3 </since_tizen>
public static async Task<Rectangle[]> DetectAsync(MediaVisionSource source,
FaceDetectionConfiguration config)
/// <summary>
/// Represents a configuration of <see cref="FaceRecognizer"/> instances.
/// </summary>
+ /// <feature>http://tizen.org/feature/vision.face_recognition</feature>
/// <since_tizen> 3 </since_tizen>
public class FaceRecognitionConfiguration : EngineConfiguration
{
/// <summary>
/// Represents the face recognition model interface.
/// </summary>
+ /// <feature>http://tizen.org/feature/vision.face_recognition</feature>
/// <since_tizen> 3 </since_tizen>
public class FaceRecognitionModel : IDisposable
{
/// <summary>
/// Gets labels that had been learned by the model.
/// </summary>
+ /// <exception cref="ObjectDisposedException">The <see cref="FaceRecognitionModel"/> has already been disposed of.</exception>
/// <since_tizen> 3</since_tizen>
public int[] Labels
{
IntPtr unmangedArray = IntPtr.Zero;
try
{
- uint numOfLabels = 0;
-
- InteropModel.QueryLabels(Handle, out unmangedArray, out numOfLabels).
+ InteropModel.QueryLabels(Handle, out unmangedArray, out var numOfLabels).
Validate("Failed to retrieve face labels.");
int[] labels = new int[numOfLabels];
/// <exception cref="NotSupportedException">The feature is not supported.</exception>
/// <exception cref="ObjectDisposedException"><paramref name="source"/> has already been disposed of.</exception>
/// <exception cref="InvalidOperationException"><paramref name="recognitionModel"/> is untrained model.</exception>
+ /// <feature>http://tizen.org/feature/vision.face_recognition</feature>
/// <since_tizen> 3 </since_tizen>
public static async Task<FaceRecognitionResult> RecognizeAsync(MediaVisionSource source,
FaceRecognitionModel recognitionModel)
/// <exception cref="NotSupportedException">The feature is not supported.</exception>
/// <exception cref="ObjectDisposedException"><paramref name="source"/> has already been disposed of.</exception>
/// <exception cref="InvalidOperationException"><paramref name="recognitionModel"/> is untrained model.</exception>
+ /// <feature>http://tizen.org/feature/vision.face_recognition</feature>
/// <since_tizen> 3 </since_tizen>
public static async Task<FaceRecognitionResult> RecognizeAsync(MediaVisionSource source,
FaceRecognitionModel recognitionModel, Rectangle bound)
/// <paramref name="config"/> has already been disposed of.
/// </exception>
/// <exception cref="InvalidOperationException"><paramref name="recognitionModel"/> is untrained model.</exception>
+ /// <feature>http://tizen.org/feature/vision.face_recognition</feature>
/// <since_tizen> 3 </since_tizen>
public static async Task<FaceRecognitionResult> RecognizeAsync(MediaVisionSource source,
FaceRecognitionModel recognitionModel, FaceRecognitionConfiguration config)
return await InvokeRecognizeAsync(source, recognitionModel, null, config);
}
-
/// <summary>
/// Performs face recognition on the source with <see cref="FaceRecognitionModel"/>, <see cref="FaceRecognitionConfiguration"/>
/// and a bounding box.
/// <paramref name="config"/> has already been disposed of.
/// </exception>
/// <exception cref="InvalidOperationException"><paramref name="recognitionModel"/> is untrained model.</exception>
+ /// <feature>http://tizen.org/feature/vision.face_recognition</feature>
/// <since_tizen> 3 </since_tizen>
public static async Task<FaceRecognitionResult> RecognizeAsync(MediaVisionSource source,
FaceRecognitionModel recognitionModel, Rectangle bound, FaceRecognitionConfiguration config)
/// <exception cref="ArgumentNullException"><paramref name="source"/> is null.</exception>
/// <exception cref="ObjectDisposedException"><paramref name="source"/> has already been disposed of.</exception>
/// <exception cref="NotSupportedException">The feature is not supported.</exception>
+ /// <feature>http://tizen.org/feature/vision.face_recognition</feature>
/// <since_tizen> 3 </since_tizen>
public static async Task<EyeCondition> RecognizeEyeConditionAsync(MediaVisionSource source,
Rectangle bound)
/// <paramref name="config"/> has already been disposed of.
/// </exception>
/// <exception cref="NotSupportedException">The feature is not supported.</exception>
+ /// <feature>http://tizen.org/feature/vision.face_recognition</feature>
/// <since_tizen> 3 </since_tizen>
public static async Task<EyeCondition> RecognizeEyeConditionAsync(MediaVisionSource source,
Rectangle bound, FaceRecognitionConfiguration config)
/// <exception cref="ArgumentNullException"><paramref name="source"/> is null.</exception>
/// <exception cref="ObjectDisposedException"><paramref name="source"/> has already been disposed of.</exception>
/// <exception cref="NotSupportedException">The feature is not supported.</exception>
+ /// <feature>http://tizen.org/feature/vision.face_recognition</feature>
/// <since_tizen> 3 </since_tizen>
public static async Task<FacialExpression> RecognizeFacialExpressionAsync(MediaVisionSource source,
Rectangle bound)
/// <paramref name="config"/> has already been disposed of.
/// </exception>
/// <exception cref="NotSupportedException">The feature is not supported.</exception>
+ /// <feature>http://tizen.org/feature/vision.face_recognition</feature>
/// <since_tizen> 3 </since_tizen>
public static async Task<FacialExpression> RecognizeFacialExpressionAsync(MediaVisionSource source,
Rectangle bound, FaceRecognitionConfiguration config)
/// </exception>
/// <exception cref="NotSupportedException">The feature is not supported.</exception>
/// <exception cref="InvalidOperationException"><paramref name="trackingModel"/> is not prepared.</exception>
+ /// <feature>http://tizen.org/feature/vision.face_recognition</feature>
/// <since_tizen> 3 </since_tizen>
public static async Task<FaceTrackingResult> TrackAsync(MediaVisionSource source,
FaceTrackingModel trackingModel, bool doLearn)
/// <summary>
/// Represents the face tracking model.
/// </summary>
+ /// <feature>http://tizen.org/feature/vision.face_recognition</feature>
/// <since_tizen> 3 </since_tizen>
public class FaceTrackingModel : IDisposable
{
/// <param name="path">Path to the file to save the model.</param>
/// <exception cref="ArgumentNullException"><paramref name="path"/> is null.</exception>
/// <exception cref="UnauthorizedAccessException">No permission to write to the specified path.</exception>
- /// <exception cref="ObjectDisposedException">The <see cref="FaceRecognitionModel"/> has already been disposed of.</exception>
+ /// <exception cref="ObjectDisposedException">The <see cref="FaceTrackingModel"/> has already been disposed of.</exception>
/// <exception cref="DirectoryNotFoundException">The directory for <paramref name="path"/> does not exist.</exception>
/// <since_tizen> 3 </since_tizen>
public void Save(string path)
}
/// <summary>
- /// Gets the value indicating the recognition is successful.
+ /// Gets the value indicating the tracking is successful.
/// </summary>
/// <since_tizen> 3</since_tizen>
public bool Success { get; }
/// <summary>
/// Represents a configuration of fill operations of <see cref="ImageObject"/> instances.
/// </summary>
+ /// <feature>http://tizen.org/feature/vision.image_recognition</feature>
/// <since_tizen> 3 </since_tizen>
public class ImageFillConfiguration : EngineConfiguration
{
/// <summary>
/// Represents an image object.
/// </summary>
+ /// <feature>http://tizen.org/feature/vision.image_recognition</feature>
/// <since_tizen> 3 </since_tizen>
public class ImageObject : IDisposable
{
/// <summary>
/// Sets the label for the <see cref="ImageObject"/>.
/// </summary>
+ /// <param name="label">The label which will be assigned to the image object.</param>
/// <seealso cref="GetLabel"/>
/// <since_tizen> 3 </since_tizen>
public void SetLabel(int label)
/// <summary>
/// Fills the image object.<br/>
- /// Extracts data from @a source image which will be needed for recognition of depicted object in @a location.
+ /// Extracts data from source image which will be needed for recognition of depicted object.
/// </summary>
/// <param name="source">The source image where image object is depicted.</param>
/// <exception cref="ArgumentNullException"><paramref name="source"/> is null.</exception>
/// <summary>
/// Fills the image object.<br/>
- /// Extracts data from @a source image which will be needed for recognition of depicted object in @a location.
+ /// Extracts data from source image which will be needed for recognition of depicted object.
/// </summary>
/// <param name="source">The source image where image object is depicted.</param>
/// <param name="config">The configuration used for extract recognition data from source. This value can be null.</param>
/// <summary>
/// Fills the image object.<br/>
- /// Extracts data from @a source image which will be needed for recognition of depicted object in @a location.
+ /// Extracts data from source image which will be needed for recognition of depicted object
+ /// in location.
/// </summary>
/// <param name="source">The source image where image object is depicted.</param>
/// <param name="rect">Rectangular bound of the image object on the source image.</param>
/// <summary>
/// Fills the image object.<br/>
- /// Extracts data from @a source image which will be needed for recognition of depicted object in @a location.
+ /// Extracts data from source image which will be needed for recognition of depicted object
+ /// in location.
/// </summary>
/// <param name="source">The source image where image object is depicted.</param>
/// <param name="config">The configuration used for extract recognition data from source. This value can be null.</param>
/// <param name="path">Path to the file to save the model.</param>
/// <exception cref="ArgumentNullException"><paramref name="path"/> is null.</exception>
/// <exception cref="UnauthorizedAccessException">No permission to write to the specified path.</exception>
- /// <exception cref="ObjectDisposedException">The <see cref="FaceRecognitionModel"/> has already been disposed of.</exception>
+ /// <exception cref="ObjectDisposedException">The <see cref="ImageObject"/> has already been disposed of.</exception>
/// <exception cref="DirectoryNotFoundException">The directory for <paramref name="path"/> does not exist.</exception>
/// <since_tizen> 3 </since_tizen>
public void Save(string path)
/// <summary>
/// Represents a configuration of <see cref="ImageRecognizer"/>.
/// </summary>
+ /// <feature>http://tizen.org/feature/vision.image_recognition</feature>
/// <since_tizen> 3 </since_tizen>
public class ImageRecognitionConfiguration : EngineConfiguration
{
private const string KeyTolerantPartMatchingError = "MV_IMAGE_RECOGNITION_TOLERANT_MATCH_PART_ERR";
/// <summary>
- /// A read-only field that represents the default value of <see cref="KeySceneScaleFactor"/>.
+ /// A read-only field that represents the default value of <see cref="SceneScaleFactor"/>.
/// </summary>
/// <since_tizen> 3 </since_tizen>
public static readonly double DefaultSceneScaleFactor = 1.2;
/// <summary>
/// The region of recognized image object on the source image.
/// </summary>
+ /// <value>The region of recognized image object if successful, otherwise null.</value>
/// <since_tizen> 3 </since_tizen>
public Quadrangle Region { get; }
/// <exception cref="ArgumentException"><paramref name="imageObjects"/> has no elements.(The length is zero.)</exception>
/// <exception cref="NotSupportedException">The feature is not supported.</exception>
/// <exception cref="ObjectDisposedException"><paramref name="source"/> has already been disposed of.</exception>
+ /// <feature>http://tizen.org/feature/vision.image_recognition</feature>
/// <since_tizen> 3 </since_tizen>
public static async Task<IEnumerable<ImageRecognitionResult>> RecognizeAsync(
MediaVisionSource source, ImageObject[] imageObjects)
/// -or-<br/>
/// <paramref name="config"/> has already been disposed of.
/// </exception>
+ /// <feature>http://tizen.org/feature/vision.image_recognition</feature>
/// <since_tizen> 3 </since_tizen>
public static async Task<IEnumerable<ImageRecognitionResult>> RecognizeAsync(MediaVisionSource source,
ImageObject[] imageObjects, ImageRecognitionConfiguration config)
/// </exception>
/// <exception cref="ArgumentException"><paramref name="trackingModel"/> has no target.</exception>
/// <seealso cref="ImageTrackingModel.SetTarget(ImageObject)"/>
+ /// <feature>http://tizen.org/feature/vision.image_recognition</feature>
/// <since_tizen> 3 </since_tizen>
public static async Task<Quadrangle> TrackAsync(MediaVisionSource source,
ImageTrackingModel trackingModel)
/// </exception>
/// <exception cref="ArgumentException"><paramref name="trackingModel"/> has no target.</exception>
/// <seealso cref="ImageTrackingModel.SetTarget(ImageObject)"/>
+ /// <feature>http://tizen.org/feature/vision.image_recognition</feature>
/// <since_tizen> 3 </since_tizen>
public static async Task<Quadrangle> TrackAsync(MediaVisionSource source,
ImageTrackingModel trackingModel, ImageTrackingConfiguration config)
/// <summary>
/// Represents a configuration of <see cref="ImageTracker"/>.
/// </summary>
+ /// <feature>http://tizen.org/feature/vision.image_recognition</feature>
/// <since_tizen> 3 </since_tizen>
public class ImageTrackingConfiguration : ImageRecognitionConfiguration
{
/// <summary>
/// Represents the image tracking model interface.
/// </summary>
+ /// <feature>http://tizen.org/feature/vision.image_recognition</feature>
/// <since_tizen> 3 </since_tizen>
public class ImageTrackingModel : IDisposable
{
/// <summary>
/// Represents the media vision source to keep information on the image or video frame data as raw buffer.
/// </summary>
+ /// <feature>http://tizen.org/feature/vision.barcode_detection</feature>
+ /// <feature>http://tizen.org/feature/vision.barcode_generation</feature>
+ /// <feature>http://tizen.org/feature/vision.face_recognition</feature>
+ /// <feature>http://tizen.org/feature/vision.image_recognition</feature>
/// <since_tizen> 3 </since_tizen>
public class MediaVisionSource : IBufferOwner, IDisposable
{
/// Initializes a new instance of the <see cref="MediaVisionSource"/> class based on the <see cref="MediaPacket"/>.
/// </summary>
/// <param name="mediaPacket">The <see cref="MediaPacket"/> from which the source will be filled.</param>
- /// <exception cref="NotSupportedException">The feature is not supported.</exception>
+ /// <exception cref="NotSupportedException">None of the related features are not supported.</exception>
/// <exception cref="ArgumentNullException"><paramref name="mediaPacket"/> is null.</exception>
/// <exception cref="ObjectDisposedException"><paramref name="mediaPacket"/> has already been disposed of.</exception>
/// <since_tizen> 3 </since_tizen>
/// <param name="height">The height of image.</param>
/// <param name="colorSpace">The image <see cref="ColorSpace"/>.</param>
/// <exception cref="NotSupportedException">
- /// The feature is not supported.<br/>
+ /// None of the related features are not supported.<br/>
/// -or-<br/>
/// <paramref name="colorSpace"/> is not supported.
/// </exception>
/// <summary>
/// Represents a configuration of <see cref="MovementDetector"/>.
/// </summary>
+ /// <feature>http://tizen.org/feature/vision.face_recognition</feature>
+ /// <feature>http://tizen.org/feature/vision.image_recognition</feature>
/// <since_tizen> 3 </since_tizen>
public class MovementDetectionConfiguration : SurveillanceEngineConfiguration
{
/// <since_tizen> 3 </since_tizen>
public static readonly int DefaultThreshold = 10;
-
/// <summary>
/// Initializes a new instance of the <see cref="MovementDetectionConfiguration"/> class.
/// </summary>
- /// <exception cref="NotSupportedException">The feature is not supported.</exception>
+ /// <exception cref="NotSupportedException">The required features are not supported.</exception>
/// <since_tizen> 3 </since_tizen>
public MovementDetectionConfiguration()
{
/// <summary>
/// Provides the ability to detect movement on image sources.
/// </summary>
+ /// <feature>http://tizen.org/feature/vision.face_recognition</feature>
+ /// <feature>http://tizen.org/feature/vision.image_recognition</feature>
/// <seealso cref="MovementDetectionConfiguration"/>
/// <since_tizen> 3 </since_tizen>
public class MovementDetector : SurveillanceEngine
/// <summary>
/// Initializes a new instance of the <see cref="MovementDetector"/> class.
/// </summary>
- /// <exception cref="NotSupportedException">The feature is not supported.</exception>
+ /// <exception cref="NotSupportedException">The required features are not supported.</exception>
/// <since_tizen> 3 </since_tizen>
public MovementDetector() : base(MovementDetectedEventType)
{
/// <summary>
/// Represents a configuration of <see cref="PersonAppearanceDetector"/> instances.
/// </summary>
+ /// <feature>http://tizen.org/feature/vision.face_recognition</feature>
+ /// <feature>http://tizen.org/feature/vision.image_recognition</feature>
/// <since_tizen> 3 </since_tizen>
public class PersonAppearanceDetectionConfiguration : SurveillanceEngineConfiguration
{
/// <summary>
/// Initializes a new instance of the <see cref="PersonAppearanceDetectionConfiguration"/> class.
/// </summary>
- /// <exception cref="NotSupportedException">The feature is not supported.</exception>
+ /// <exception cref="NotSupportedException">The required features are not supported.</exception>
/// <since_tizen> 3 </since_tizen>
public PersonAppearanceDetectionConfiguration()
{
/// <summary>
/// Provides the ability to detect person appearance changes on image sources.
/// </summary>
+ /// <feature>http://tizen.org/feature/vision.face_recognition</feature>
+ /// <feature>http://tizen.org/feature/vision.image_recognition</feature>
/// <seealso cref="PersonAppearanceDetectionConfiguration"/>
/// <since_tizen> 3 </since_tizen>
public class PersonAppearanceDetector : SurveillanceEngine
/// <summary>
/// Initializes a new instance of the <see cref="PersonAppearanceDetector"/> class.
/// </summary>
- /// <exception cref="NotSupportedException">The feature is not supported.</exception>
+ /// <exception cref="NotSupportedException">The required features are not supported.</exception>
/// <since_tizen> 3 </since_tizen>
public PersonAppearanceDetector() : base(PersonAppearanceEventType)
{
/// <summary>
/// Represents a configuration of <see cref="PersonRecognizer"/> instances.
/// </summary>
+ /// <feature>http://tizen.org/feature/vision.face_recognition</feature>
+ /// <feature>http://tizen.org/feature/vision.image_recognition</feature>
/// <since_tizen> 3 </since_tizen>
public class PersonRecognitionConfiguration : SurveillanceEngineConfiguration
{
/// </summary>
/// <param name="modelPath">Path to the face recognition model.</param>
/// <exception cref="ArgumentNullException"><paramref name="modelPath"/> is null.</exception>
- /// <exception cref="NotSupportedException">The feature is not supported.</exception>
+ /// <exception cref="NotSupportedException">The required features are not supported.</exception>
/// <since_tizen> 3 </since_tizen>
public PersonRecognitionConfiguration(string modelPath)
{
/// <summary>
/// Provides the ability to recognize person on image sources.
/// </summary>
+ /// <feature>http://tizen.org/feature/vision.face_recognition</feature>
+ /// <feature>http://tizen.org/feature/vision.image_recognition</feature>
/// <seealso cref="PersonRecognitionConfiguration"/>
/// <since_tizen> 3 </since_tizen>
public class PersonRecognizer : SurveillanceEngine
/// <summary>
/// Initializes a new instance of the <see cref="PersonRecognizer"/> class.
/// </summary>
- /// <exception cref="NotSupportedException">The feature is not supported.</exception>
+ /// <exception cref="NotSupportedException">The required features are not supported.</exception>
/// <since_tizen> 3 </since_tizen>
public PersonRecognizer() : base(PersonRecognizedEventType)
{
/// <param name="qrMode">Encoding mode for the message.</param>
/// <param name="ecc">Error correction level.</param>
/// <param name="version">QR code version. From 1 to 40 inclusive.</param>
- /// <code>
- /// var obj = new QrConfiguration(QrMode.Numeric, ErrorCorrectionLevel.Medium, 30);
- /// </code>
/// <exception cref="ArgumentOutOfRangeException">
/// <paramref name="version"/> is less than 1.<br/>
/// -or-<br/>
/// -or-<br/>
/// <paramref name="ecc"/> is invalid.
/// </exception>
+ /// <example>
+ /// <code>
+ /// var qrConfig = new QrConfiguration(QrMode.Numeric, ErrorCorrectionLevel.Medium, 30);
+ /// </code>
+ /// </example>
/// <since_tizen> 3 </since_tizen>
public QrConfiguration(QrMode qrMode, ErrorCorrectionLevel ecc, int version)
{
/// <since_tizen> 3 </since_tizen>
Numeric,
/// <summary>
- /// Alphanumeric characters, '$', '%', '*', '+', '-', '.', '/' and ':'.
+ /// Alphanumeric characters, '$', '%', '*', '+', '-', '.', '/', and ':'.
/// </summary>
/// <since_tizen> 3</since_tizen>
AlphaNumeric,
{
if (points.Length != 4)
{
- throw new ArgumentException($"{points} must have 4 elements.");
+ throw new ArgumentException($"{nameof(points)} must have 4 elements.");
}
Points = points;
/// <summary>
/// SurveillanceEngineConfiguration is a base class for surveillance configurations.
/// </summary>
+ /// <feature>http://tizen.org/feature/vision.face_recognition</feature>
+ /// <feature>http://tizen.org/feature/vision.image_recognition</feature>
/// <since_tizen> 3 </since_tizen>
public class SurveillanceEngineConfiguration : EngineConfiguration
{
/// SurveillanceEngine is a base class for surveillance event triggers.
/// Media Vision Surveillance provides the functionality which can be utilized for creation of video surveillance systems.
/// </summary>
+ /// <feature>http://tizen.org/feature/vision.face_recognition</feature>
+ /// <feature>http://tizen.org/feature/vision.image_recognition</feature>
/// <seealso cref="MovementDetector"/>
/// <seealso cref="PersonAppearanceDetector"/>
/// <seealso cref="PersonRecognizer"/>
UnsubscribeEventTrigger(Handle, source.StreamId).Validate("Failed to unsubscribe event trigger");
}
-
/// <summary>
/// Releases all the resources used by the <see cref="SurveillanceEngine"/> object.
/// </summary>
public class SurveillanceSource
{
private static int _nextStreamId = int.MinValue;
+ private static readonly object _idLock = new object();
private static int GetNextStreamId()
{
- if (_nextStreamId == int.MaxValue)
+ lock (_idLock)
{
- return _nextStreamId = int.MinValue;
+ if (_nextStreamId == int.MaxValue)
+ {
+ _nextStreamId = int.MinValue;
+ }
+ return _nextStreamId++;
}
- return _nextStreamId++;
}
/// <summary>