ividanalytics.h

Go to the documentation of this file.
00001 /* 
00002  * Copyright (c) 2012, 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     XDAS_Int32 blockHeight;              
00120     XDAS_Int32 blockWidth;               
00121     XDAS_Int32 numBlockHorizontal;       
00122     XDAS_Int32 numBlockVertical;         
00124     XDM1_SingleBufDesc enableMaskArray;  
00134 } IVIDANALYTICS_Grid;
00135 
00142 typedef enum {
00143     IVIDANALYTICS_OBJECTTYPE_VEHICLE = 0,      
00144     IVIDANALYTICS_OBJECTTYPE_HUMAN = 1,        
00146     IVIDANALYTICS_OBJECTTYPE_USERBASE = 256    
00149 } IVIDANALYTICS_ObjectType;
00150 
00157 typedef enum {
00158     IVIDANALYTICS_ACTIONTYPE_LOITER = 0,       
00159     IVIDANALYTICS_ACTIONTYPE_ENTER = 1,        
00160     IVIDANALYTICS_ACTIONTYPE_EXIT = 2,         
00161     IVIDANALYTICS_ACTIONTYPE_APPEAR = 3,       
00162     IVIDANALYTICS_ACTIONTYPE_DISAPPEAR = 4,    
00163     IVIDANALYTICS_ACTIONTYPE_CROSSL2R = 5,     
00164     IVIDANALYTICS_ACTIONTYPE_CROSSR2L = 6,     
00165     IVIDANALYTICS_ACTIONTYPE_CROSSU2D = 7,     
00166     IVIDANALYTICS_ACTIONTYPE_CROSSD2U = 8,     
00168     IVIDANALYTICS_ACTIONTYPE_USERBASE = 256    
00171 } IVIDANALYTICS_ActionType;
00172 
00173 
00177 typedef struct IVIDANALYTICS_Rule{
00178     XDAS_Int32 size;            
00179     XDAS_Int32 id;              
00181     IVIDANALYTICS_ObjectType objectType;  
00184     IVIDANALYTICS_ActionType actionType;  
00187 } IVIDANALYTICS_Rule;
00188 
00189 
00194 typedef struct IVIDANALYTICS_Obj {
00195     struct IVIDANALYTICS_Fxns *fxns;
00196 } IVIDANALYTICS_Obj;
00197 
00198 
00202 typedef struct IVIDANALYTICS_Obj  *IVIDANALYTICS_Handle;
00203 
00204 
00216 typedef enum {
00217     IVIDANALYTICS_VIEWSTATE_BAD = 0,
00218     IVIDANALYTICS_VIEWSTATE_GOOD = 1
00219 } IVIDANALYTICS_ViewState;
00220 
00221 
00228 typedef struct IVIDANALYTICS_Params {
00229     XDAS_Int32 size;            
00230     XDAS_Int32 maxHeight;       
00231     XDAS_Int32 maxWidth;        
00232     XDAS_Int32 maxFrameRate;    
00237     XDAS_Int32 dataEndianness;  
00241     XDAS_Int32 inputChromaFormat;
00245     XDAS_Int32 maxRules;         
00246 }IVIDANALYTICS_Params;
00247 
00248 
00263 typedef struct IVIDANALYTICS_DynamicParams {
00264     XDAS_Int32 size;               
00265     IVIDANALYTICS_Grid *grid;      
00266     XDM_Date      date;            
00268     /* Note, we've removed height & width - no way to change size at runtime - need to recreate the alg instance */
00269 
00270     IVIDANALYTICS_Rule rule;    
00273 } IVIDANALYTICS_DynamicParams;
00274 
00275 
00284 typedef struct IVIDANALYTICS_InArgs {
00285     XDAS_Int32    size;            
00286     XDM_Date      date;            
00287 }IVIDANALYTICS_InArgs;
00288 
00289 
00297 typedef struct IVIDANALYTICS_Status {
00298     XDAS_Int32 size;            
00299     XDAS_Int32 extendedError;   
00300     XDM1_BufDesc data;          
00321     XDM_AlgBufInfo bufInfo;     
00334     XDAS_Int32 viewState;       
00338 } IVIDANALYTICS_Status;
00339 
00340 
00349 typedef struct IVIDANALYTICS_OutArgs {
00350     XDAS_Int32 size;            
00351     XDAS_Int32 numTargets;      
00352     XDM_Rect targets[IVIDANALYTICS_MAXTARGETS]; 
00359     XDAS_Int32 numEvents;      
00361     XDAS_Int32 eventId[IVIDANALYTICS_MAXEVENTS];  
00370     XDAS_Int32 extendedError;   
00371     XDM_Date      date;            
00372 } IVIDANALYTICS_OutArgs;
00373 
00374 
00385 typedef  IALG_Cmd IVIDANALYTICS_Cmd;
00386 
00387 
00391 typedef struct IVIDANALYTICS_Fxns {
00392     IALG_Fxns   ialg;             
00464     XDAS_Int32 (*process)(IVIDANALYTICS_Handle handle, XDM1_BufDesc *inBufs,
00465         XDM1_BufDesc *outBufs, IVIDANALYTICS_InArgs *inArgs,
00466         IVIDANALYTICS_OutArgs *outArgs);
00467 
00468 
00504     XDAS_Int32   (*control)(IVIDANALYTICS_Handle handle, IVIDANALYTICS_Cmd id,
00505             IVIDANALYTICS_DynamicParams *params, IVIDANALYTICS_Status *status);
00506 
00507 } IVIDANALYTICS_Fxns;
00508 
00509 
00512 #ifdef __cplusplus
00513 }
00514 #endif
00515 
00516 #endif
00517 /*
00518  *  @(#) ti.xdais.dm; 1, 0, 7,1; 6-19-2012 17:57:46; /db/wtree/library/trees/dais/dais-w06/src/ xlibrary
00519 
00520  */
00521 
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines

Copyright 2012, Texas Instruments Incorporated