ividanalytics.h

Go to the documentation of this file.
00001 /* 
00002  * Copyright (c) 2009, Texas Instruments Incorporated
00003  * All rights reserved.
00004  *
00005  * Redistribution and use in source and binary forms, with or without
00006  * modification, are permitted provided that the following conditions
00007  * are met:
00008  *
00009  * *  Redistributions of source code must retain the above copyright
00010  *    notice, this list of conditions and the following disclaimer.
00011  *
00012  * *  Redistributions in binary form must reproduce the above copyright
00013  *    notice, this list of conditions and the following disclaimer in the
00014  *    documentation and/or other materials provided with the distribution.
00015  *
00016  * *  Neither the name of Texas Instruments Incorporated nor the names of
00017  *    its contributors may be used to endorse or promote products derived
00018  *    from this software without specific prior written permission.
00019  *
00020  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
00021  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
00022  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
00023  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
00024  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
00025  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
00026  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
00027  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
00028  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
00029  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
00030  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00031  * 
00032  */
00033 
00047 #ifndef ti_xdais_dm_IVIDANALYTICS_
00048 #define ti_xdais_dm_IVIDANALYTICS_
00049 
00050 #include <ti/xdais/ialg.h>
00051 #include <ti/xdais/xdas.h>
00052 #include "xdm.h"
00053 
00054 #ifdef __cplusplus
00055 extern "C" {
00056 #endif
00057 
00060 
00061 #define IVIDANALYTICS_EOK       XDM_EOK        
00062 #define IVIDANALYTICS_EFAIL     XDM_EFAIL      
00063 #define IVIDANALYTICS_EUNSUPPORTED XDM_EUNSUPPORTED 
00065 /* IVIDANALYTICS-specific control commands  */
00066 
00070 #define IVIDANALYTICS_SETRULE           XDM_CLASSCMDBASE
00071 
00075 #define IVIDANALYTICS_CLEARRULE         XDM_CLASSCMDBASE + 1
00076 
00083 #define IVIDANALYTICS_MAXTARGETS 128
00084 
00091 #define IVIDANALYTICS_MAXEVENTS 128
00092 
00100 typedef enum {
00101     IVIDANALYTICS_MOTIONDETECT = 0,            
00102     IVIDANALYTICS_OBJECTTRACKING = 1,          
00104     IVIDANALYTICS_USERBASE = 16                
00107 } IVIDANALYTICS_AnalysisMask;
00108 
00109 
00118 typedef struct IVIDANALYTICS_Grid {   /* a grid/block is put on top of a video frame. Some blocks are MD-enabled, the others are MD-disabled... */
00119     /* do we need a size field? probably not */
00120     XDAS_Int32 blockHeight;              
00121     XDAS_Int32 blockWidth;               
00122     XDAS_Int32 numBlockHorizontal;       
00123     XDAS_Int32 numBlockVertical;         
00125     XDM1_SingleBufDesc enableMaskArray;  
00135 } IVIDANALYTICS_Grid;
00136 
00143 typedef enum {
00144     IVIDANALYTICS_OBJECTTYPE_VEHICLE = 0,      
00145     IVIDANALYTICS_OBJECTTYPE_HUMAN = 1,        
00147     IVIDANALYTICS_OBJECTTYPE_USERBASE = 256    
00150 } IVIDANALYTICS_ObjectType;
00151 
00158 typedef enum {
00159     IVIDANALYTICS_ACTIONTYPE_LOITER = 0,       
00160     IVIDANALYTICS_ACTIONTYPE_ENTER = 1,        
00161     IVIDANALYTICS_ACTIONTYPE_EXIT = 2,         
00162     IVIDANALYTICS_ACTIONTYPE_APPEAR = 3,       
00163     IVIDANALYTICS_ACTIONTYPE_DISAPPEAR = 4,    
00164     IVIDANALYTICS_ACTIONTYPE_CROSSL2R = 5,     
00165     IVIDANALYTICS_ACTIONTYPE_CROSSR2L = 6,     
00166     IVIDANALYTICS_ACTIONTYPE_CROSSU2D = 7,     
00167     IVIDANALYTICS_ACTIONTYPE_CROSSD2U = 8,     
00169     IVIDANALYTICS_ACTIONTYPE_USERBASE = 256    
00172 } IVIDANALYTICS_ActionType;
00173 
00174 
00178 typedef struct IVIDANALYTICS_Rule{
00179     XDAS_Int32 size;            
00180     XDAS_Int32 id;              
00182     IVIDANALYTICS_ObjectType objectType;  
00185     IVIDANALYTICS_ActionType actionType;  
00188 } IVIDANALYTICS_Rule;
00189 
00190 
00195 typedef struct IVIDANALYTICS_Obj {
00196     struct IVIDANALYTICS_Fxns *fxns;
00197 } IVIDANALYTICS_Obj;
00198 
00199 
00203 typedef struct IVIDANALYTICS_Obj  *IVIDANALYTICS_Handle;
00204 
00205 
00217 typedef enum {
00218     IVIDANALYTICS_VIEWSTATE_BAD = 0,
00219     IVIDANALYTICS_VIEWSTATE_GOOD = 1
00220 } IVIDANALYTICS_ViewState;
00221 
00222 
00229 typedef struct IVIDANALYTICS_Params {
00230     XDAS_Int32 size;            
00231     XDAS_Int32 maxHeight;       
00232     XDAS_Int32 maxWidth;        
00233     XDAS_Int32 maxFrameRate;    
00238     XDAS_Int32 dataEndianness;  
00242     XDAS_Int32 inputChromaFormat;
00246     XDAS_Int32 maxRules;         
00247 }IVIDANALYTICS_Params;
00248 
00249 
00264 typedef struct IVIDANALYTICS_DynamicParams {
00265     XDAS_Int32 size;               
00266     IVIDANALYTICS_Grid *grid;      
00267     XDM_Date      date;            
00269     /* Note, we've removed height & width - no way to change size at runtime - need to recreate the alg instance */
00270 
00271     IVIDANALYTICS_Rule rule;    
00274 } IVIDANALYTICS_DynamicParams;
00275 
00276 
00285 typedef struct IVIDANALYTICS_InArgs {
00286     XDAS_Int32    size;            
00287     XDM_Date      date;            
00288 }IVIDANALYTICS_InArgs;
00289 
00290 
00298 typedef struct IVIDANALYTICS_Status {
00299     XDAS_Int32 size;            
00300     XDAS_Int32 extendedError;   
00301     XDM1_BufDesc data;          
00322     XDM_AlgBufInfo bufInfo;     
00335     XDAS_Int32 viewState;       
00339 } IVIDANALYTICS_Status;
00340 
00341 
00350 typedef struct IVIDANALYTICS_OutArgs {
00351     XDAS_Int32 size;            
00352     XDAS_Int32 numTargets;      
00353     XDM_Rect targets[IVIDANALYTICS_MAXTARGETS]; 
00360     XDAS_Int32 numEvents;      
00362     XDAS_Int32 eventId[IVIDANALYTICS_MAXEVENTS];  
00371     XDAS_Int32 extendedError;   
00372     XDM_Date      date;            
00373 } IVIDANALYTICS_OutArgs;
00374 
00375 
00386 typedef  IALG_Cmd IVIDANALYTICS_Cmd;
00387 
00388 
00392 typedef struct IVIDANALYTICS_Fxns {
00393     IALG_Fxns   ialg;             
00465     XDAS_Int32 (*process)(IVIDANALYTICS_Handle handle, XDM1_BufDesc *inBufs,
00466         XDM1_BufDesc *outBufs, IVIDANALYTICS_InArgs *inArgs,
00467         IVIDANALYTICS_OutArgs *outArgs);
00468 
00469 
00505     XDAS_Int32   (*control)(IVIDANALYTICS_Handle handle, IVIDANALYTICS_Cmd id,
00506             IVIDANALYTICS_DynamicParams *params, IVIDANALYTICS_Status *status);
00507 
00508 } IVIDANALYTICS_Fxns;
00509 
00510 
00513 #ifdef __cplusplus
00514 }
00515 #endif
00516 
00517 #endif
00518 /*
00519  *  @(#) ti.xdais.dm; 1, 0, 5,194; 3-13-2009 12:27:49; /db/wtree/library/trees/dais/dais-o05x/src/
00520  */
00521 

Copyright 2009, Texas Instruments Incorporated