|
IDLive Face C API 1.50.4
|
Data Structures | |
| struct | CMeta |
| Meta information provided for calibration. More... | |
| struct | CQualityResult |
| Structure for quality estimation result. More... | |
| struct | CLivenessResult |
| Structure for liveness detection result. More... | |
| struct | CPipelineResult |
| Structure for liveness detection result. More... | |
| struct | CBoundingBox |
| Face rectangle bounding box. More... | |
| struct | CBoundingBoxes |
| Face rectangle bounding boxes array. More... | |
| struct | CKeypoints |
| Face keypoints structure. More... | |
| struct | CHeadPose |
| Set of yaw, pith, and roll angles (in degrees) More... | |
| struct | CFaceParameters |
| Structure for storing facial parameters. More... | |
| struct | CDetectionResult |
| Face detection result structure. More... | |
| struct | CLicenseFeatureInfo |
| IDLive Face license feature info. More... | |
Macros | |
| #define | MESSAGE_BUFFER_SIZE 256 |
The default size for the buffer used for error messages (passed via msg argument). | |
Typedefs | |
| typedef struct CInitConfig | CInitConfig_t |
| typedef struct CImage | CImage_t |
| typedef struct CImageBatch | CImageBatch_t |
| typedef struct CPipeline | CPipeline_t |
| typedef struct CDetectEngine | CDetectEngine_t |
| typedef struct CQualityEngine | CQualityEngine_t |
| typedef enum OS | OS_t |
| Meta information: OS type for calibration. | |
| typedef enum MANUFACTURE | MANUFACTURE_t |
| Meta information: device manufacture. | |
| typedef enum MODEL | MODEL_t |
| Meta information: device model. | |
| typedef enum CALIBRATION | CALIBRATION_t |
| Liveness checking threshold calibration type. | |
| typedef enum ThreadingLevel | ThreadingLevel_t |
| FaceSDK threading level, used to set different number of threads for different levels. | |
| typedef struct CMeta | CMeta_t |
| typedef enum COLOR_ENCODING | COLOR_ENCODING_t |
| Color encoding enum. | |
| typedef struct CQualityResult | CQualityResult_t |
| typedef struct CLivenessResult | CLivenessResult_t |
| typedef struct CPipelineResult | CPipelineResult_t |
| typedef struct CBoundingBox | CBoundingBox_t |
| typedef struct CBoundingBoxes | CBoundingBoxes_t |
| typedef struct CKeypoints | CKeypoints_t |
| typedef struct CHeadPose | CHeadPose_t |
| typedef struct CFaceParameters | CFaceParameters_t |
| typedef struct CDetectionResult | CDetectionResult_t |
| typedef enum LICENSE_FEATURE | LICENSE_FEATURE_t |
| IDLive Face license features. | |
| typedef struct CLicenseFeatureInfo | CLicenseFeatureInfo_t |
| IDLive Face license feature info. | |
Functions | |
| CMeta_t | get_default_meta () |
Returns CMeta_t filled with default values. | |
| CInitConfig_t * | config_create (const char *folder, const char *config_name, int *err, char *msg) |
| CInitConfig_t instance creator. | |
| CInitConfig_t * | config_create2 (const char *file_path, int *err, char *msg) |
| CInitConfig_t instance creator. | |
| void | config_destroy (CInitConfig_t *config) |
| CInitConfig_t instance destroyer. | |
| CImage_t * | image_create_bytes (const uint8_t *bytes, size_t size, int *err, char *msg) |
| Create CImage_t instance from binary file in memory buffer. | |
| CImage_t * | image_create_path (const char *path, int *err, char *msg) |
| Create CImage_t instance from a file on disk. | |
| CImage_t * | image_create_pixels (const uint8_t *data, size_t rows, size_t cols, COLOR_ENCODING_t format, int *err, char *msg) |
| Create CImage_t instance from decoded memory buffer. | |
| void | image_destroy (CImage_t *image) |
| CImage_t instance destroyer. | |
| CImageBatch_t * | image_batch_create (CImage_t **images, size_t num_images, const uint64_t *timestamps, int *err, char *msg) |
| Create CImageBatch_t instance from CImage_t array and timestamps. | |
| void | image_batch_destroy (CImageBatch_t *image_batch) |
| CImageBatch_t instance destroyer. | |
| CDetectEngine_t * | detection_create (const char *name, const CInitConfig_t *config, int *err, char *msg) |
| Create CDetectEngine_t instance. | |
| void | detection_destroy (CDetectEngine_t *engine) |
| CDetectEngine_t instance destroyer. | |
| CDetectionResult_t * | detect (const CDetectEngine_t *engine, const CImage_t *image, int *err, char *msg) |
| Facial keypoints and bbox detecting method. | |
| CDetectionResult_t * | detect_batch (const CDetectEngine_t *engine, const CImage_t **images, size_t num_images, int *errors, char **msg) |
| Facial keypoints and bbox batch detecting method. | |
| CBoundingBoxes_t * | detect_only_bounding_box (const CDetectEngine_t *engine, const CImage_t *image, int *err, char *msg) |
| Facial bbox detecting method. | |
| CBoundingBoxes_t * | detect_only_bounding_box_batch (const CDetectEngine_t *engine, const CImage_t **images, size_t num_images, int *errors, char **msg) |
| Facial bbox batch detecting method. | |
| void | CDetectionResult_destroy (CDetectionResult_t *result) |
| CDetectionResult_t instance destroyer. | |
| void | CDetectionResult_destroy_array (CDetectionResult_t *result, size_t size) |
| CDetectionResult_t instances array destroyer. | |
| void | CBoundingBoxes_destroy (CBoundingBoxes_t *result) |
| CBoundingBoxes_t instance destroyer. | |
| void | CBoundingBoxes_destroy_array (CBoundingBoxes_t *result, size_t size) |
| CBoundingBoxes_t instances array destroyer. | |
| CQualityEngine_t * | quality_create (const char *name, const CInitConfig_t *config, int *err, char *msg) |
| Create CQualityEngine_t instance. | |
| void | quality_destroy (CQualityEngine_t *engine) |
| CQualityEngine_t instance destroyer. | |
| CQualityResult_t | check_quality (const CQualityEngine_t *engine, const CImage_t *image, int *err, char *msg) |
| Check quality of face from input image. | |
| CQualityResult_t * | check_quality_batch (const CQualityEngine_t *engine, const CImage_t **images, size_t num_images, int *errors, char **msg) |
| Check quality of face from input images batch. | |
| void | CQualityResult_destroy_array (CQualityResult_t *result) |
| CQualityResult_t instances array destroyer. | |
| CPipeline_t * | pipeline_create (const char *name, const CInitConfig_t *config, int *err, char *msg) |
| Create CPipeline_t instance. | |
| void | pipeline_destroy (CPipeline_t *engine) |
| CPipeline_t instance destroyer. | |
| CPipelineResult_t | pipeline_check_liveness (const CPipeline_t *engine, const CImage_t *image, const CMeta_t *meta, int *err, char *msg) |
| Check liveness of face from input image. | |
| CPipelineResult_t | pipeline_check_liveness_batch (const CPipeline_t *engine, const CImageBatch_t *image_batch, const CMeta_t *meta, int *err, char *msg) |
| Perform liveness check on a sequence of photos (image batch). A single results corresponding to the whole image batch will be produced. | |
| CPipelineResult_t * | pipeline_check_liveness_batch2 (const CPipeline_t *engine, const CImage_t **images, size_t num_images, const CMeta_t *meta, int *errors, char **msg) |
| This method implements batched liveness check. | |
| void | CPipelineResult_destroy_array (CPipelineResult_t *result) |
| CPipelineResult_t instances array destroyer. | |
| void | set_num_threads (unsigned int num_threads, const ThreadingLevel_t *threading_level, int *err, char *msg) |
| Sets the maximum number of threads available for FaceSDK at the specified level. If 0 is passed, then the optimal number of threads is detected automatically (the same effect is achieved if setNumThreads is not called). | |
| void | set_ov_num_throughput_streams (int ov_num_throughput_streams) |
| Sets the number of CPU execution streams for OpenVINO backend. | |
| void | set_ov_bind_threads (bool ov_bind_threads) |
| Sets the CPU bind setting for OpenVINO backend. | |
| void | set_ov_max_batch_size (unsigned int ov_max_batch_size) |
| Sets the maximum batch size for OpenVINO backend. This is not a hard limit (i.e. passing batches bigger than the limit will not cause an error), however setting this value to the target batch size will increase performance. | |
| void | set_enable_logging (bool enable_logging) |
| Sets whether to enable FaceSDK logging. Logging is enabled by default. | |
| void | set_num_pipeline_execution_streams (unsigned int num_pipeline_execution_streams) |
| Sets the maximum number of execution streams (maximum number of requests executed in concurrent) for Pipeline. Default value is number of logical CPU cores. | |
| void | set_enable_face_occlusion_detection (bool enabled) |
| Toggles face occlusion detection. When enabled the occluded faces will be rejected. | |
| void | set_enable_closed_eyes_detection (bool enabled) |
| Toggles closed eyes detection. When enabled the faces with closed eyes will be rejected. | |
| CLicenseFeatureInfo_t * | get_license_features_info (size_t *num_license_features, int *err, char *msg) |
| Returns information about all available licensed features. | |
| void | license_feature_info_array_destroy (CLicenseFeatureInfo_t *license_feature_info_arr) |
| Destroys array of CLicenseFeatureInfo_t returned by get_license_features_info. | |
| void | get_license_info (char *license_info, size_t license_info_length, int *err, char *msg) |
| Returns information about a license if available. | |
| void | set_license (const char *license, size_t license_length, int *err, char *msg) |
| Sets a new license to be used. | |
| void | set_message_buffer_size (size_t size) |
Sets the size for the buffer used for error messages (passed via msg argument). Longer messages will be truncated. | |
FaceSDK C API header file
| #define MESSAGE_BUFFER_SIZE 256 |
The default size for the buffer used for error messages (passed via msg argument).
You can change it with set_message_buffer_size if needed.
| enum CALIBRATION |
| enum COLOR_ENCODING |
| enum LICENSE_FEATURE |
| enum STATUS |
Error codes enumeration.
| enum ThreadingLevel |
FaceSDK threading level, used to set different number of threads for different levels.
| void CBoundingBoxes_destroy | ( | CBoundingBoxes_t * | result | ) |
CBoundingBoxes_t instance destroyer.
| [in] | result | CBoundingBoxes_t instance |
| void CBoundingBoxes_destroy_array | ( | CBoundingBoxes_t * | result, |
| size_t | size | ||
| ) |
CBoundingBoxes_t instances array destroyer.
| [in] | result | Pointer to CBoundingBoxes_t array |
| [in] | size | Size of CBoundingBoxes_t array |
| void CDetectionResult_destroy | ( | CDetectionResult_t * | result | ) |
CDetectionResult_t instance destroyer.
| [in] | result | CDetectionResult_t instance |
| void CDetectionResult_destroy_array | ( | CDetectionResult_t * | result, |
| size_t | size | ||
| ) |
CDetectionResult_t instances array destroyer.
| [in] | result | Pointer to CDetectionResult_t array |
| [in] | size | Length of CDetectionResult_t array |
| CQualityResult_t check_quality | ( | const CQualityEngine_t * | engine, |
| const CImage_t * | image, | ||
| int * | err, | ||
| char * | msg | ||
| ) |
Check quality of face from input image.
| [in] | engine | CQualityEngine_t instance |
| [in] | image | CImage_t instance |
| [out] | err | Output error code optional parameter |
| [out] | msg | Output error message optional parameter. |
| CQualityResult_t * check_quality_batch | ( | const CQualityEngine_t * | engine, |
| const CImage_t ** | images, | ||
| size_t | num_images, | ||
| int * | errors, | ||
| char ** | msg | ||
| ) |
Check quality of face from input images batch.
| [in] | engine | CQualityEngine_t instance |
| [in] | images | Pointer to CImage_t* array |
| [in] | num_images | Length of images array |
| [out] | errors | Output error codes array optional parameter, should have num_images length if provided |
| [out] | msg | Output error messages array optional parameter, should have num_images length if provided. |
num_images length, NULL if error occurred check_quality function. | CInitConfig_t * config_create | ( | const char * | folder, |
| const char * | config_name, | ||
| int * | err, | ||
| char * | msg | ||
| ) |
CInitConfig_t instance creator.
| [in] | folder | Path to directory with configuration files |
| [in] | config_name | Configuration file name |
| [out] | err | Output error code optional parameter |
| [out] | msg | Output error message optional parameter. |
| CInitConfig_t * config_create2 | ( | const char * | file_path, |
| int * | err, | ||
| char * | msg | ||
| ) |
CInitConfig_t instance creator.
| [in] | file_path | Full path to configuration file |
| [out] | err | Output error code optional parameter |
| [out] | msg | Output error message optional parameter. |
| void config_destroy | ( | CInitConfig_t * | config | ) |
CInitConfig_t instance destroyer.
| [in] | config | CInitConfig_t instance |
| void CPipelineResult_destroy_array | ( | CPipelineResult_t * | result | ) |
CPipelineResult_t instances array destroyer.
| [in] | result | Pointer to CPipelineResult_t array |
| void CQualityResult_destroy_array | ( | CQualityResult_t * | result | ) |
CQualityResult_t instances array destroyer.
| [in] | result | Pointer to CQualityResult_t array |
| CDetectionResult_t * detect | ( | const CDetectEngine_t * | engine, |
| const CImage_t * | image, | ||
| int * | err, | ||
| char * | msg | ||
| ) |
Facial keypoints and bbox detecting method.
| [in] | engine | CDetectEngine_t instance |
| [in] | image | CImage_t instance |
| [out] | err | Output error code optional parameter |
| [out] | msg | Output error message optional parameter. |
| CDetectionResult_t * detect_batch | ( | const CDetectEngine_t * | engine, |
| const CImage_t ** | images, | ||
| size_t | num_images, | ||
| int * | errors, | ||
| char ** | msg | ||
| ) |
Facial keypoints and bbox batch detecting method.
| [in] | engine | CDetectEngine_t instance |
| [in] | images | Pointer to CImage_t* array |
| [in] | num_images | Length of images array |
| [out] | errors | Output error codes array optional parameter, should have num_images length if provided |
| [out] | msg | Output error messages array optional parameter, should have num_images length if provided. |
num_images length, NULL if error occurred detect function. | CBoundingBoxes_t * detect_only_bounding_box | ( | const CDetectEngine_t * | engine, |
| const CImage_t * | image, | ||
| int * | err, | ||
| char * | msg | ||
| ) |
Facial bbox detecting method.
| [in] | engine | CDetectEngine_t instance |
| [in] | image | CImage_t instance |
| [out] | err | Output error code optional parameter |
| [out] | msg | Output error message optional parameter. |
| CBoundingBoxes_t * detect_only_bounding_box_batch | ( | const CDetectEngine_t * | engine, |
| const CImage_t ** | images, | ||
| size_t | num_images, | ||
| int * | errors, | ||
| char ** | msg | ||
| ) |
Facial bbox batch detecting method.
| [in] | engine | CDetectEngine_t instance |
| [in] | images | Pointer to CImage_t* array |
| [in] | num_images | Length of images array |
| [out] | errors | Output error codes array optional parameter, should have num_images length if provided |
| [out] | msg | Output error messages array optional parameter, should have num_images length if provided. |
num_images length, NULL if error occurred detect_only_bounding_box function. | CDetectEngine_t * detection_create | ( | const char * | name, |
| const CInitConfig_t * | config, | ||
| int * | err, | ||
| char * | msg | ||
| ) |
Create CDetectEngine_t instance.
| [in] | name | Engine name (e.g. "BaseNnetDetector") |
| [in] | config | Configuration object |
| [out] | err | Output error code optional parameter |
| [out] | msg | Output error message optional parameter. |
| void detection_destroy | ( | CDetectEngine_t * | engine | ) |
CDetectEngine_t instance destroyer.
| [in] | engine | CDetectEngine_t instance |
| CLicenseFeatureInfo_t * get_license_features_info | ( | size_t * | num_license_features, |
| int * | err, | ||
| char * | msg | ||
| ) |
Returns information about all available licensed features.
| [out] | num_license_features | number of available licensed features. |
| [out] | err | Output error code optional parameter |
| [out] | msg | Output error message optional parameter. |
| void get_license_info | ( | char * | license_info, |
| size_t | license_info_length, | ||
| int * | err, | ||
| char * | msg | ||
| ) |
Returns information about a license if available.
| [out] | license_info | Preallocated char array to store null-terminated string containing license information |
| [in] | license_info_length | Preallocated char array length |
| [out] | err | Output error code optional parameter |
| [out] | msg | Output error message optional parameter. |
| CImageBatch_t * image_batch_create | ( | CImage_t ** | images, |
| size_t | num_images, | ||
| const uint64_t * | timestamps, | ||
| int * | err, | ||
| char * | msg | ||
| ) |
Create CImageBatch_t instance from CImage_t array and timestamps.
| [in] | images | Pointer to CImage_t* array |
| [in] | num_images | Length of images array |
| [in] | timestamps | Optional timestamps array, should have num_images length if provided |
| [out] | err | Output error code optional parameter |
| [out] | msg | Output error message optional parameter. |
| void image_batch_destroy | ( | CImageBatch_t * | image_batch | ) |
CImageBatch_t instance destroyer.
| [in] | image_batch | CImageBatch_t instance |
| CImage_t * image_create_bytes | ( | const uint8_t * | bytes, |
| size_t | size, | ||
| int * | err, | ||
| char * | msg | ||
| ) |
Create CImage_t instance from binary file in memory buffer.
| [in] | bytes | Pointer to memory buffer with binary image file |
| [in] | size | Number of bytes in image file |
| [out] | err | Output error code optional parameter |
| [out] | msg | Output error message optional parameter. |
| CImage_t * image_create_path | ( | const char * | path, |
| int * | err, | ||
| char * | msg | ||
| ) |
Create CImage_t instance from a file on disk.
| [in] | path | Path to image file |
| [out] | err | Output error code optional parameter |
| [out] | msg | Output error message optional parameter. |
| CImage_t * image_create_pixels | ( | const uint8_t * | data, |
| size_t | rows, | ||
| size_t | cols, | ||
| COLOR_ENCODING_t | format, | ||
| int * | err, | ||
| char * | msg | ||
| ) |
Create CImage_t instance from decoded memory buffer.
| [in] | data | Pointer to memory buffer (bytes) |
| [in] | rows | Number of image rows |
| [in] | cols | Number of image cols |
| [in] | format | Color encoding format of input buffer |
| [out] | err | Output error code optional parameter |
| [out] | msg | Output error message optional parameter. |
| void image_destroy | ( | CImage_t * | image | ) |
CImage_t instance destroyer.
| [in] | image | CImage_t instance |
| void license_feature_info_array_destroy | ( | CLicenseFeatureInfo_t * | license_feature_info_arr | ) |
Destroys array of CLicenseFeatureInfo_t returned by get_license_features_info.
| [in] | license_feature_info_arr | Pointer to license feature info array |
| CPipelineResult_t pipeline_check_liveness | ( | const CPipeline_t * | engine, |
| const CImage_t * | image, | ||
| const CMeta_t * | meta, | ||
| int * | err, | ||
| char * | msg | ||
| ) |
Check liveness of face from input image.
| [in] | engine | CPipeline_t instance |
| [in] | image | CImage_t instance |
| [in] | meta | Optional meta information about device |
| [out] | err | Output error code optional parameter |
| [out] | msg | Output error message optional parameter. |
| CPipelineResult_t pipeline_check_liveness_batch | ( | const CPipeline_t * | engine, |
| const CImageBatch_t * | image_batch, | ||
| const CMeta_t * | meta, | ||
| int * | err, | ||
| char * | msg | ||
| ) |
Perform liveness check on a sequence of photos (image batch). A single results corresponding to the whole image batch will be produced.
| [in] | engine | CPipeline_t instance |
| [in] | image_batch | Input batch of images (a sequence of photos) |
| [in] | meta | Optional meta information about device |
| [out] | err | Output error code optional parameter |
| [out] | msg | Output error message optional parameter. |
| CPipelineResult_t * pipeline_check_liveness_batch2 | ( | const CPipeline_t * | engine, |
| const CImage_t ** | images, | ||
| size_t | num_images, | ||
| const CMeta_t * | meta, | ||
| int * | errors, | ||
| char ** | msg | ||
| ) |
This method implements batched liveness check.
| [in] | engine | CPipeline_t instance |
| [in] | images | Pointer to CImage_t* array |
| [in] | num_images | Length of images array |
| [in] | meta | Optional meta information about device array, should have num_images length if provided |
| [out] | errors | Output error codes array optional parameter, should have num_images length if provided |
| [out] | msg | Output error messages array optional parameter, should have num_images length if provided. |
num_images length, NULL if error occurred pipeline_check_liveness function. | CPipeline_t * pipeline_create | ( | const char * | name, |
| const CInitConfig_t * | config, | ||
| int * | err, | ||
| char * | msg | ||
| ) |
Create CPipeline_t instance.
| [in] | name | Pipeline name (e.g. "ConfigurablePipeline") |
| [in] | config | Configuration object |
| [out] | err | Output error code optional parameter |
| [out] | msg | Output error message optional parameter. |
| void pipeline_destroy | ( | CPipeline_t * | engine | ) |
CPipeline_t instance destroyer.
| [in] | engine | CPipeline_t instance |
| CQualityEngine_t * quality_create | ( | const char * | name, |
| const CInitConfig_t * | config, | ||
| int * | err, | ||
| char * | msg | ||
| ) |
Create CQualityEngine_t instance.
| [in] | name | Engine name (e.g. "ExpositionQualityEngine") |
| [in] | config | Configuration object |
| [out] | err | Output error code optional parameter |
| [out] | msg | Output error message optional parameter. |
| void quality_destroy | ( | CQualityEngine_t * | engine | ) |
CQualityEngine_t instance destroyer.
| [in] | engine | CQualityEngine_t instance |
| void set_enable_closed_eyes_detection | ( | bool | enabled | ) |
Toggles closed eyes detection. When enabled the faces with closed eyes will be rejected.
| [in] | enabled | Whether to enable the detection or not |
| void set_enable_face_occlusion_detection | ( | bool | enabled | ) |
Toggles face occlusion detection. When enabled the occluded faces will be rejected.
| [in] | enabled | Whether to enable the detection or not |
| void set_enable_logging | ( | bool | enable_logging | ) |
Sets whether to enable FaceSDK logging. Logging is enabled by default.
| [in] | enable_logging | Whether to enable logging or not |
| void set_license | ( | const char * | license, |
| size_t | license_length, | ||
| int * | err, | ||
| char * | msg | ||
| ) |
Sets a new license to be used.
Sets a new license to be used. On Mobile builds (Android and iOS) and Lambda SDK distributions this function can be used to update the license by passing the contents of a new license file.
| [in] | license | char array with the license data |
| [in] | license_length | length of the char array containing the license |
| [out] | err | Output error code optional parameter |
| [out] | msg | Output error message optional parameter. |
| void set_message_buffer_size | ( | size_t | size | ) |
Sets the size for the buffer used for error messages (passed via msg argument). Longer messages will be truncated.
| [in] | size | Size of the buffer. Passing 0 has no effect. |
| void set_num_pipeline_execution_streams | ( | unsigned int | num_pipeline_execution_streams | ) |
Sets the maximum number of execution streams (maximum number of requests executed in concurrent) for Pipeline. Default value is number of logical CPU cores.
| [in] | num_pipeline_execution_streams | Number of execution streams |
| void set_num_threads | ( | unsigned int | num_threads, |
| const ThreadingLevel_t * | threading_level, | ||
| int * | err, | ||
| char * | msg | ||
| ) |
Sets the maximum number of threads available for FaceSDK at the specified level. If 0 is passed, then the optimal number of threads is detected automatically (the same effect is achieved if setNumThreads is not called).
| [in] | num_threads | Maximum number of threads available for FaceSDK at the specified level |
| [in] | threading_level | Threading level to apply setting |
| [out] | err | Output error code optional parameter |
| [out] | msg | Output error message optional parameter. |
| void set_ov_bind_threads | ( | bool | ov_bind_threads | ) |
Sets the CPU bind setting for OpenVINO backend.
| [in] | ov_bind_threads | Whether to bind execution threads to CPU physical cores or not |
| void set_ov_max_batch_size | ( | unsigned int | ov_max_batch_size | ) |
Sets the maximum batch size for OpenVINO backend. This is not a hard limit (i.e. passing batches bigger than the limit will not cause an error), however setting this value to the target batch size will increase performance.
| [in] | ov_max_batch_size | Maximum batch size |
| void set_ov_num_throughput_streams | ( | int | ov_num_throughput_streams | ) |
Sets the number of CPU execution streams for OpenVINO backend.
| [in] | ov_num_throughput_streams | Number of CPU execution streams, valid values are -1 (auto-tune number of streams), 0 (use the default setting) and any positive value, other values are dropped without an error |