| /* |
| ** Copyright 2003-2010, VisualOn, Inc. |
| ** |
| ** 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. |
| */ |
| /******************************************************************************* |
| File: voType.h |
| |
| Content: data type definition |
| |
| *******************************************************************************/ |
| #ifndef __voType_H__ |
| #define __voType_H__ |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif /* __cplusplus */ |
| |
| #ifdef _WIN32 |
| # define VO_API __cdecl |
| # define VO_CBI __stdcall |
| #else |
| # define VO_API |
| # define VO_CBI |
| #endif //_WIN32 |
| |
| /** VO_IN is used to identify inputs to an VO function. This designation |
| will also be used in the case of a pointer that points to a parameter |
| that is used as an output. */ |
| #ifndef VO_IN |
| #define VO_IN |
| #endif |
| |
| /** VO_OUT is used to identify outputs from an VO function. This |
| designation will also be used in the case of a pointer that points |
| to a parameter that is used as an input. */ |
| #ifndef VO_OUT |
| #define VO_OUT |
| #endif |
| |
| /** VO_INOUT is used to identify parameters that may be either inputs or |
| outputs from an VO function at the same time. This designation will |
| also be used in the case of a pointer that points to a parameter that |
| is used both as an input and an output. */ |
| #ifndef VO_INOUT |
| #define VO_INOUT |
| #endif |
| |
| #define VO_MAX_ENUM_VALUE 0X7FFFFFFF |
| |
| /** VO_VOID */ |
| typedef void VO_VOID; |
| |
| /** VO_U8 is an 8 bit unsigned quantity that is byte aligned */ |
| typedef unsigned char VO_U8; |
| |
| /** VO_BYTE is an 8 bit unsigned quantity that is byte aligned */ |
| typedef unsigned char VO_BYTE; |
| |
| /** VO_S8 is an 8 bit signed quantity that is byte aligned */ |
| typedef signed char VO_S8; |
| |
| /** VO_CHAR is an 8 bit signed quantity that is byte aligned */ |
| typedef char VO_CHAR; |
| |
| /** VO_U16 is a 16 bit unsigned quantity that is 16 bit word aligned */ |
| typedef unsigned short VO_U16; |
| |
| /** VO_WCHAR is a 16 bit unsigned quantity that is 16 bit word aligned */ |
| #if defined _WIN32 |
| typedef unsigned short VO_WCHAR; |
| typedef unsigned short* VO_PWCHAR; |
| #elif defined LINUX |
| typedef unsigned char VO_WCHAR; |
| typedef unsigned char* VO_PWCHAR; |
| #endif |
| |
| /** VO_S16 is a 16 bit signed quantity that is 16 bit word aligned */ |
| typedef signed short VO_S16; |
| |
| /** VO_U32 is a 32 bit unsigned quantity that is 32 bit word aligned */ |
| typedef unsigned long VO_U32; |
| |
| /** VO_S32 is a 32 bit signed quantity that is 32 bit word aligned */ |
| typedef signed long VO_S32; |
| |
| /* Users with compilers that cannot accept the "long long" designation should |
| define the VO_SKIP64BIT macro. It should be noted that this may cause |
| some components to fail to compile if the component was written to require |
| 64 bit integral types. However, these components would NOT compile anyway |
| since the compiler does not support the way the component was written. |
| */ |
| #ifndef VO_SKIP64BIT |
| #ifdef _WIN32 |
| /** VO_U64 is a 64 bit unsigned quantity that is 64 bit word aligned */ |
| typedef unsigned __int64 VO_U64; |
| /** VO_S64 is a 64 bit signed quantity that is 64 bit word aligned */ |
| typedef signed __int64 VO_S64; |
| #else // WIN32 |
| /** VO_U64 is a 64 bit unsigned quantity that is 64 bit word aligned */ |
| typedef unsigned long long VO_U64; |
| /** VO_S64 is a 64 bit signed quantity that is 64 bit word aligned */ |
| typedef signed long long VO_S64; |
| #endif // WIN32 |
| #endif // VO_SKIP64BIT |
| |
| /** The VO_BOOL type is intended to be used to represent a true or a false |
| value when passing parameters to and from the VO core and components. The |
| VO_BOOL is a 32 bit quantity and is aligned on a 32 bit word boundary. |
| */ |
| typedef enum VO_BOOL { |
| VO_FALSE = 0, |
| VO_TRUE = !VO_FALSE, |
| VO_BOOL_MAX = VO_MAX_ENUM_VALUE |
| } VO_BOOL; |
| |
| /** The VO_PTR type is intended to be used to pass pointers between the VO |
| applications and the VO Core and components. This is a 32 bit pointer and |
| is aligned on a 32 bit boundary. |
| */ |
| typedef void* VO_PTR; |
| |
| /** The VO_HANDLE type is intended to be used to pass pointers between the VO |
| applications and the VO Core and components. This is a 32 bit pointer and |
| is aligned on a 32 bit boundary. |
| */ |
| typedef void* VO_HANDLE; |
| |
| /** The VO_STRING type is intended to be used to pass "C" type strings between |
| the application and the core and component. The VO_STRING type is a 32 |
| bit pointer to a zero terminated string. The pointer is word aligned and |
| the string is byte aligned. |
| */ |
| typedef char* VO_PCHAR; |
| |
| /** The VO_PBYTE type is intended to be used to pass arrays of bytes such as |
| buffers between the application and the component and core. The VO_PBYTE |
| type is a 32 bit pointer to a zero terminated string. The pointer is word |
| aligned and the string is byte aligned. |
| */ |
| typedef unsigned char* VO_PBYTE; |
| |
| /** The VO_PTCHAR type is intended to be used to pass arrays of wchar such as |
| unicode char between the application and the component and core. The VO_PTCHAR |
| type is a 32 bit pointer to a zero terminated string. The pointer is word |
| aligned and the string is byte aligned. |
| */ |
| /* |
| #if !defined LINUX |
| typedef unsigned short* VO_PTCHAR; |
| typedef unsigned short* VO_TCHAR; |
| #else |
| typedef char* VO_PTCHAR; |
| typedef char VO_TCHAR; |
| #endif |
| */ |
| |
| #ifndef NULL |
| #ifdef __cplusplus |
| #define NULL 0 |
| #else |
| #define NULL ((void *)0) |
| #endif |
| #endif |
| |
| /** |
| * Input stream format, Frame or Stream.. |
| */ |
| typedef enum { |
| VO_INPUT_FRAME = 1, /*!< Input contains completely frame(s) data. */ |
| VO_INPUT_STREAM, /*!< Input is stream data. */ |
| VO_INPUT_STREAM_MAX = VO_MAX_ENUM_VALUE |
| } VO_INPUT_TYPE; |
| |
| |
| /** |
| * General data buffer, used as input or output. |
| */ |
| typedef struct { |
| VO_PBYTE Buffer; /*!< Buffer pointer */ |
| VO_U32 Length; /*!< Buffer size in byte */ |
| VO_S64 Time; /*!< The time of the buffer */ |
| } VO_CODECBUFFER; |
| |
| |
| /** |
| * The init memdata flag. |
| */ |
| typedef enum{ |
| VO_IMF_USERMEMOPERATOR =0, /*!< memData is the pointer of memoperator function*/ |
| VO_IMF_PREALLOCATEDBUFFER =1, /*!< memData is preallocated memory*/ |
| VO_IMF_MAX = VO_MAX_ENUM_VALUE |
| }VO_INIT_MEM_FlAG; |
| |
| |
| /** |
| * The init memory structure.. |
| */ |
| typedef struct{ |
| VO_INIT_MEM_FlAG memflag; /*!<memory flag */ |
| VO_PTR memData; /*!<a pointer to VO_MEM_OPERATOR or a preallocated buffer */ |
| VO_U32 reserved1; /*!<reserved */ |
| VO_U32 reserved2; /*!<reserved */ |
| }VO_CODEC_INIT_USERDATA; |
| |
| |
| #ifdef __cplusplus |
| } |
| #endif /* __cplusplus */ |
| |
| #endif // __voType_H__ |