1956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong/* 2956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong ** Copyright 2003-2010, VisualOn, Inc. 3956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong ** 4956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong ** Licensed under the Apache License, Version 2.0 (the "License"); 5956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong ** you may not use this file except in compliance with the License. 6956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong ** You may obtain a copy of the License at 7956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong ** 8956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong ** http://www.apache.org/licenses/LICENSE-2.0 9956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong ** 10956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong ** Unless required by applicable law or agreed to in writing, software 11956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong ** distributed under the License is distributed on an "AS IS" BASIS, 12956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong ** See the License for the specific language governing permissions and 14956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong ** limitations under the License. 15956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong */ 16956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong/******************************************************************************* 17956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong File: voMem.h 18956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong 19956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong Content: memory functions & data structures 20956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong 21956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong*******************************************************************************/ 22956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong 23956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong#ifndef __voMem_H__ 24956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong#define __voMem_H__ 25956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong 26956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong#ifdef __cplusplus 27956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dongextern "C" { 28956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong#endif /* __cplusplus */ 29956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong 30956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong#include "voIndex.h" 31956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong 32956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dongtypedef struct 33956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong{ 34956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong VO_S32 Size; /*!< Buffer stride */ 35956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong VO_S32 Flag; 36956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong VO_PTR VBuffer; /*!< user data pointer */ 37956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong VO_PTR PBuffer; /*!< user data pointer */ 38956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong} 39956c553ab0ce72f8074ad0fda2ffd66a0305700cJames DongVO_MEM_INFO; 40956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong 41956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dongtypedef struct VO_MEM_OPERATOR 42956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong{ 43956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong VO_U32 (VO_API * Alloc) (VO_S32 uID, VO_MEM_INFO * pMemInfo); 44956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong VO_U32 (VO_API * Free) (VO_S32 uID, VO_PTR pBuff); 45956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong VO_U32 (VO_API * Set) (VO_S32 uID, VO_PTR pBuff, VO_U8 uValue, VO_U32 uSize); 46956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong VO_U32 (VO_API * Copy) (VO_S32 uID, VO_PTR pDest, VO_PTR pSource, VO_U32 uSize); 47956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong VO_U32 (VO_API * Check) (VO_S32 uID, VO_PTR pBuffer, VO_U32 uSize); 48956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong VO_S32 (VO_API * Compare) (VO_S32 uID, VO_PTR pBuffer1, VO_PTR pBuffer2, VO_U32 uSize); 49956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong VO_U32 (VO_API * Move) (VO_S32 uID, VO_PTR pDest, VO_PTR pSource, VO_U32 uSize); 50956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong} VO_MEM_OPERATOR; 51956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong 52956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong#define voMemAlloc(pBuff, pMemOP, ID, nSize) \ 53956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong{ \ 54956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong VO_MEM_INFO voMemInfo; \ 55956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong voMemInfo.Size=nSize; \ 56956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong pMemOP->Alloc(ID, &voMemInfo); \ 57956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong pBuff=(VO_PBYTE)voMemInfo.VBuffer; \ 58956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong} 59956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong 60956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong 61956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong#ifdef __cplusplus 62956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong} 63956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong#endif /* __cplusplus */ 64956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong 65956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong#endif // __voMem_H__ 66