Ryo Hagimoto / Mbed OS GR-PEACH_HVC-P2_sample_20180314

Dependencies:   GraphicsFramework GR-PEACH_video LCD_shield_config AsciiFont R_BSP USBHost_custom

Committer:
dkato
Date:
Tue Sep 05 10:01:51 2017 +0000
Revision:
5:49a61433290a
Add HVC sensing result stabilizing library

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dkato 5:49a61433290a 1 /*---------------------------------------------------------------------------*/
dkato 5:49a61433290a 2 /* Copyright(C) 2017 OMRON Corporation */
dkato 5:49a61433290a 3 /* */
dkato 5:49a61433290a 4 /* Licensed under the Apache License, Version 2.0 (the "License"); */
dkato 5:49a61433290a 5 /* you may not use this file except in compliance with the License. */
dkato 5:49a61433290a 6 /* You may obtain a copy of the License at */
dkato 5:49a61433290a 7 /* */
dkato 5:49a61433290a 8 /* http://www.apache.org/licenses/LICENSE-2.0 */
dkato 5:49a61433290a 9 /* */
dkato 5:49a61433290a 10 /* Unless required by applicable law or agreed to in writing, software */
dkato 5:49a61433290a 11 /* distributed under the License is distributed on an "AS IS" BASIS, */
dkato 5:49a61433290a 12 /* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */
dkato 5:49a61433290a 13 /* See the License for the specific language governing permissions and */
dkato 5:49a61433290a 14 /* limitations under the License. */
dkato 5:49a61433290a 15 /*---------------------------------------------------------------------------*/
dkato 5:49a61433290a 16
dkato 5:49a61433290a 17 #include "Interface.h"
dkato 5:49a61433290a 18 #include "STBValidValue.h"
dkato 5:49a61433290a 19 #include "STBCommonDef.h"
dkato 5:49a61433290a 20 #include "STBTracking.h"
dkato 5:49a61433290a 21 #include "STBFaceInfo.h"
dkato 5:49a61433290a 22 #include "STBMakeResult.h"
dkato 5:49a61433290a 23
dkato 5:49a61433290a 24
dkato 5:49a61433290a 25 /*Value range check*/
dkato 5:49a61433290a 26 #define ISVALID_RANGE( val , min , max ) ( ( (min) <= (val) ) && ( (val) <= (max) ) )
dkato 5:49a61433290a 27
dkato 5:49a61433290a 28
dkato 5:49a61433290a 29 /*------------------------------------------------------------------------------------------------------------------*/
dkato 5:49a61433290a 30 /*IsValidValue : error check*/
dkato 5:49a61433290a 31 /*------------------------------------------------------------------------------------------------------------------*/
dkato 5:49a61433290a 32 static STB_INT32 IsValidValue(
dkato 5:49a61433290a 33 const STB_INT32 nValue ,
dkato 5:49a61433290a 34 const STB_INT32 nLimitMin ,
dkato 5:49a61433290a 35 const STB_INT32 nLimitMax )
dkato 5:49a61433290a 36 {
dkato 5:49a61433290a 37 STB_INT32 nRet;
dkato 5:49a61433290a 38 for( nRet = STB_ERR_INVALIDPARAM; nRet != STB_NORMAL; nRet = STB_NORMAL )
dkato 5:49a61433290a 39 {
dkato 5:49a61433290a 40 if( ! ISVALID_RANGE( nValue , nLimitMin , nLimitMax ) )
dkato 5:49a61433290a 41 {
dkato 5:49a61433290a 42 break;
dkato 5:49a61433290a 43 }
dkato 5:49a61433290a 44 }
dkato 5:49a61433290a 45 return nRet;
dkato 5:49a61433290a 46 }
dkato 5:49a61433290a 47 /*------------------------------------------------------------------------------------------------------------------*/
dkato 5:49a61433290a 48 /* IsValidPointer */
dkato 5:49a61433290a 49 /*------------------------------------------------------------------------------------------------------------------*/
dkato 5:49a61433290a 50 static STB_INT32 IsValidPointer( const VOID* pPointer )
dkato 5:49a61433290a 51 {
dkato 5:49a61433290a 52 STB_INT32 nRet;
dkato 5:49a61433290a 53 for( nRet = STB_ERR_INVALIDPARAM; nRet != STB_NORMAL; nRet = STB_NORMAL )
dkato 5:49a61433290a 54 {
dkato 5:49a61433290a 55 if( NULL == pPointer ){ break; }
dkato 5:49a61433290a 56 }
dkato 5:49a61433290a 57 return nRet;
dkato 5:49a61433290a 58 }
dkato 5:49a61433290a 59
dkato 5:49a61433290a 60 /*------------------------------------------------------------------------------------------------------------------*/
dkato 5:49a61433290a 61 /* GetVersion */
dkato 5:49a61433290a 62 /* Interface between SDK layer and functional layer */
dkato 5:49a61433290a 63 /* Responsible for error check and function call */
dkato 5:49a61433290a 64 /*------------------------------------------------------------------------------------------------------------------*/
dkato 5:49a61433290a 65 STB_INT32 GetVersion( STB_INT8* pnMajorVersion , STB_INT8* pnMinorVersion ){
dkato 5:49a61433290a 66 STB_INT32 nRet;
dkato 5:49a61433290a 67
dkato 5:49a61433290a 68 for( nRet = STB_ERR_INVALIDPARAM; nRet != STB_NORMAL; nRet = STB_NORMAL )
dkato 5:49a61433290a 69 {
dkato 5:49a61433290a 70 nRet = IsValidPointer( pnMajorVersion );
dkato 5:49a61433290a 71 if( STB_NORMAL != nRet )
dkato 5:49a61433290a 72 {
dkato 5:49a61433290a 73 break;
dkato 5:49a61433290a 74 }
dkato 5:49a61433290a 75 nRet = IsValidPointer( pnMinorVersion );
dkato 5:49a61433290a 76 if( STB_NORMAL != nRet )
dkato 5:49a61433290a 77 {
dkato 5:49a61433290a 78 break;
dkato 5:49a61433290a 79 }
dkato 5:49a61433290a 80 *pnMajorVersion = VERSION_MAJOR;
dkato 5:49a61433290a 81 *pnMinorVersion = VERSION_MINOR;
dkato 5:49a61433290a 82 }
dkato 5:49a61433290a 83
dkato 5:49a61433290a 84 return nRet;
dkato 5:49a61433290a 85 }
dkato 5:49a61433290a 86 /*------------------------------------------------------------------------------------------------------------------*/
dkato 5:49a61433290a 87 /* CalcStbSize */
dkato 5:49a61433290a 88 /*------------------------------------------------------------------------------------------------------------------*/
dkato 5:49a61433290a 89 STB_UINT32 CalcStbSize ( STBExecFlg *execFlg , STB_UINT32 nTraCntMax)
dkato 5:49a61433290a 90 {
dkato 5:49a61433290a 91 STB_UINT32 retVal ;
dkato 5:49a61433290a 92
dkato 5:49a61433290a 93 retVal = 0 ;
dkato 5:49a61433290a 94
dkato 5:49a61433290a 95 retVal += 100 ;///Margin : alignment
dkato 5:49a61433290a 96
dkato 5:49a61433290a 97
dkato 5:49a61433290a 98
dkato 5:49a61433290a 99
dkato 5:49a61433290a 100 retVal += sizeof( STB_TR_DET );//wSrcTr
dkato 5:49a61433290a 101 if( execFlg->bodyTr == STB_TRUE )
dkato 5:49a61433290a 102 {
dkato 5:49a61433290a 103 retVal += sizeof( TraObj ) * nTraCntMax ; // trBody
dkato 5:49a61433290a 104 retVal += sizeof( ROI_DET ) * nTraCntMax ; // wSrcTr->bdDet
dkato 5:49a61433290a 105 retVal += sizeof( STB_TR_RES_BODYS ) ; // wDstTrBody
dkato 5:49a61433290a 106 retVal += sizeof( STB_TR_RES ) * nTraCntMax ; // wDstTrBody->body
dkato 5:49a61433290a 107 }
dkato 5:49a61433290a 108 if( execFlg->faceTr == STB_TRUE )
dkato 5:49a61433290a 109 {
dkato 5:49a61433290a 110 retVal += sizeof( TraObj ) * nTraCntMax ; // trFace
dkato 5:49a61433290a 111 retVal += sizeof( ROI_DET ) * nTraCntMax ; // wSrcTr->fcDet
dkato 5:49a61433290a 112 retVal += sizeof( STB_TR_RES_FACES ) ; // wDstTrFace
dkato 5:49a61433290a 113 retVal += sizeof( STB_TR_RES ) * nTraCntMax ; // wDstTrFace->face
dkato 5:49a61433290a 114 }
dkato 5:49a61433290a 115 if( execFlg->gen == STB_TRUE
dkato 5:49a61433290a 116 || execFlg->age == STB_TRUE
dkato 5:49a61433290a 117 || execFlg->fr == STB_TRUE
dkato 5:49a61433290a 118 || execFlg->exp == STB_TRUE
dkato 5:49a61433290a 119 || execFlg->dir == STB_TRUE
dkato 5:49a61433290a 120 || execFlg->gaz == STB_TRUE
dkato 5:49a61433290a 121 || execFlg->bli == STB_TRUE
dkato 5:49a61433290a 122 )
dkato 5:49a61433290a 123 {
dkato 5:49a61433290a 124 retVal += sizeof( FaceObj ) * nTraCntMax ; // infoFace
dkato 5:49a61433290a 125 }
dkato 5:49a61433290a 126
dkato 5:49a61433290a 127
dkato 5:49a61433290a 128 if( execFlg->gen == STB_TRUE
dkato 5:49a61433290a 129 || execFlg->age == STB_TRUE
dkato 5:49a61433290a 130 //|| execFlg->fr == STB_TRUE
dkato 5:49a61433290a 131 || execFlg->exp == STB_TRUE
dkato 5:49a61433290a 132 || execFlg->dir == STB_TRUE
dkato 5:49a61433290a 133 || execFlg->gaz == STB_TRUE
dkato 5:49a61433290a 134 || execFlg->bli == STB_TRUE
dkato 5:49a61433290a 135 )
dkato 5:49a61433290a 136 {
dkato 5:49a61433290a 137 retVal += sizeof( STB_PE_DET ) ; // wSrcPe
dkato 5:49a61433290a 138 retVal += sizeof( FACE_DET ) * nTraCntMax ; // wSrcPe->fcDet
dkato 5:49a61433290a 139 retVal += sizeof( STB_PE_RES ) ; // wDstPe
dkato 5:49a61433290a 140 retVal += sizeof( STB_PE_FACE ) * nTraCntMax ; // wDstPe->peFace
dkato 5:49a61433290a 141
dkato 5:49a61433290a 142 }
dkato 5:49a61433290a 143
dkato 5:49a61433290a 144 if( execFlg->fr == STB_TRUE )
dkato 5:49a61433290a 145 {
dkato 5:49a61433290a 146 retVal += sizeof( STB_FR_DET ) ; // wSrcFr
dkato 5:49a61433290a 147 retVal += sizeof( FR_DET ) * nTraCntMax ; // wSrcFr->fcDet
dkato 5:49a61433290a 148 retVal += sizeof( STB_FR_RES ) ; // wDstFr
dkato 5:49a61433290a 149 retVal += sizeof( FR_RES ) * nTraCntMax ; // wDstFr->frFace
dkato 5:49a61433290a 150 }
dkato 5:49a61433290a 151
dkato 5:49a61433290a 152
dkato 5:49a61433290a 153 return retVal;
dkato 5:49a61433290a 154 }
dkato 5:49a61433290a 155 /*------------------------------------------------------------------------------------------------------------------*/
dkato 5:49a61433290a 156 /* ShareStbSize */
dkato 5:49a61433290a 157 /*------------------------------------------------------------------------------------------------------------------*/
dkato 5:49a61433290a 158 void ShareStbSize ( STBHANDLE handle , STB_INT8 *stbPtr )
dkato 5:49a61433290a 159 {
dkato 5:49a61433290a 160 STB_UINT32 nTraCntMax;
dkato 5:49a61433290a 161
dkato 5:49a61433290a 162 nTraCntMax = handle->nTraCntMax;
dkato 5:49a61433290a 163
dkato 5:49a61433290a 164
dkato 5:49a61433290a 165 handle->wSrcTr = (STB_TR_DET*)stbPtr; stbPtr += ( sizeof( STB_TR_DET ) );
dkato 5:49a61433290a 166 if( handle->execFlg->bodyTr == STB_TRUE )
dkato 5:49a61433290a 167 {
dkato 5:49a61433290a 168 handle->trBody = ( TraObj* ) stbPtr; stbPtr += ( sizeof( TraObj ) * nTraCntMax );
dkato 5:49a61433290a 169 handle->wSrcTr->bdDet = ( ROI_DET* ) stbPtr; stbPtr += ( sizeof( ROI_DET ) * nTraCntMax );
dkato 5:49a61433290a 170 handle->wDstTrBody = ( STB_TR_RES_BODYS* ) stbPtr; stbPtr += ( sizeof( STB_TR_RES_BODYS ));
dkato 5:49a61433290a 171 handle->wDstTrBody->body = ( STB_TR_RES* ) stbPtr; stbPtr += ( sizeof( STB_TR_RES ) * nTraCntMax );
dkato 5:49a61433290a 172 }
dkato 5:49a61433290a 173 if( handle->execFlg->faceTr == STB_TRUE )
dkato 5:49a61433290a 174 {
dkato 5:49a61433290a 175 handle->trFace = ( TraObj* ) stbPtr; stbPtr += ( sizeof( TraObj ) * nTraCntMax );
dkato 5:49a61433290a 176 handle->wSrcTr->fcDet = ( ROI_DET* ) stbPtr; stbPtr += ( sizeof( ROI_DET ) * nTraCntMax );
dkato 5:49a61433290a 177 handle->wDstTrFace = ( STB_TR_RES_FACES* ) stbPtr; stbPtr += ( sizeof( STB_TR_RES_FACES ));
dkato 5:49a61433290a 178 handle->wDstTrFace->face = ( STB_TR_RES* ) stbPtr; stbPtr += ( sizeof( STB_TR_RES ) * nTraCntMax );
dkato 5:49a61433290a 179 }
dkato 5:49a61433290a 180
dkato 5:49a61433290a 181 if( handle->execFlg->gen == STB_TRUE
dkato 5:49a61433290a 182 || handle->execFlg->age == STB_TRUE
dkato 5:49a61433290a 183 || handle->execFlg->fr == STB_TRUE
dkato 5:49a61433290a 184 || handle->execFlg->exp == STB_TRUE
dkato 5:49a61433290a 185 || handle->execFlg->dir == STB_TRUE
dkato 5:49a61433290a 186 || handle->execFlg->gaz == STB_TRUE
dkato 5:49a61433290a 187 || handle->execFlg->bli == STB_TRUE
dkato 5:49a61433290a 188 )
dkato 5:49a61433290a 189 {
dkato 5:49a61433290a 190 handle->infoFace = ( FaceObj* ) stbPtr; stbPtr += ( sizeof( FaceObj ) * nTraCntMax );
dkato 5:49a61433290a 191 }
dkato 5:49a61433290a 192
dkato 5:49a61433290a 193 if( handle->execFlg->gen == STB_TRUE
dkato 5:49a61433290a 194 || handle->execFlg->age == STB_TRUE
dkato 5:49a61433290a 195 //||| handle->execFlg->fr == STB_TRUE
dkato 5:49a61433290a 196 || handle->execFlg->exp == STB_TRUE
dkato 5:49a61433290a 197 || handle->execFlg->dir == STB_TRUE
dkato 5:49a61433290a 198 || handle->execFlg->gaz == STB_TRUE
dkato 5:49a61433290a 199 || handle->execFlg->bli == STB_TRUE
dkato 5:49a61433290a 200 )
dkato 5:49a61433290a 201 {
dkato 5:49a61433290a 202 handle->wSrcPe = ( STB_PE_DET* ) stbPtr; stbPtr += ( sizeof( STB_PE_DET ) );
dkato 5:49a61433290a 203 handle->wSrcPe->fcDet = ( FACE_DET* ) stbPtr; stbPtr += ( sizeof( FACE_DET ) * nTraCntMax );
dkato 5:49a61433290a 204 handle->wDstPe = ( STB_PE_RES* ) stbPtr; stbPtr += ( sizeof( STB_PE_RES ) );
dkato 5:49a61433290a 205 handle->wDstPe->peFace = ( STB_PE_FACE*) stbPtr; stbPtr += ( sizeof( STB_PE_FACE) * nTraCntMax );
dkato 5:49a61433290a 206 }
dkato 5:49a61433290a 207
dkato 5:49a61433290a 208 if( handle->execFlg->fr == STB_TRUE )
dkato 5:49a61433290a 209 {
dkato 5:49a61433290a 210 handle->wSrcFr = ( STB_FR_DET* ) stbPtr; stbPtr += ( sizeof( STB_FR_DET ) );
dkato 5:49a61433290a 211 handle->wSrcFr->fcDet = ( FR_DET* ) stbPtr; stbPtr += ( sizeof( FR_DET ) * nTraCntMax );
dkato 5:49a61433290a 212 handle->wDstFr = ( STB_FR_RES* ) stbPtr; stbPtr += ( sizeof( STB_FR_RES ) );
dkato 5:49a61433290a 213 handle->wDstFr->frFace = ( FR_RES* ) stbPtr; stbPtr += ( sizeof( FR_RES ) * nTraCntMax );
dkato 5:49a61433290a 214 }
dkato 5:49a61433290a 215
dkato 5:49a61433290a 216
dkato 5:49a61433290a 217 }
dkato 5:49a61433290a 218 /*------------------------------------------------------------------------------------------------------------------*/
dkato 5:49a61433290a 219 /*Create handle*/
dkato 5:49a61433290a 220 /*------------------------------------------------------------------------------------------------------------------*/
dkato 5:49a61433290a 221 STBHANDLE CreateHandle ( STB_UINT32 stbExecFlg )
dkato 5:49a61433290a 222 {
dkato 5:49a61433290a 223
dkato 5:49a61433290a 224 STBHANDLE handle;
dkato 5:49a61433290a 225 STB_UINT32 tmpVal;
dkato 5:49a61433290a 226 STB_UINT32 tmpFLG;
dkato 5:49a61433290a 227
dkato 5:49a61433290a 228
dkato 5:49a61433290a 229
dkato 5:49a61433290a 230 /*do STB handle's malloc here*/
dkato 5:49a61433290a 231 handle = NULL ;
dkato 5:49a61433290a 232 handle = ( STBHANDLE )malloc( sizeof( *handle ) );
dkato 5:49a61433290a 233 if( handle == NULL )
dkato 5:49a61433290a 234 {
dkato 5:49a61433290a 235 return NULL;/* FAIL : Create STB handle */
dkato 5:49a61433290a 236 }
dkato 5:49a61433290a 237
dkato 5:49a61433290a 238 /* ExecFlg */
dkato 5:49a61433290a 239 handle->execFlg = ( STBExecFlg* )malloc( sizeof( STBExecFlg ) );
dkato 5:49a61433290a 240 if( handle->execFlg == NULL )
dkato 5:49a61433290a 241 {
dkato 5:49a61433290a 242 free ( handle ) ;/*Free of Malloc things at the present time*/
dkato 5:49a61433290a 243 return NULL ;/* FAIL : Create STB handle ExecFlg */
dkato 5:49a61433290a 244 }
dkato 5:49a61433290a 245 if( ( stbExecFlg & STB_FUNC_BD )== STB_FUNC_BD ){ handle->execFlg->bodyTr = STB_TRUE ;}else{ handle->execFlg->bodyTr = STB_FALSE ;}
dkato 5:49a61433290a 246 if( ( stbExecFlg & STB_FUNC_DT )== STB_FUNC_DT ){ handle->execFlg->faceTr = STB_TRUE ;}else{ handle->execFlg->faceTr = STB_FALSE ;}
dkato 5:49a61433290a 247 if( ( stbExecFlg & STB_FUNC_PT )== STB_FUNC_PT ){ handle->execFlg->dir = STB_TRUE ;}else{ handle->execFlg->dir = STB_FALSE ;}
dkato 5:49a61433290a 248 if( ( stbExecFlg & STB_FUNC_AG )== STB_FUNC_AG ){ handle->execFlg->age = STB_TRUE ;}else{ handle->execFlg->age = STB_FALSE ;}
dkato 5:49a61433290a 249 if( ( stbExecFlg & STB_FUNC_GN )== STB_FUNC_GN ){ handle->execFlg->gen = STB_TRUE ;}else{ handle->execFlg->gen = STB_FALSE ;}
dkato 5:49a61433290a 250 if( ( stbExecFlg & STB_FUNC_GZ )== STB_FUNC_GZ ){ handle->execFlg->gaz = STB_TRUE ;}else{ handle->execFlg->gaz = STB_FALSE ;}
dkato 5:49a61433290a 251 if( ( stbExecFlg & STB_FUNC_BL )== STB_FUNC_BL ){ handle->execFlg->bli = STB_TRUE ;}else{ handle->execFlg->bli = STB_FALSE ;}
dkato 5:49a61433290a 252 if( ( stbExecFlg & STB_FUNC_EX )== STB_FUNC_EX ){ handle->execFlg->exp = STB_TRUE ;}else{ handle->execFlg->exp = STB_FALSE ;}
dkato 5:49a61433290a 253 if( ( stbExecFlg & STB_FUNC_FR )== STB_FUNC_FR ){ handle->execFlg->fr = STB_TRUE ;}else{ handle->execFlg->fr = STB_FALSE ;}
dkato 5:49a61433290a 254 handle->execFlg->pet = STB_FALSE ;
dkato 5:49a61433290a 255 handle->execFlg->hand = STB_FALSE ;
dkato 5:49a61433290a 256
dkato 5:49a61433290a 257
dkato 5:49a61433290a 258 if( handle->execFlg->faceTr == STB_FALSE )
dkato 5:49a61433290a 259 {
dkato 5:49a61433290a 260 if( handle->execFlg->gen == STB_TRUE
dkato 5:49a61433290a 261 || handle->execFlg->age == STB_TRUE
dkato 5:49a61433290a 262 || handle->execFlg->fr == STB_TRUE
dkato 5:49a61433290a 263 || handle->execFlg->exp == STB_TRUE
dkato 5:49a61433290a 264 || handle->execFlg->dir == STB_TRUE
dkato 5:49a61433290a 265 || handle->execFlg->gaz == STB_TRUE
dkato 5:49a61433290a 266 || handle->execFlg->bli == STB_TRUE
dkato 5:49a61433290a 267 )
dkato 5:49a61433290a 268 {
dkato 5:49a61433290a 269 free ( handle->execFlg );/*Free of Malloc things at the present time*/
dkato 5:49a61433290a 270 free ( handle );/*Free of Malloc things at the present time*/
dkato 5:49a61433290a 271 return NULL ;/*Invalid input parameter stbExecFlg*/
dkato 5:49a61433290a 272 }
dkato 5:49a61433290a 273 }
dkato 5:49a61433290a 274
dkato 5:49a61433290a 275
dkato 5:49a61433290a 276 /*Setting the initial value here.*/
dkato 5:49a61433290a 277 handle->nTraCntBody = 0;
dkato 5:49a61433290a 278 handle->nTraCntFace = 0;
dkato 5:49a61433290a 279 handle->nDetCntMax = DETECT_CNT_MAX ;/*A maximum number of detected(input) people*/
dkato 5:49a61433290a 280 handle->nTraCntMax = TRACK_CNT_MAX ;/*A maximum number of tracking(output) people*/
dkato 5:49a61433290a 281 handle->nExecuted = STB_FALSE ;
dkato 5:49a61433290a 282 handle->nInitialized= STB_FALSE ;
dkato 5:49a61433290a 283 handle->nDetCntBody = 0;
dkato 5:49a61433290a 284 handle->nDetCntFace = 0;
dkato 5:49a61433290a 285 handle->trFace = NULL;
dkato 5:49a61433290a 286 handle->trBody = NULL;
dkato 5:49a61433290a 287 handle->infoFace = NULL;
dkato 5:49a61433290a 288 handle->wSrcTr = NULL;
dkato 5:49a61433290a 289 handle->wDstTrFace = NULL;
dkato 5:49a61433290a 290 handle->wDstTrBody = NULL;
dkato 5:49a61433290a 291 handle->wSrcPe = NULL;
dkato 5:49a61433290a 292 handle->wDstPe = NULL;
dkato 5:49a61433290a 293 handle->wSrcFr = NULL;
dkato 5:49a61433290a 294 handle->wDstFr = NULL;
dkato 5:49a61433290a 295
dkato 5:49a61433290a 296
dkato 5:49a61433290a 297 /* Do Malloc to things that need Malloc in STB handle */
dkato 5:49a61433290a 298 handle->stbPtr = NULL ;
dkato 5:49a61433290a 299 handle->hTrHandle = NULL ;
dkato 5:49a61433290a 300 handle->hPeHandle = NULL ;
dkato 5:49a61433290a 301 handle->hFrHandle = NULL ;
dkato 5:49a61433290a 302 tmpVal = CalcStbSize ( handle->execFlg ,handle->nTraCntMax ); /*calculate necessary amount in the STB handle*/
dkato 5:49a61433290a 303 handle->stbPtr = ( STB_INT8 * )malloc( tmpVal ) ; /*keep necessary amount in the STB handle*/
dkato 5:49a61433290a 304 if( handle->stbPtr == NULL )
dkato 5:49a61433290a 305 {
dkato 5:49a61433290a 306 free ( handle->execFlg );/*Free of Malloc things at the present time*/
dkato 5:49a61433290a 307 free ( handle );/*Free of Malloc things at the present time*/
dkato 5:49a61433290a 308 return NULL ;
dkato 5:49a61433290a 309 }
dkato 5:49a61433290a 310 ShareStbSize ( handle, handle->stbPtr); /* Malloc-area is allocated to things that need Malloc in STB handle */
dkato 5:49a61433290a 311
dkato 5:49a61433290a 312 /*Create handles for child functions*/
dkato 5:49a61433290a 313 tmpFLG = STB_TRUE;
dkato 5:49a61433290a 314 if( handle->execFlg->bodyTr == STB_TRUE
dkato 5:49a61433290a 315 || handle->execFlg->faceTr == STB_TRUE
dkato 5:49a61433290a 316 )
dkato 5:49a61433290a 317 {
dkato 5:49a61433290a 318 handle->hTrHandle = STB_Tr_CreateHandle( handle->execFlg ,handle->nDetCntMax, handle->nTraCntMax );
dkato 5:49a61433290a 319 if( handle->hTrHandle == NULL ){ tmpFLG = STB_FALSE; }
dkato 5:49a61433290a 320 }
dkato 5:49a61433290a 321 if( handle->execFlg->gen == STB_TRUE
dkato 5:49a61433290a 322 || handle->execFlg->age == STB_TRUE
dkato 5:49a61433290a 323 //|| handle->execFlg->fr == STB_TRUE
dkato 5:49a61433290a 324 || handle->execFlg->exp == STB_TRUE
dkato 5:49a61433290a 325 || handle->execFlg->dir == STB_TRUE
dkato 5:49a61433290a 326 || handle->execFlg->gaz == STB_TRUE
dkato 5:49a61433290a 327 || handle->execFlg->bli == STB_TRUE
dkato 5:49a61433290a 328 )
dkato 5:49a61433290a 329 {
dkato 5:49a61433290a 330 handle->hPeHandle = STB_Pe_CreateHandle( handle->execFlg ,handle->nTraCntMax );
dkato 5:49a61433290a 331 if( handle->hPeHandle == NULL ){ tmpFLG = STB_FALSE; }
dkato 5:49a61433290a 332 }
dkato 5:49a61433290a 333 if( handle->execFlg->fr == STB_TRUE )
dkato 5:49a61433290a 334 {
dkato 5:49a61433290a 335 handle->hFrHandle = STB_Fr_CreateHandle( handle->nTraCntMax );
dkato 5:49a61433290a 336 if( handle->hFrHandle == NULL ){ tmpFLG = STB_FALSE; }
dkato 5:49a61433290a 337 }
dkato 5:49a61433290a 338
dkato 5:49a61433290a 339 if( tmpFLG == STB_FALSE )
dkato 5:49a61433290a 340 {
dkato 5:49a61433290a 341 /*When Malloc failed, Free of Malloc data at the present time*/
dkato 5:49a61433290a 342 if( handle->hTrHandle != NULL ) { STB_Tr_DeleteHandle ( handle->hTrHandle ) ;}
dkato 5:49a61433290a 343 if( handle->hPeHandle != NULL ) { STB_Pe_DeleteHandle ( handle->hPeHandle ) ;}
dkato 5:49a61433290a 344 if( handle->hFrHandle != NULL ) { STB_Fr_DeleteHandle ( handle->hFrHandle ) ;}
dkato 5:49a61433290a 345 if( handle->stbPtr != NULL ) { free ( handle->stbPtr ) ;}/*Free of Malloc things at the present time*/
dkato 5:49a61433290a 346 if( handle->execFlg != NULL ) { free ( handle->execFlg ) ;}/*Free of Malloc things at the present time*/
dkato 5:49a61433290a 347 if( handle != NULL ) { free ( handle ) ;}/*Free of Malloc things at the present time*/
dkato 5:49a61433290a 348 return NULL;
dkato 5:49a61433290a 349 }
dkato 5:49a61433290a 350
dkato 5:49a61433290a 351 return handle;
dkato 5:49a61433290a 352 }
dkato 5:49a61433290a 353 //-------------------------------------------------------------------------------------------------------------------
dkato 5:49a61433290a 354 // DeleteHandle /*Delete handle*/
dkato 5:49a61433290a 355 //-------------------------------------------------------------------------------------------------------------------
dkato 5:49a61433290a 356 STB_INT32 DeleteHandle(STBHANDLE handle)
dkato 5:49a61433290a 357 {
dkato 5:49a61433290a 358
dkato 5:49a61433290a 359 STB_INT32 nRet;
dkato 5:49a61433290a 360
dkato 5:49a61433290a 361 /*NULL check*/
dkato 5:49a61433290a 362 nRet = IsValidPointer(handle);
dkato 5:49a61433290a 363 if(nRet != STB_NORMAL){
dkato 5:49a61433290a 364 return STB_ERR_NOHANDLE;
dkato 5:49a61433290a 365 }
dkato 5:49a61433290a 366
dkato 5:49a61433290a 367 /*Malloc things here, do free*/
dkato 5:49a61433290a 368 if( handle->hTrHandle != NULL ) { STB_Tr_DeleteHandle ( handle->hTrHandle ) ;}
dkato 5:49a61433290a 369 if( handle->hPeHandle != NULL ) { STB_Pe_DeleteHandle ( handle->hPeHandle ) ;}
dkato 5:49a61433290a 370 if( handle->hFrHandle != NULL ) { STB_Fr_DeleteHandle ( handle->hFrHandle ) ;}
dkato 5:49a61433290a 371 if( handle->stbPtr != NULL ) { free ( handle->stbPtr ) ;}
dkato 5:49a61433290a 372 if( handle->execFlg != NULL ) { free ( handle->execFlg ) ;}
dkato 5:49a61433290a 373 if( handle != NULL ) { free ( handle ) ;}
dkato 5:49a61433290a 374
dkato 5:49a61433290a 375
dkato 5:49a61433290a 376
dkato 5:49a61433290a 377 return STB_NORMAL;
dkato 5:49a61433290a 378 }
dkato 5:49a61433290a 379 /*------------------------------------------------------------------------------------------------------------------*/
dkato 5:49a61433290a 380 /* SetFrameResult : Get the result of stbINPUT */
dkato 5:49a61433290a 381 /*------------------------------------------------------------------------------------------------------------------*/
dkato 5:49a61433290a 382 STB_INT32 SetFrameResult ( STBHANDLE handle , const STB_FRAME_RESULT *stbINPUTResult )
dkato 5:49a61433290a 383 {
dkato 5:49a61433290a 384
dkato 5:49a61433290a 385 STB_INT32 nRet;
dkato 5:49a61433290a 386
dkato 5:49a61433290a 387 /*NULL check*/
dkato 5:49a61433290a 388 nRet = IsValidPointer(handle);
dkato 5:49a61433290a 389 if(nRet != STB_NORMAL)
dkato 5:49a61433290a 390 {
dkato 5:49a61433290a 391 return STB_ERR_NOHANDLE;
dkato 5:49a61433290a 392 }
dkato 5:49a61433290a 393
dkato 5:49a61433290a 394 nRet = IsValidPointer(stbINPUTResult);
dkato 5:49a61433290a 395 if(nRet != STB_NORMAL)
dkato 5:49a61433290a 396 {
dkato 5:49a61433290a 397 return STB_ERR_INVALIDPARAM;
dkato 5:49a61433290a 398 }
dkato 5:49a61433290a 399
dkato 5:49a61433290a 400
dkato 5:49a61433290a 401 /*Input value check*/
dkato 5:49a61433290a 402 nRet = STB_IsValidValue ( stbINPUTResult ,handle->execFlg );
dkato 5:49a61433290a 403 if(nRet != STB_TRUE)
dkato 5:49a61433290a 404 {
dkato 5:49a61433290a 405 return STB_ERR_INVALIDPARAM;
dkato 5:49a61433290a 406 }
dkato 5:49a61433290a 407
dkato 5:49a61433290a 408
dkato 5:49a61433290a 409 /*Clear the unexecuted state flag*/
dkato 5:49a61433290a 410 handle->nExecuted = STB_FALSE;
dkato 5:49a61433290a 411
dkato 5:49a61433290a 412 /*Set the received result to the handle*/
dkato 5:49a61433290a 413 if( handle->execFlg->bodyTr == STB_TRUE )
dkato 5:49a61433290a 414 {
dkato 5:49a61433290a 415 handle->nDetCntBody = stbINPUTResult->bodys.nCount;
dkato 5:49a61433290a 416 SetTrackingObjectBody ( &(stbINPUTResult->bodys) ,handle->trBody );
dkato 5:49a61433290a 417 }
dkato 5:49a61433290a 418 if( handle->execFlg->faceTr == STB_TRUE )
dkato 5:49a61433290a 419 {
dkato 5:49a61433290a 420 handle->nDetCntFace = stbINPUTResult->faces.nCount;
dkato 5:49a61433290a 421 SetTrackingObjectFace ( &(stbINPUTResult->faces) ,handle->trFace );
dkato 5:49a61433290a 422 }
dkato 5:49a61433290a 423
dkato 5:49a61433290a 424 /*Set detection result to Face/Property/Recognition data*/
dkato 5:49a61433290a 425 if( handle->execFlg->gen == STB_TRUE
dkato 5:49a61433290a 426 || handle->execFlg->age == STB_TRUE
dkato 5:49a61433290a 427 || handle->execFlg->fr == STB_TRUE
dkato 5:49a61433290a 428 || handle->execFlg->exp == STB_TRUE
dkato 5:49a61433290a 429 || handle->execFlg->gaz == STB_TRUE
dkato 5:49a61433290a 430 || handle->execFlg->dir == STB_TRUE
dkato 5:49a61433290a 431 || handle->execFlg->bli == STB_TRUE
dkato 5:49a61433290a 432 )
dkato 5:49a61433290a 433 {
dkato 5:49a61433290a 434 SetFaceObject ( &(stbINPUTResult->faces) ,handle->infoFace ,handle->execFlg , handle->nTraCntMax );
dkato 5:49a61433290a 435 }
dkato 5:49a61433290a 436
dkato 5:49a61433290a 437
dkato 5:49a61433290a 438 handle->nInitialized = STB_TRUE;
dkato 5:49a61433290a 439
dkato 5:49a61433290a 440 return STB_NORMAL;
dkato 5:49a61433290a 441 }
dkato 5:49a61433290a 442
dkato 5:49a61433290a 443 /*------------------------------------------------------------------------------------------------------------------*/
dkato 5:49a61433290a 444 /*Execute : Main process execution*/
dkato 5:49a61433290a 445 /*------------------------------------------------------------------------------------------------------------------*/
dkato 5:49a61433290a 446 STB_INT32 Execute ( STBHANDLE handle )
dkato 5:49a61433290a 447 {
dkato 5:49a61433290a 448 STB_INT32 nRet ;
dkato 5:49a61433290a 449 STB_TR_DET *srcTr = handle->wSrcTr ;/*TR : input data*/
dkato 5:49a61433290a 450 STB_TR_RES_FACES *dstTrFace = handle->wDstTrFace;/*TR : output data*/
dkato 5:49a61433290a 451 STB_TR_RES_BODYS *dstTrBody = handle->wDstTrBody;/*TR : output data*/
dkato 5:49a61433290a 452 STB_PE_DET *srcPe = handle->wSrcPe ;/*PR : Input data*/
dkato 5:49a61433290a 453 STB_PE_RES *dstPe = handle->wDstPe ;/*PE : Output data*/
dkato 5:49a61433290a 454 STB_FR_DET *srcFr = handle->wSrcFr ;/*FR : Input data*/
dkato 5:49a61433290a 455 STB_FR_RES *dstFr = handle->wDstFr ;/*FR : Output data*/
dkato 5:49a61433290a 456
dkato 5:49a61433290a 457
dkato 5:49a61433290a 458
dkato 5:49a61433290a 459 /*NULL check*/
dkato 5:49a61433290a 460 nRet = IsValidPointer ( handle );
dkato 5:49a61433290a 461 if( nRet != STB_NORMAL )
dkato 5:49a61433290a 462 {
dkato 5:49a61433290a 463 return STB_ERR_NOHANDLE;
dkato 5:49a61433290a 464 }
dkato 5:49a61433290a 465
dkato 5:49a61433290a 466 if( handle->nInitialized != STB_TRUE)
dkato 5:49a61433290a 467 {
dkato 5:49a61433290a 468 return STB_ERR_INITIALIZE;
dkato 5:49a61433290a 469 }
dkato 5:49a61433290a 470 handle->nInitialized = STB_FALSE;
dkato 5:49a61433290a 471 handle->nExecuted = STB_FALSE;
dkato 5:49a61433290a 472
dkato 5:49a61433290a 473 /* TR ------------------------------------------------------------------------------------------------*/
dkato 5:49a61433290a 474 if( handle->execFlg->faceTr == STB_TRUE )
dkato 5:49a61433290a 475 {
dkato 5:49a61433290a 476 SetSrcTrFace ( handle->nDetCntFace , handle->trFace , srcTr ); /*Creation of tracking input data from handle information*/
dkato 5:49a61433290a 477 }
dkato 5:49a61433290a 478 if( handle->execFlg->bodyTr == STB_TRUE )
dkato 5:49a61433290a 479 {
dkato 5:49a61433290a 480 SetSrcTrBody ( handle->nDetCntBody , handle->trBody , srcTr ); /*Creation of tracking input data from handle information*/
dkato 5:49a61433290a 481 }
dkato 5:49a61433290a 482 nRet = STB_Tr_SetDetect ( handle->hTrHandle , srcTr); /*Frame information settings*/
dkato 5:49a61433290a 483 if( nRet != STB_NORMAL) { return nRet; }
dkato 5:49a61433290a 484 nRet = STB_Tr_Execute ( handle->hTrHandle ); /*execute tracking*/
dkato 5:49a61433290a 485 if( nRet != STB_NORMAL) { return nRet; }
dkato 5:49a61433290a 486 nRet = STB_Tr_GetResult ( handle->hTrHandle , dstTrFace , dstTrBody ); /*get the tracking result*/
dkato 5:49a61433290a 487 if( nRet != STB_NORMAL) { return nRet; }
dkato 5:49a61433290a 488 if( handle->execFlg->faceTr == STB_TRUE )
dkato 5:49a61433290a 489 {
dkato 5:49a61433290a 490 SetTrackingInfoToFace ( dstTrFace,&(handle->nTraCntFace),handle->trFace);/*copy to handle the tracking result*/
dkato 5:49a61433290a 491 }
dkato 5:49a61433290a 492 if( handle->execFlg->bodyTr == STB_TRUE )
dkato 5:49a61433290a 493 {
dkato 5:49a61433290a 494 SetTrackingInfoToBody ( dstTrBody,&(handle->nTraCntBody),handle->trBody);/*copy to handle the tracking result*/
dkato 5:49a61433290a 495 }
dkato 5:49a61433290a 496
dkato 5:49a61433290a 497
dkato 5:49a61433290a 498 /*Association of face information and tracking ID--------------------------------------------------------------------------------*/
dkato 5:49a61433290a 499 if( handle->execFlg->gen == STB_TRUE
dkato 5:49a61433290a 500 || handle->execFlg->age == STB_TRUE
dkato 5:49a61433290a 501 || handle->execFlg->fr == STB_TRUE
dkato 5:49a61433290a 502 || handle->execFlg->exp == STB_TRUE
dkato 5:49a61433290a 503 || handle->execFlg->gaz == STB_TRUE
dkato 5:49a61433290a 504 || handle->execFlg->dir == STB_TRUE
dkato 5:49a61433290a 505 || handle->execFlg->bli == STB_TRUE
dkato 5:49a61433290a 506 )
dkato 5:49a61433290a 507 {
dkato 5:49a61433290a 508 SetTrackingIDToFace ( handle->nTraCntFace ,handle->nDetCntFace, handle->trFace,handle->infoFace , handle->execFlg );
dkato 5:49a61433290a 509 }
dkato 5:49a61433290a 510
dkato 5:49a61433290a 511 /* Fr ------------------------------------------------------------------------------------------------*/
dkato 5:49a61433290a 512 if( handle->execFlg->fr == STB_TRUE )
dkato 5:49a61433290a 513 {
dkato 5:49a61433290a 514 SetFaceToFrInfo ( handle->nTraCntFace,handle->infoFace,srcFr ); /*Creation of recognition input data from handle information*/
dkato 5:49a61433290a 515 nRet = STB_Fr_SetDetect ( handle->hFrHandle,srcFr ); /*Pass to the recognized stabilization*/
dkato 5:49a61433290a 516 if(nRet != STB_NORMAL ){ return nRet; }
dkato 5:49a61433290a 517 nRet = STB_Fr_Execute ( handle->hFrHandle ); /* Recognized stabilization execution*/
dkato 5:49a61433290a 518 if(nRet != STB_NORMAL ){ return nRet; }
dkato 5:49a61433290a 519 nRet = STB_Fr_GetResult ( handle->hFrHandle,dstFr ); /*get the recognized stabilization results*/
dkato 5:49a61433290a 520 if(nRet != STB_NORMAL ){ return nRet; }
dkato 5:49a61433290a 521 SetFrInfoToFace ( handle->nTraCntFace,dstFr,handle->infoFace ); /*Copy to handle the recognized stabilization results*/
dkato 5:49a61433290a 522 }
dkato 5:49a61433290a 523
dkato 5:49a61433290a 524 /* Pe ------------------------------------------------------------------------------------------------*/
dkato 5:49a61433290a 525 if( handle->execFlg->gen == STB_TRUE
dkato 5:49a61433290a 526 || handle->execFlg->age == STB_TRUE
dkato 5:49a61433290a 527 //|| handle->execFlg->fr == STB_TRUE
dkato 5:49a61433290a 528 || handle->execFlg->exp == STB_TRUE
dkato 5:49a61433290a 529 || handle->execFlg->gaz == STB_TRUE
dkato 5:49a61433290a 530 || handle->execFlg->dir == STB_TRUE
dkato 5:49a61433290a 531 || handle->execFlg->bli == STB_TRUE
dkato 5:49a61433290a 532 )
dkato 5:49a61433290a 533 {
dkato 5:49a61433290a 534 SetFaceToPeInfo ( handle->nTraCntFace,handle->infoFace,srcPe ); /*Creation of property input data from handle information*/
dkato 5:49a61433290a 535 nRet = STB_Pe_SetDetect ( handle->hPeHandle,srcPe ); /*Pass to property stabilization*/
dkato 5:49a61433290a 536 if( nRet != STB_NORMAL ){ return nRet; }
dkato 5:49a61433290a 537 nRet = STB_Pe_Execute ( handle->hPeHandle ); /*Property stabilization execution*/
dkato 5:49a61433290a 538 if( nRet != STB_NORMAL ){ return nRet; }
dkato 5:49a61433290a 539 nRet = STB_Pe_GetResult ( handle->hPeHandle,dstPe ); /*get the property stabilization results*/
dkato 5:49a61433290a 540 if( nRet != STB_NORMAL ){ return nRet; }
dkato 5:49a61433290a 541 SetPeInfoToFace ( handle->nTraCntFace,dstPe,handle->infoFace , handle->execFlg ); /*Copy to handle the property stabilization results*/
dkato 5:49a61433290a 542 }
dkato 5:49a61433290a 543
dkato 5:49a61433290a 544
dkato 5:49a61433290a 545
dkato 5:49a61433290a 546 /*Set execution completion flag--------------------------------------------------*/
dkato 5:49a61433290a 547 handle->nExecuted = STB_TRUE;
dkato 5:49a61433290a 548
dkato 5:49a61433290a 549 return STB_NORMAL;
dkato 5:49a61433290a 550 }
dkato 5:49a61433290a 551 /*------------------------------------------------------------------------------------------------------------------*/
dkato 5:49a61433290a 552 /* GetFaces : Getting stabilization results of face*/
dkato 5:49a61433290a 553 /*------------------------------------------------------------------------------------------------------------------*/
dkato 5:49a61433290a 554 STB_INT32 GetFaces(STBHANDLE handle, STB_UINT32 *face_count, STB_FACE *face )
dkato 5:49a61433290a 555 {
dkato 5:49a61433290a 556 STB_INT32 nRet , i;
dkato 5:49a61433290a 557
dkato 5:49a61433290a 558 /*NULL check*/
dkato 5:49a61433290a 559 nRet = IsValidPointer(handle);
dkato 5:49a61433290a 560 if(nRet != STB_NORMAL)
dkato 5:49a61433290a 561 {
dkato 5:49a61433290a 562 return STB_ERR_NOHANDLE;
dkato 5:49a61433290a 563 }
dkato 5:49a61433290a 564 nRet = IsValidPointer(face_count);
dkato 5:49a61433290a 565 if(nRet != STB_NORMAL)
dkato 5:49a61433290a 566 {
dkato 5:49a61433290a 567 return nRet;
dkato 5:49a61433290a 568 }
dkato 5:49a61433290a 569 nRet = IsValidPointer(face);
dkato 5:49a61433290a 570 if(nRet != STB_NORMAL)
dkato 5:49a61433290a 571 {
dkato 5:49a61433290a 572 return nRet;
dkato 5:49a61433290a 573 }
dkato 5:49a61433290a 574 if( handle->nExecuted != STB_TRUE)
dkato 5:49a61433290a 575 {
dkato 5:49a61433290a 576 return STB_ERR_INITIALIZE;
dkato 5:49a61433290a 577 }
dkato 5:49a61433290a 578
dkato 5:49a61433290a 579 /*init*/
dkato 5:49a61433290a 580 *face_count = 0;
dkato 5:49a61433290a 581 for( i = 0 ; i < handle->nTraCntMax ; i++ )
dkato 5:49a61433290a 582 {
dkato 5:49a61433290a 583 face[i].nDetectID = -1;
dkato 5:49a61433290a 584 face[i].nTrackingID = -1;
dkato 5:49a61433290a 585 face[i].center.x = 0;
dkato 5:49a61433290a 586 face[i].center.y = 0;
dkato 5:49a61433290a 587 face[i].nSize = 0;
dkato 5:49a61433290a 588 face[i].conf = STB_CONF_NO_DATA ;
dkato 5:49a61433290a 589 face[i].age.conf = STB_CONF_NO_DATA ;
dkato 5:49a61433290a 590 face[i].age.status = STB_STATUS_NO_DATA;
dkato 5:49a61433290a 591 face[i].age.value = -1;
dkato 5:49a61433290a 592 face[i].blink.ratioL = -1;
dkato 5:49a61433290a 593 face[i].blink.ratioR = -1;
dkato 5:49a61433290a 594 face[i].blink.status = STB_STATUS_NO_DATA;
dkato 5:49a61433290a 595 face[i].direction.conf = STB_CONF_NO_DATA ;
dkato 5:49a61433290a 596 face[i].direction.pitch = -1;
dkato 5:49a61433290a 597 face[i].direction.roll = -1;
dkato 5:49a61433290a 598 face[i].direction.status = STB_STATUS_NO_DATA;
dkato 5:49a61433290a 599 face[i].direction.yaw = -1;
dkato 5:49a61433290a 600 face[i].expression.conf = STB_CONF_NO_DATA ;
dkato 5:49a61433290a 601 face[i].expression.status = STB_STATUS_NO_DATA;
dkato 5:49a61433290a 602 face[i].expression.value = -1;
dkato 5:49a61433290a 603 face[i].gaze.conf = STB_CONF_NO_DATA ;
dkato 5:49a61433290a 604 face[i].gaze.LR = -1;
dkato 5:49a61433290a 605 face[i].gaze.status = STB_STATUS_NO_DATA;
dkato 5:49a61433290a 606 face[i].gaze.UD = -1;
dkato 5:49a61433290a 607 face[i].gender.conf = STB_CONF_NO_DATA ;
dkato 5:49a61433290a 608 face[i].gender.status = STB_STATUS_NO_DATA;
dkato 5:49a61433290a 609 face[i].gender.value = -1;
dkato 5:49a61433290a 610 face[i].recognition.conf = STB_CONF_NO_DATA ;
dkato 5:49a61433290a 611 face[i].recognition.status = STB_STATUS_NO_DATA;
dkato 5:49a61433290a 612 face[i].recognition.value = -1;
dkato 5:49a61433290a 613 }
dkato 5:49a61433290a 614
dkato 5:49a61433290a 615 /*Set the result to the structure*/
dkato 5:49a61433290a 616 if( handle->execFlg->faceTr == STB_TRUE )
dkato 5:49a61433290a 617 {
dkato 5:49a61433290a 618 *face_count = handle->nTraCntFace;
dkato 5:49a61433290a 619 SetFaceToResult ( handle->nTraCntFace ,handle->trFace ,handle->infoFace ,face , handle->execFlg );
dkato 5:49a61433290a 620 }
dkato 5:49a61433290a 621
dkato 5:49a61433290a 622 return STB_NORMAL;
dkato 5:49a61433290a 623 }
dkato 5:49a61433290a 624 /*------------------------------------------------------------------------------------------------------------------*/
dkato 5:49a61433290a 625 /* GetBodies : Getting stabilization results of body */
dkato 5:49a61433290a 626 /*------------------------------------------------------------------------------------------------------------------*/
dkato 5:49a61433290a 627 STB_INT32 GetBodies(STBHANDLE handle, STB_UINT32 *body_count, STB_BODY *body)
dkato 5:49a61433290a 628 {
dkato 5:49a61433290a 629 STB_INT32 nRet , i;
dkato 5:49a61433290a 630
dkato 5:49a61433290a 631 /*NULL check*/
dkato 5:49a61433290a 632 nRet = IsValidPointer(handle);
dkato 5:49a61433290a 633 if(nRet != STB_NORMAL){
dkato 5:49a61433290a 634 return STB_ERR_NOHANDLE;
dkato 5:49a61433290a 635 }
dkato 5:49a61433290a 636 nRet = IsValidPointer(body_count);
dkato 5:49a61433290a 637 if(nRet != STB_NORMAL){
dkato 5:49a61433290a 638 return nRet;
dkato 5:49a61433290a 639 }
dkato 5:49a61433290a 640 nRet = IsValidPointer(body);
dkato 5:49a61433290a 641 if(nRet != STB_NORMAL){
dkato 5:49a61433290a 642 return nRet;
dkato 5:49a61433290a 643 }
dkato 5:49a61433290a 644 if( handle->nExecuted != STB_TRUE){
dkato 5:49a61433290a 645 return STB_ERR_INITIALIZE;
dkato 5:49a61433290a 646 }
dkato 5:49a61433290a 647
dkato 5:49a61433290a 648
dkato 5:49a61433290a 649 /*init*/
dkato 5:49a61433290a 650 *body_count = 0;
dkato 5:49a61433290a 651 for( i = 0 ; i < handle->nTraCntMax ; i++ )
dkato 5:49a61433290a 652 {
dkato 5:49a61433290a 653 body[i].nDetectID = -1;
dkato 5:49a61433290a 654 body[i].nTrackingID = -1;
dkato 5:49a61433290a 655 body[i].center.x = 0;
dkato 5:49a61433290a 656 body[i].center.y = 0;
dkato 5:49a61433290a 657 body[i].nSize = 0;
dkato 5:49a61433290a 658 body[i].conf = STB_CONF_NO_DATA ;
dkato 5:49a61433290a 659 }
dkato 5:49a61433290a 660
dkato 5:49a61433290a 661 /*Set the result to the structure*/
dkato 5:49a61433290a 662 if( handle->execFlg->bodyTr == STB_TRUE )
dkato 5:49a61433290a 663 {
dkato 5:49a61433290a 664 *body_count = handle->nTraCntBody;
dkato 5:49a61433290a 665 SetBodyToResult(handle->nTraCntBody,handle->trBody, body);
dkato 5:49a61433290a 666 }
dkato 5:49a61433290a 667 return STB_NORMAL;
dkato 5:49a61433290a 668 }
dkato 5:49a61433290a 669 /*------------------------------------------------------------------------------------------------------------------*/
dkato 5:49a61433290a 670 /* Clear */
dkato 5:49a61433290a 671 /*------------------------------------------------------------------------------------------------------------------*/
dkato 5:49a61433290a 672 STB_INT32 Clear(STBHANDLE handle)
dkato 5:49a61433290a 673 {
dkato 5:49a61433290a 674 STB_INT32 nRet;
dkato 5:49a61433290a 675
dkato 5:49a61433290a 676 /*NULL check*/
dkato 5:49a61433290a 677 nRet = IsValidPointer(handle);
dkato 5:49a61433290a 678 if(nRet != STB_NORMAL){
dkato 5:49a61433290a 679 return STB_ERR_NOHANDLE;
dkato 5:49a61433290a 680 }
dkato 5:49a61433290a 681
dkato 5:49a61433290a 682 STB_Tr_Clear( handle->hTrHandle );
dkato 5:49a61433290a 683 STB_Pe_Clear( handle->hPeHandle );
dkato 5:49a61433290a 684 if( handle->execFlg->fr == STB_TRUE )
dkato 5:49a61433290a 685 {
dkato 5:49a61433290a 686 STB_Fr_Clear( handle->hFrHandle );
dkato 5:49a61433290a 687 }
dkato 5:49a61433290a 688
dkato 5:49a61433290a 689 handle->nInitialized = STB_FALSE;
dkato 5:49a61433290a 690 handle->nExecuted = STB_FALSE;
dkato 5:49a61433290a 691
dkato 5:49a61433290a 692
dkato 5:49a61433290a 693 return STB_NORMAL;
dkato 5:49a61433290a 694
dkato 5:49a61433290a 695 }
dkato 5:49a61433290a 696 /*------------------------------------------------------------------------------------------------------------------*/
dkato 5:49a61433290a 697 /*Setting function (wrapper for child libraries)*/
dkato 5:49a61433290a 698 /*------------------------------------------------------------------------------------------------------------------*/
dkato 5:49a61433290a 699 STB_INT32 SetTrackingRetryCount(STBHANDLE handle, STB_INT32 nMaxRetryCount){
dkato 5:49a61433290a 700 STB_INT32 nRet;
dkato 5:49a61433290a 701 /*NULL check*/
dkato 5:49a61433290a 702 nRet = IsValidPointer(handle);
dkato 5:49a61433290a 703 if(nRet != STB_NORMAL){
dkato 5:49a61433290a 704 return STB_ERR_NOHANDLE;
dkato 5:49a61433290a 705 }
dkato 5:49a61433290a 706
dkato 5:49a61433290a 707 return STB_Tr_SetRetryCount(handle->hTrHandle,nMaxRetryCount);
dkato 5:49a61433290a 708 }
dkato 5:49a61433290a 709
dkato 5:49a61433290a 710 STB_INT32 GetTrackingRetryCount(STBHANDLE handle, STB_INT32 *pnMaxRetryCount){
dkato 5:49a61433290a 711 STB_INT32 nRet;
dkato 5:49a61433290a 712 /*NULL check*/
dkato 5:49a61433290a 713 nRet = IsValidPointer(handle);
dkato 5:49a61433290a 714 if(nRet != STB_NORMAL){
dkato 5:49a61433290a 715 return STB_ERR_NOHANDLE;
dkato 5:49a61433290a 716 }
dkato 5:49a61433290a 717
dkato 5:49a61433290a 718 return STB_Tr_GetRetryCount(handle->hTrHandle,pnMaxRetryCount);
dkato 5:49a61433290a 719 }
dkato 5:49a61433290a 720
dkato 5:49a61433290a 721 STB_INT32 SetTrackingSteadinessParam(STBHANDLE handle, STB_INT32 nPosSteadinessParam, STB_INT32 nSizeSteadinessParam){
dkato 5:49a61433290a 722 STB_INT32 nRet;
dkato 5:49a61433290a 723 /*NULL check*/
dkato 5:49a61433290a 724 nRet = IsValidPointer(handle);
dkato 5:49a61433290a 725 if(nRet != STB_NORMAL){
dkato 5:49a61433290a 726 return STB_ERR_NOHANDLE;
dkato 5:49a61433290a 727 }
dkato 5:49a61433290a 728
dkato 5:49a61433290a 729 return STB_Tr_SetStedinessParam(handle->hTrHandle, nPosSteadinessParam, nSizeSteadinessParam);
dkato 5:49a61433290a 730 }
dkato 5:49a61433290a 731
dkato 5:49a61433290a 732 STB_INT32 GetTrackingSteadinessParam(STBHANDLE handle, STB_INT32 *pnPosSteadinessParam, STB_INT32 *pnSizeSteadinessParam){
dkato 5:49a61433290a 733 STB_INT32 nRet;
dkato 5:49a61433290a 734 /*NULL check*/
dkato 5:49a61433290a 735 nRet = IsValidPointer(handle);
dkato 5:49a61433290a 736 if(nRet != STB_NORMAL){
dkato 5:49a61433290a 737 return STB_ERR_NOHANDLE;
dkato 5:49a61433290a 738 }
dkato 5:49a61433290a 739
dkato 5:49a61433290a 740 return STB_Tr_GetStedinessParam(handle->hTrHandle, pnPosSteadinessParam, pnSizeSteadinessParam);
dkato 5:49a61433290a 741 }
dkato 5:49a61433290a 742
dkato 5:49a61433290a 743 STB_INT32 SetPropertyThreshold(STBHANDLE handle, STB_INT32 nThreshold){
dkato 5:49a61433290a 744 STB_INT32 nRet;
dkato 5:49a61433290a 745 /*NULL check*/
dkato 5:49a61433290a 746 nRet = IsValidPointer(handle);
dkato 5:49a61433290a 747 if(nRet != STB_NORMAL){
dkato 5:49a61433290a 748 return STB_ERR_NOHANDLE;
dkato 5:49a61433290a 749 }
dkato 5:49a61433290a 750
dkato 5:49a61433290a 751 if( handle->execFlg->gen == STB_TRUE
dkato 5:49a61433290a 752 || handle->execFlg->age == STB_TRUE
dkato 5:49a61433290a 753 || handle->execFlg->exp == STB_TRUE
dkato 5:49a61433290a 754 || handle->execFlg->dir == STB_TRUE
dkato 5:49a61433290a 755 || handle->execFlg->gaz == STB_TRUE
dkato 5:49a61433290a 756 || handle->execFlg->bli == STB_TRUE
dkato 5:49a61433290a 757 )
dkato 5:49a61433290a 758 {
dkato 5:49a61433290a 759 }else
dkato 5:49a61433290a 760 {
dkato 5:49a61433290a 761 return STB_NORMAL;
dkato 5:49a61433290a 762 }
dkato 5:49a61433290a 763
dkato 5:49a61433290a 764 return STB_Pe_SetFaceDirThreshold(handle->hPeHandle, nThreshold);
dkato 5:49a61433290a 765 }
dkato 5:49a61433290a 766
dkato 5:49a61433290a 767 STB_INT32 GetPropertyThreshold(STBHANDLE handle, STB_INT32 *pnThreshold){
dkato 5:49a61433290a 768 STB_INT32 nRet;
dkato 5:49a61433290a 769 /*NULL check*/
dkato 5:49a61433290a 770 nRet = IsValidPointer(handle);
dkato 5:49a61433290a 771 if(nRet != STB_NORMAL){
dkato 5:49a61433290a 772 return STB_ERR_NOHANDLE;
dkato 5:49a61433290a 773 }
dkato 5:49a61433290a 774 if( handle->execFlg->gen == STB_TRUE
dkato 5:49a61433290a 775 || handle->execFlg->age == STB_TRUE
dkato 5:49a61433290a 776 || handle->execFlg->exp == STB_TRUE
dkato 5:49a61433290a 777 || handle->execFlg->dir == STB_TRUE
dkato 5:49a61433290a 778 || handle->execFlg->gaz == STB_TRUE
dkato 5:49a61433290a 779 || handle->execFlg->bli == STB_TRUE
dkato 5:49a61433290a 780 )
dkato 5:49a61433290a 781 {
dkato 5:49a61433290a 782 }else
dkato 5:49a61433290a 783 {
dkato 5:49a61433290a 784 return STB_NORMAL;
dkato 5:49a61433290a 785 }
dkato 5:49a61433290a 786 return STB_Pe_GetFaceDirThreshold(handle->hPeHandle, pnThreshold);
dkato 5:49a61433290a 787 }
dkato 5:49a61433290a 788
dkato 5:49a61433290a 789 STB_INT32 SetPropertyAngle(STBHANDLE handle,STB_INT32 nMinUDAngle, STB_INT32 nMaxUDAngle,
dkato 5:49a61433290a 790 STB_INT32 nMinLRAngle, STB_INT32 nMaxLRAngle){
dkato 5:49a61433290a 791 STB_INT32 nRet;
dkato 5:49a61433290a 792 /*NULL check*/
dkato 5:49a61433290a 793 nRet = IsValidPointer(handle);
dkato 5:49a61433290a 794 if(nRet != STB_NORMAL){
dkato 5:49a61433290a 795 return STB_ERR_NOHANDLE;
dkato 5:49a61433290a 796 }
dkato 5:49a61433290a 797 if( handle->execFlg->gen == STB_TRUE
dkato 5:49a61433290a 798 || handle->execFlg->age == STB_TRUE
dkato 5:49a61433290a 799 || handle->execFlg->exp == STB_TRUE
dkato 5:49a61433290a 800 || handle->execFlg->dir == STB_TRUE
dkato 5:49a61433290a 801 || handle->execFlg->gaz == STB_TRUE
dkato 5:49a61433290a 802 || handle->execFlg->bli == STB_TRUE
dkato 5:49a61433290a 803 )
dkato 5:49a61433290a 804 {
dkato 5:49a61433290a 805 }else
dkato 5:49a61433290a 806 {
dkato 5:49a61433290a 807 return STB_NORMAL;
dkato 5:49a61433290a 808 }
dkato 5:49a61433290a 809 return STB_Pe_SetFaceDirMinMax(handle->hPeHandle, nMinUDAngle, nMaxUDAngle, nMinLRAngle, nMaxLRAngle);
dkato 5:49a61433290a 810 }
dkato 5:49a61433290a 811
dkato 5:49a61433290a 812 STB_INT32 GetPropertyAngle(STBHANDLE handle, STB_INT32 *pnMinUDAngle , STB_INT32 *pnMaxUDAngle ,
dkato 5:49a61433290a 813 STB_INT32 *pnMinLRAngle , STB_INT32 *pnMaxLRAngle ){
dkato 5:49a61433290a 814 STB_INT32 nRet;
dkato 5:49a61433290a 815 /*NULL check*/
dkato 5:49a61433290a 816 nRet = IsValidPointer(handle);
dkato 5:49a61433290a 817 if(nRet != STB_NORMAL){
dkato 5:49a61433290a 818 return STB_ERR_NOHANDLE;
dkato 5:49a61433290a 819 }
dkato 5:49a61433290a 820 if( handle->execFlg->gen == STB_TRUE
dkato 5:49a61433290a 821 || handle->execFlg->age == STB_TRUE
dkato 5:49a61433290a 822 || handle->execFlg->exp == STB_TRUE
dkato 5:49a61433290a 823 || handle->execFlg->dir == STB_TRUE
dkato 5:49a61433290a 824 || handle->execFlg->gaz == STB_TRUE
dkato 5:49a61433290a 825 || handle->execFlg->bli == STB_TRUE
dkato 5:49a61433290a 826 )
dkato 5:49a61433290a 827 {
dkato 5:49a61433290a 828 }else
dkato 5:49a61433290a 829 {
dkato 5:49a61433290a 830 return STB_NORMAL;
dkato 5:49a61433290a 831 }
dkato 5:49a61433290a 832 return STB_Pe_GetFaceDirMinMax(handle->hPeHandle, pnMinUDAngle, pnMaxUDAngle, pnMinLRAngle, pnMaxLRAngle);
dkato 5:49a61433290a 833 }
dkato 5:49a61433290a 834 STB_INT32 SetPropertyFrameCount(STBHANDLE handle, STB_INT32 nFrameCount){
dkato 5:49a61433290a 835 STB_INT32 nRet;
dkato 5:49a61433290a 836 /*NULL check*/
dkato 5:49a61433290a 837 nRet = IsValidPointer(handle);
dkato 5:49a61433290a 838 if(nRet != STB_NORMAL){
dkato 5:49a61433290a 839 return STB_ERR_NOHANDLE;
dkato 5:49a61433290a 840 }
dkato 5:49a61433290a 841 if( handle->execFlg->gen == STB_TRUE
dkato 5:49a61433290a 842 || handle->execFlg->age == STB_TRUE
dkato 5:49a61433290a 843 || handle->execFlg->exp == STB_TRUE
dkato 5:49a61433290a 844 || handle->execFlg->dir == STB_TRUE
dkato 5:49a61433290a 845 || handle->execFlg->gaz == STB_TRUE
dkato 5:49a61433290a 846 || handle->execFlg->bli == STB_TRUE
dkato 5:49a61433290a 847 )
dkato 5:49a61433290a 848 {
dkato 5:49a61433290a 849 }else
dkato 5:49a61433290a 850 {
dkato 5:49a61433290a 851 return STB_NORMAL;
dkato 5:49a61433290a 852 }
dkato 5:49a61433290a 853 return STB_Pe_SetFrameCount(handle->hPeHandle, nFrameCount);
dkato 5:49a61433290a 854 }
dkato 5:49a61433290a 855 STB_INT32 GetPropertyFrameCount(STBHANDLE handle, STB_INT32 *pnFrameCount){
dkato 5:49a61433290a 856 STB_INT32 nRet;
dkato 5:49a61433290a 857 /*NULL check*/
dkato 5:49a61433290a 858 nRet = IsValidPointer(handle);
dkato 5:49a61433290a 859 if(nRet != STB_NORMAL){
dkato 5:49a61433290a 860 return STB_ERR_NOHANDLE;
dkato 5:49a61433290a 861 }
dkato 5:49a61433290a 862 if( handle->execFlg->gen == STB_TRUE
dkato 5:49a61433290a 863 || handle->execFlg->age == STB_TRUE
dkato 5:49a61433290a 864 || handle->execFlg->exp == STB_TRUE
dkato 5:49a61433290a 865 || handle->execFlg->dir == STB_TRUE
dkato 5:49a61433290a 866 || handle->execFlg->gaz == STB_TRUE
dkato 5:49a61433290a 867 || handle->execFlg->bli == STB_TRUE
dkato 5:49a61433290a 868 )
dkato 5:49a61433290a 869 {
dkato 5:49a61433290a 870 }else
dkato 5:49a61433290a 871 {
dkato 5:49a61433290a 872 return STB_NORMAL;
dkato 5:49a61433290a 873 }
dkato 5:49a61433290a 874 return STB_Pe_GetFrameCount(handle->hPeHandle, pnFrameCount);
dkato 5:49a61433290a 875 }
dkato 5:49a61433290a 876 STB_INT32 SetRecognitionThreshold(STBHANDLE handle, STB_INT32 nThreshold){
dkato 5:49a61433290a 877 STB_INT32 nRet;
dkato 5:49a61433290a 878 /*NULL check*/
dkato 5:49a61433290a 879 nRet = IsValidPointer(handle);
dkato 5:49a61433290a 880 if(nRet != STB_NORMAL){
dkato 5:49a61433290a 881 return STB_ERR_NOHANDLE;
dkato 5:49a61433290a 882 }
dkato 5:49a61433290a 883 if( handle->execFlg->fr == STB_FALSE )
dkato 5:49a61433290a 884 {
dkato 5:49a61433290a 885 return STB_NORMAL;
dkato 5:49a61433290a 886 }
dkato 5:49a61433290a 887 return STB_Fr_SetFaceDirThreshold(handle->hFrHandle, nThreshold);
dkato 5:49a61433290a 888 }
dkato 5:49a61433290a 889 STB_INT32 GetRecognitionThreshold(STBHANDLE handle, STB_INT32 *pnThreshold){
dkato 5:49a61433290a 890 STB_INT32 nRet;
dkato 5:49a61433290a 891 /*NULL check*/
dkato 5:49a61433290a 892 nRet = IsValidPointer(handle);
dkato 5:49a61433290a 893 if(nRet != STB_NORMAL){
dkato 5:49a61433290a 894 return STB_ERR_NOHANDLE;
dkato 5:49a61433290a 895 }
dkato 5:49a61433290a 896 if( handle->execFlg->fr == STB_FALSE )
dkato 5:49a61433290a 897 {
dkato 5:49a61433290a 898 return STB_NORMAL;
dkato 5:49a61433290a 899 }
dkato 5:49a61433290a 900 return STB_Fr_GetFaceDirThreshold(handle->hFrHandle, pnThreshold);
dkato 5:49a61433290a 901 }
dkato 5:49a61433290a 902
dkato 5:49a61433290a 903 STB_INT32 SetRecognitionAngle(STBHANDLE handle, STB_INT32 nMinUDAngle, STB_INT32 nMaxUDAngle,
dkato 5:49a61433290a 904 STB_INT32 nMinLRAngle, STB_INT32 nMaxLRAngle){
dkato 5:49a61433290a 905 STB_INT32 nRet;
dkato 5:49a61433290a 906 /*NULL check*/
dkato 5:49a61433290a 907 nRet = IsValidPointer(handle);
dkato 5:49a61433290a 908 if(nRet != STB_NORMAL){
dkato 5:49a61433290a 909 return STB_ERR_NOHANDLE;
dkato 5:49a61433290a 910 }
dkato 5:49a61433290a 911 if( handle->execFlg->fr == STB_FALSE )
dkato 5:49a61433290a 912 {
dkato 5:49a61433290a 913 return STB_NORMAL;
dkato 5:49a61433290a 914 }
dkato 5:49a61433290a 915 return STB_Fr_SetFaceDirMinMax(handle->hFrHandle, nMinUDAngle, nMaxUDAngle, nMinLRAngle , nMaxLRAngle);
dkato 5:49a61433290a 916 }
dkato 5:49a61433290a 917
dkato 5:49a61433290a 918 STB_INT32 GetRecognitionAngle(STBHANDLE handle, STB_INT32 *pnMinUDAngle , STB_INT32 *pnMaxUDAngle ,
dkato 5:49a61433290a 919 STB_INT32 *pnMinLRAngle , STB_INT32 *pnMaxLRAngle){
dkato 5:49a61433290a 920 STB_INT32 nRet;
dkato 5:49a61433290a 921 /*NULL check*/
dkato 5:49a61433290a 922 nRet = IsValidPointer(handle);
dkato 5:49a61433290a 923 if(nRet != STB_NORMAL){
dkato 5:49a61433290a 924 return STB_ERR_NOHANDLE;
dkato 5:49a61433290a 925 }
dkato 5:49a61433290a 926 nRet = IsValidPointer(pnMinUDAngle);
dkato 5:49a61433290a 927 if(nRet != STB_NORMAL){
dkato 5:49a61433290a 928 return STB_ERR_INVALIDPARAM;
dkato 5:49a61433290a 929 }
dkato 5:49a61433290a 930 nRet = IsValidPointer(pnMaxUDAngle);
dkato 5:49a61433290a 931 if(nRet != STB_NORMAL){
dkato 5:49a61433290a 932 return STB_ERR_INVALIDPARAM;
dkato 5:49a61433290a 933 }
dkato 5:49a61433290a 934 nRet = IsValidPointer(pnMinLRAngle);
dkato 5:49a61433290a 935 if(nRet != STB_NORMAL){
dkato 5:49a61433290a 936 return STB_ERR_INVALIDPARAM;
dkato 5:49a61433290a 937 }
dkato 5:49a61433290a 938 nRet = IsValidPointer(pnMaxLRAngle);
dkato 5:49a61433290a 939 if(nRet != STB_NORMAL){
dkato 5:49a61433290a 940 return STB_ERR_INVALIDPARAM;
dkato 5:49a61433290a 941 }
dkato 5:49a61433290a 942
dkato 5:49a61433290a 943 if( handle->execFlg->fr == STB_FALSE )
dkato 5:49a61433290a 944 {
dkato 5:49a61433290a 945 return STB_NORMAL;
dkato 5:49a61433290a 946 }
dkato 5:49a61433290a 947 return STB_Fr_GetFaceDirMinMax(handle->hFrHandle, pnMinUDAngle, pnMaxUDAngle, pnMinLRAngle , pnMaxLRAngle);
dkato 5:49a61433290a 948 }
dkato 5:49a61433290a 949
dkato 5:49a61433290a 950 STB_INT32 SetRecognitionFrameCount(STBHANDLE handle, STB_INT32 nFrameCount){
dkato 5:49a61433290a 951 STB_INT32 nRet;
dkato 5:49a61433290a 952 /*NULL check*/
dkato 5:49a61433290a 953 nRet = IsValidPointer(handle);
dkato 5:49a61433290a 954 if(nRet != STB_NORMAL){
dkato 5:49a61433290a 955 return STB_ERR_NOHANDLE;
dkato 5:49a61433290a 956 }
dkato 5:49a61433290a 957 if( handle->execFlg->fr == STB_FALSE )
dkato 5:49a61433290a 958 {
dkato 5:49a61433290a 959 return STB_NORMAL;
dkato 5:49a61433290a 960 }
dkato 5:49a61433290a 961 return STB_Fr_SetFrameCount(handle->hFrHandle, nFrameCount);
dkato 5:49a61433290a 962 }
dkato 5:49a61433290a 963 STB_INT32 GetRecognitionFrameCount(STBHANDLE handle, STB_INT32 *pnFrameCount){
dkato 5:49a61433290a 964 STB_INT32 nRet;
dkato 5:49a61433290a 965 /*NULL check*/
dkato 5:49a61433290a 966 nRet = IsValidPointer(handle);
dkato 5:49a61433290a 967 if(nRet != STB_NORMAL){
dkato 5:49a61433290a 968 return STB_ERR_NOHANDLE;
dkato 5:49a61433290a 969 }
dkato 5:49a61433290a 970 if( handle->execFlg->fr == STB_FALSE )
dkato 5:49a61433290a 971 {
dkato 5:49a61433290a 972 return STB_NORMAL;
dkato 5:49a61433290a 973 }
dkato 5:49a61433290a 974 return STB_Fr_GetFrameCount(handle->hFrHandle, pnFrameCount);
dkato 5:49a61433290a 975 }
dkato 5:49a61433290a 976
dkato 5:49a61433290a 977 STB_INT32 SetRecognitionRatio (STBHANDLE handle, STB_INT32 nMinRatio){
dkato 5:49a61433290a 978 STB_INT32 nRet;
dkato 5:49a61433290a 979 /*NULL check*/
dkato 5:49a61433290a 980 nRet = IsValidPointer(handle);
dkato 5:49a61433290a 981 if(nRet != STB_NORMAL){
dkato 5:49a61433290a 982 return STB_ERR_NOHANDLE;
dkato 5:49a61433290a 983 }
dkato 5:49a61433290a 984 if( handle->execFlg->fr == STB_FALSE )
dkato 5:49a61433290a 985 {
dkato 5:49a61433290a 986 return STB_NORMAL;
dkato 5:49a61433290a 987 }
dkato 5:49a61433290a 988 return STB_Fr_SetMinRatio(handle->hFrHandle, nMinRatio);
dkato 5:49a61433290a 989 }
dkato 5:49a61433290a 990 STB_INT32 GetRecognitionRatio (STBHANDLE handle, STB_INT32 *pnMinRatio){
dkato 5:49a61433290a 991 STB_INT32 nRet;
dkato 5:49a61433290a 992 /*NULL check*/
dkato 5:49a61433290a 993 nRet = IsValidPointer(handle);
dkato 5:49a61433290a 994 if(nRet != STB_NORMAL){
dkato 5:49a61433290a 995 return STB_ERR_NOHANDLE;
dkato 5:49a61433290a 996 }
dkato 5:49a61433290a 997 if( handle->execFlg->fr == STB_FALSE )
dkato 5:49a61433290a 998 {
dkato 5:49a61433290a 999 return STB_NORMAL;
dkato 5:49a61433290a 1000 }
dkato 5:49a61433290a 1001 return STB_Fr_GetMinRatio(handle->hFrHandle, pnMinRatio);
dkato 5:49a61433290a 1002 }