/*
* Copyright (C) 2008 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef bpi_FUNCTIONS_EM_H
#define bpi_FUNCTIONS_EM_H
/**
* This files contains general purpose functions.
*/
/* ---- includes ----------------------------------------------------------- */
#include "b_BasicEm/Basic.h"
#include "b_BasicEm/Context.h"
#include "b_BasicEm/Functions.h"
/* ---- related objects --------------------------------------------------- */
/* ---- typedefs ----------------------------------------------------------- */
/** methods of similarty normalization for identification and verification */
enum bpi_SimType
{
bpi_RAW_SIM, /* take raw similarity only */
bpi_SUB_MEAN, /* subtract average */
bpi_SUB_MAX_1, /* subtract maximum (different id of each entry) */
bpi_SUB_MAX_2, /* subtract maximum (different id of best entry) */
bpi_SUB_4_MAX_2, /* subtract average maximum of best 4 entries (method 2) */
bpi_SUB_8_MAX_2, /* subtract average maximum of best 8 entries (method 2) */
bpi_SUB_16_MAX_2, /* subtract average maximum of best 16 entries (method 2) */
bpi_SUB_32_MAX_2 /* subtract average maximum of best 32 entries (method 2) */
};
/* ---- constants ---------------------------------------------------------- */
/* ---- external functions ------------------------------------------------- */
/** Normalizes similarities.
* This function is used by identifier module
*/
void bpi_normalizeSimilarities( struct bbs_Context* cpA,
const int32* rawSimArrA,
const int32* rawIdArrA,
uint32 rawSizeA,
const int32* refSimArrA,
const int32* refIdArrA,
uint32 refSizeA,
enum bpi_SimType simTypeA,
int32* outSimArrA );
/** Returnes normalized single similarity.
* This function is used by verifier module
*/
int32 bpi_normalizedSimilarity( struct bbs_Context* cpA,
int32 rawSimA,
int32 rawIdA,
const int32* refSimArrA,
const int32* refIdArrA,
uint32 refSizeA,
enum bpi_SimType simTypeA );
/** writes checksum adjustment value to meet chkSumA to memory
* the function assumes that memPtrA is memSizeA - 1 units
* away from beginning of object-memory block
*/
uint32 bpi_memWriteCsa16( uint16* memPtrA, uint32 memSizeA, uint16 chkSumA );
/** takes checksum adjustment value from memory stream */
uint32 bpi_memReadCsa16( const uint16* memPtrA );
/** tests check sum and produxes error condition if no match */
void bpi_testCheckSum( struct bbs_Context* cpA, uint16* memPtrA, uint16 chkSumA, const char* fNameA );
#endif /* bpi_FUNCTIONS_EM_H */