xdm.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 
00046 #ifndef ti_xdais_dm_XDM_
00047 #define ti_xdais_dm_XDM_
00048 
00049 #include <ti/xdais/ialg.h>
00050 #include <ti/xdais/xdas.h>
00051 
00052 #ifdef __cplusplus
00053 extern "C" {
00054 #endif
00055 
00058 
00059 #define XDM_EOK                 IALG_EOK    
00060 #define XDM_EFAIL               IALG_EFAIL  
00061 #define XDM_EUNSUPPORTED        -3          
00064 #ifdef XDM_INCLUDE_DOT9_SUPPORT
00065 
00073 #define XDM_ERUNTIME            -2
00074 #endif
00075 
00076 #define XDM_MAX_IO_BUFFERS      16          
00160 typedef struct XDM_BufDesc {
00161     XDAS_Int8   **bufs;     
00164     XDAS_Int32   numBufs;   
00165     XDAS_Int32  *bufSizes;  
00166 } XDM_BufDesc;
00167 
00168 
00172 typedef struct XDM_SingleBufDesc {
00173     XDAS_Int8   *buf;       
00174     XDAS_Int32  bufSize;    
00175 } XDM_SingleBufDesc;
00176 
00177 
00178 
00182 typedef struct XDM1_SingleBufDesc {
00183     XDAS_Int8   *buf;       
00184     XDAS_Int32  bufSize;    
00185     XDAS_Int32  accessMask; 
00211 } XDM1_SingleBufDesc;
00212 
00213 
00221 typedef union {
00222     struct {
00223         XDAS_Int32 width;   
00224         XDAS_Int32 height;  
00225     } tileMem;
00226     XDAS_Int32 bytes;       
00227 } XDM2_BufSize;
00228 
00237 typedef struct XDM2_SingleBufDesc {
00238     XDAS_Int8   *buf;       
00239     XDAS_Int16  memType;    
00243     XDAS_Int16 usageMode;   
00253     XDM2_BufSize bufSize;   
00254     XDAS_Int32  accessMask; 
00280 } XDM2_SingleBufDesc;
00281 
00282 
00286 typedef struct XDM1_BufDesc {
00287     XDAS_Int32   numBufs;   
00292     XDM1_SingleBufDesc descs[XDM_MAX_IO_BUFFERS]; 
00295 } XDM1_BufDesc;
00296 
00305 typedef struct XDM2_BufDesc {
00306     XDAS_Int32   numBufs;   
00311     XDM2_SingleBufDesc descs[XDM_MAX_IO_BUFFERS]; 
00314 } XDM2_BufDesc;
00315 
00316 
00336 typedef enum {
00337     XDM_ACCESSMODE_READ = 0,      
00343     XDM_ACCESSMODE_WRITE = 1      
00349 } XDM_AccessMode;
00350 
00351 
00362 #define XDM_ISACCESSMODE_READ(x)    (((x) >> XDM_ACCESSMODE_READ) & 0x1)
00363 
00364 
00375 #define XDM_ISACCESSMODE_WRITE(x)   (((x) >> XDM_ACCESSMODE_WRITE) & 0x1)
00376 
00377 
00388 #define XDM_CLEARACCESSMODE_READ(x)   ((x) &= (~(0x1 << XDM_ACCESSMODE_READ)))
00389 
00390 
00401 #define XDM_CLEARACCESSMODE_WRITE(x)   ((x) &= (~(0x1 << XDM_ACCESSMODE_WRITE)))
00402 
00403 
00413 #define XDM_SETACCESSMODE_READ(x)   ((x) |= (0x1 << XDM_ACCESSMODE_READ))
00414 
00415 
00425 #define XDM_SETACCESSMODE_WRITE(x)  ((x) |= (0x1 << XDM_ACCESSMODE_WRITE))
00426 
00427 
00431 typedef struct XDM1_AlgBufInfo {
00432     XDAS_Int32 minNumInBufs;       
00433     XDAS_Int32 minNumOutBufs;      
00434     XDM2_BufSize minInBufSize[XDM_MAX_IO_BUFFERS];  
00437     XDM2_BufSize minOutBufSize[XDM_MAX_IO_BUFFERS]; 
00440     XDAS_Int32 inBufMemoryType[XDM_MAX_IO_BUFFERS]; 
00445     XDAS_Int32 outBufMemoryType[XDM_MAX_IO_BUFFERS]; 
00450     XDAS_Int32 minNumBufSets;      
00455 } XDM1_AlgBufInfo;
00456 
00457 
00461 typedef struct XDM_AlgBufInfo {
00462     XDAS_Int32 minNumInBufs;       
00463     XDAS_Int32 minNumOutBufs;      
00464     XDAS_Int32 minInBufSize[XDM_MAX_IO_BUFFERS];  
00467     XDAS_Int32 minOutBufSize[XDM_MAX_IO_BUFFERS]; 
00470 } XDM_AlgBufInfo;
00471 
00472 
00487 #define XDM_CUSTOMENUMBASE 0x100
00488 
00489 
00506 #define XDM_CUSTOMCMDBASE 0x100
00507 
00527 typedef enum {
00528     XDM_GETSTATUS = 0,      
00541     XDM_SETPARAMS = 1,      
00542     XDM_RESET = 2,          
00546     XDM_SETDEFAULT = 3,     
00569     XDM_FLUSH = 4,          
00585     XDM_GETBUFINFO = 5,     
00599     XDM_GETVERSION = 6,     
00607     XDM_GETCONTEXTINFO = 7, 
00613     XDM_GETDYNPARAMSDEFAULT = 8,  
00643     XDM_SETLATEACQUIREARG = 9, 
00651     XDM_MOVEBUFS = 10       
00702 } XDM_CmdId;
00703 
00704 
00723 typedef enum {
00724     XDM_PARAMSCHANGE = 8,       
00736     XDM_APPLIEDCONCEALMENT = 9,  
00749     XDM_INSUFFICIENTDATA = 10,   
00766     XDM_CORRUPTEDDATA = 11,      
00776     XDM_CORRUPTEDHEADER = 12,    
00790     XDM_UNSUPPORTEDINPUT = 13,   
00810     XDM_UNSUPPORTEDPARAM = 14,   
00831     XDM_FATALERROR = 15          
00853 } XDM_ErrorBit;
00854 
00856 #define XDM_ISFATALERROR(x)         (((x) >> XDM_FATALERROR) & 0x1)
00857 
00858 #define XDM_ISUNSUPPORTEDPARAM(x)   (((x) >> XDM_UNSUPPORTEDPARAM) & 0x1)
00859 
00860 #define XDM_ISUNSUPPORTEDINPUT(x)   (((x) >> XDM_UNSUPPORTEDINPUT) & 0x1)
00861 
00862 #define XDM_ISCORRUPTEDHEADER(x)    (((x) >> XDM_CORRUPTEDHEADER) & 0x1)
00863 
00864 #define XDM_ISCORRUPTEDDATA(x)      (((x) >> XDM_CORRUPTEDDATA) & 0x1)
00865 
00866 #define XDM_ISINSUFFICIENTDATA(x)   (((x) >> XDM_INSUFFICIENTDATA) & 0x1)
00867 
00868 #define XDM_ISAPPLIEDCONCEALMENT(x) (((x) >> XDM_APPLIEDCONCEALMENT) & 0x1)
00869 
00871 #define XDM_SETFATALERROR(x)         ((x) |= (0x1 << XDM_FATALERROR))
00872 
00873 #define XDM_SETUNSUPPORTEDPARAM(x)   ((x) |= (0x1 << XDM_UNSUPPORTEDPARAM))
00874 
00875 #define XDM_SETUNSUPPORTEDINPUT(x)   ((x) |= (0x1 << XDM_UNSUPPORTEDINPUT))
00876 
00877 #define XDM_SETCORRUPTEDHEADER(x)    ((x) |= (0x1 << XDM_CORRUPTEDHEADER))
00878 
00879 #define XDM_SETCORRUPTEDDATA(x)      ((x) |= (0x1 << XDM_CORRUPTEDDATA))
00880 
00881 #define XDM_SETINSUFFICIENTDATA(x)   ((x) |= (0x1 << XDM_INSUFFICIENTDATA))
00882 
00883 #define XDM_SETAPPLIEDCONCEALMENT(x) ((x) |= (0x1 << XDM_APPLIEDCONCEALMENT))
00884 
00885 
00893 typedef enum {
00894     XDM_BYTE = 1,           
00895     XDM_LE_16 = 2,          
00896     XDM_LE_32 = 3,          
00897     XDM_LE_64 = 4,          
00898     XDM_BE_16 = 5,          
00899     XDM_BE_32 = 6,          
00900     XDM_BE_64 = 7           
00901 } XDM_DataFormat;
00902 
00903 
00907 typedef struct XDM2_MoveBufDesc {
00908     XDAS_Int32 id;           
00909     XDM2_BufDesc bufDesc;    
00910 } XDM2_MoveBufDesc;
00911 
00912 
00916 typedef struct XDM_Date {
00917     XDAS_Int32 msecsOfDay;   
00918     XDAS_Int32 month;        
00919     XDAS_Int32 dayOfMonth;   
00920     XDAS_Int32 dayOfWeek;    
00921     XDAS_Int32 year;         
00922 } XDM_Date;
00923 
00924 
00928 typedef struct XDM_Point {
00929     XDAS_Int32 x;
00930     XDAS_Int32 y;
00931 } XDM_Point;
00932 
00933 
00937 typedef struct XDM_Rect {
00938     XDM_Point topLeft;
00939     XDM_Point bottomRight;
00940 } XDM_Rect;
00941 
00945 #define XDM_MAX_CONTEXT_BUFFERS   32
00946 
00947 
00951 typedef struct XDM_ContextInfo {
00952     XDAS_Int32 minContextSize;     
00955     XDAS_Int32 minIntermediateBufSizes[XDM_MAX_CONTEXT_BUFFERS];  
00964 } XDM_ContextInfo;
00965 
00966 
00970 typedef struct XDM_Context {
00971     XDM1_SingleBufDesc algContext;  
00978     XDAS_Int32 numInBufs;           
00979     XDAS_Int32 numOutBufs;          
00980     XDAS_Int32 numInOutBufs;        
00981     XDM1_SingleBufDesc inBufs[XDM_MAX_CONTEXT_BUFFERS];  
00986     XDM1_SingleBufDesc outBufs[XDM_MAX_CONTEXT_BUFFERS]; 
00991     XDM1_SingleBufDesc inOutBufs[XDM_MAX_CONTEXT_BUFFERS]; 
00997     XDM1_SingleBufDesc intermediateBufs[XDM_MAX_CONTEXT_BUFFERS]; 
01022 } XDM_Context;
01023 
01024 
01032 typedef enum {
01033     XDM_DEFAULT = 0,                
01037     XDM_HIGH_QUALITY = 1,           
01038     XDM_HIGH_SPEED = 2,             
01039     XDM_USER_DEFINED = 3,           
01042     XDM_HIGH_SPEED_MED_QUALITY = 4, 
01045     XDM_MED_SPEED_MED_QUALITY = 5,  
01048     XDM_MED_SPEED_HIGH_QUALITY = 6, 
01052     XDM_ENCODING_PRESET_MAX  = 7,   
01053     XDM_PRESET_DEFAULT = XDM_MED_SPEED_MED_QUALITY 
01058 } XDM_EncodingPreset;
01059 
01060 
01068 typedef enum {
01069     XDM_DECODE_AU = 0,      
01072     XDM_PARSE_HEADER = 1    
01073 } XDM_DecMode;
01074 
01075 
01083 typedef enum {
01084     XDM_ENCODE_AU = 0,      
01087     XDM_GENERATE_HEADER = 1 
01088 } XDM_EncMode;
01089 
01090 
01098 typedef enum {
01099     XDM_CHROMA_NA = -1,     
01100     XDM_YUV_420P = 1,       
01101     XDM_YUV_422P = 2,       
01102     XDM_YUV_422IBE = 3,     
01103     XDM_YUV_422ILE = 4,     
01104     XDM_YUV_444P = 5,       
01105     XDM_YUV_411P = 6,       
01106     XDM_GRAY = 7,           
01107     XDM_RGB = 8,            
01108     XDM_YUV_420SP = 9,      
01111     XDM_ARGB8888 = 10,      
01112     XDM_RGB555 = 11,        
01113     XDM_RGB565 = 12,        
01114     XDM_YUV_444ILE = 13,    
01116     XDM_CHROMAFORMAT_DEFAULT = XDM_YUV_422ILE
01117 } XDM_ChromaFormat;
01118 
01119 
01127  typedef enum {
01128     XDM_MEMTYPE_ROW = 0,        
01142     XDM_MEMTYPE_RAW = 0,        
01146     XDM_MEMTYPE_TILED8 = 1,     
01147     XDM_MEMTYPE_TILED16 = 2,    
01148     XDM_MEMTYPE_TILED32 = 3,    
01149     XDM_MEMTYPE_TILEDPAGE = 4   
01150 } XDM_MemoryType;
01151 
01152 
01158  typedef enum {
01159     XDM_MEMUSAGE_DATASYNC = 0     
01178 } XDM_MemoryUsageMode;
01179 
01180 
01185 typedef struct XDM_DataSyncDesc {
01186     XDAS_Int32 size;            
01187     XDAS_Int32 scatteredBlocksFlag; 
01209     XDAS_Int32 *baseAddr;       
01226     XDAS_Int32 numBlocks;       
01227     XDAS_Int32 varBlockSizesFlag; 
01233     XDAS_Int32 *blockSizes;     
01247 } XDM_DataSyncDesc;
01248 
01249 
01258 typedef Void * XDM_DataSyncHandle;
01259 
01260 
01277 typedef Void (*XDM_DataSyncPutFxn)(XDM_DataSyncHandle dataSyncHandle,
01278         XDM_DataSyncDesc *dataSyncDesc);
01279 
01302 typedef XDAS_Int32 (*XDM_DataSyncGetFxn)(XDM_DataSyncHandle dataSyncHandle,
01303         XDM_DataSyncDesc *dataSyncDesc);
01304 
01338 typedef XDAS_Int32 (*XDM_DataSyncGetBufferFxn)(XDM_DataSyncHandle dataSyncHandle,
01339         XDM_DataSyncDesc *dataSyncDesc);
01340 
01341 
01357 typedef XDAS_Int32 (*XDM_DataSyncPutBufferFxn)(XDM_DataSyncHandle dataSyncHandle,
01358         XDM_DataSyncDesc *dataSyncDesc);
01359 
01363 #ifdef __cplusplus
01364 }
01365 #endif
01366 
01367 #endif  /* ti_xdais_dm_XDM_ */
01368 /*
01369  *  @(#) ti.xdais.dm; 1, 0, 7,1; 6-19-2012 17:57:47; /db/wtree/library/trees/dais/dais-w06/src/ xlibrary
01370 
01371  */
01372 
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines

Copyright 2012, Texas Instruments Incorporated