diff -r 000000000000 -r 951a5db380a0 videoeditorengine/h263decoder/inc/vdeims.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videoeditorengine/h263decoder/inc/vdeims.h Fri Jan 29 14:08:33 2010 +0200 @@ -0,0 +1,163 @@ +/* +* Copyright (c) 2010 Ixonos Plc. +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - Initial contribution +* +* Contributors: +* Ixonos Plc +* +* Description: +* Header file for the Video Decoder Engine image buffer store. +* +*/ + + +#ifndef _VDEIMS_H_ +#define _VDEIMS_H_ + +/* + * Includes + */ + +#include "list.h" +#include "vdeimb.h" + +/* + * Defines + */ + +/* for the mode parameter of vdeImsGetReference */ +#define VDEIMS_REF_TR 0 +#define VDEIMS_REF_LATEST 1 +#define VDEIMS_REF_OLDEST 2 + + +/* + * Typedefs + */ + +/* {{-output"vdeImsItem_t_info.txt" -ignore"*" -noCR}} + The image store item structure is used throughout the Image Store + module to store individual image buffers. + {{-output"vdeImsItem_t_info.txt"}} */ + +/* {{-output"vdeImsItem_t.txt"}} */ +typedef struct { + LST_ITEM_SKELETON + + vdeImb_t *imb; /* pointer to image buffer structure */ +} vdeImsItem_t; +/* {{-output"vdeImsItem_t.txt"}} */ + + +/* {{-output"vdeIms_t_info.txt" -ignore"*" -noCR}} + vdeIms_t defines the structure of an image buffer store. + A pointer to this structure is passed to the VDE Image Store module + functions to indicate the image store instance which the functions should + handle. One should not access the members of this structure directly + but rather always use the provided access functions. + {{-output"vdeIms_t_info.txt"}} */ + +/* {{-output"vdeIms_t.txt"}} */ +typedef struct { + lst_t freeStoreList; /* a list of "Free" stores each of which is + carrying frames with a certain (unique) + size */ + + vdeImsItem_t *refFrame; /* refFrame is a pointer to + the latest reference (INTRA or INTER) frame */ + + lst_t idleStore; /* a list of non-referenced but to-be-displayed + image store items */ + int fYuvNeeded; + +} vdeIms_t; +/* {{-output"vdeIms_t.txt"}} */ + + +/* + * Function prototypes + */ + +int vdeImsChangeReference(vdeIms_t *store, vdeImsItem_t *newItem); + +int vdeImsClose(vdeIms_t *store); + +int vdeImsDebRefStore(vdeIms_t *store); + +int vdeImsFromRenderer(vdeIms_t *store, void *drawItem); + +int vdeImsGetFree(vdeIms_t *store, int lumWidth, int lumHeight, + vdeImsItem_t **item); + +int vdeImsGetReference(vdeIms_t *store, int mode, int tr, vdeImsItem_t **item); + +int vdeImsOpen(vdeIms_t *store, int numFreeItems, int lumWidth, int lumHeight); + +void vdeImsSetYUVNeed(vdeIms_t *store, int fYuvNeeded); + +int vdeImsPut(vdeIms_t *store, vdeImsItem_t *item); + +int vdeImsPutFree(vdeIms_t *store, vdeImsItem_t *item); + +int vdeImsReleaseReference(vdeIms_t *store, vdeImsItem_t *item); + + + +/* + * Macros + */ + +/* Note: vdeImsImageBufferToStoreItem and vdeImsStoreItemToImageBuffer + need not be used since it is considered that the vdeImsItem_t structure + is public and one can directly refer the image buffer to as pImsItem->imb. + However, these macros exist to provide compatibility to some "old" code. */ + +/* + * vdeImsImageBufferToStoreItem + * + * Parameters: + * vdeImb_t *buffer a pointer to an image buffer + * vdeImsItem_t *storeItem a pointer to a image store item + * + * Function: + * This macro associates the given image buffer with the given + * image store item. + * + * Returns: + * >= 0 if successful + * < 0 indicating an error + * + */ + +#define vdeImsImageBufferToStoreItem(buffer, storeItem) ((storeItem)->imb = (buffer), 0) + + +/* + * vdeImsStoreItemToImageBuffer + * + * Parameters: + * vdeImsItem_t *storeItem a pointer to a image store item + * vdeImb_t **buffer a pointer to an image buffer pointer + * + * Function: + * This macro returns the pointer to the image buffer associated with + * the given image store item. + * + * Returns: + * >= 0 if successful + * < 0 indicating an error + * + */ + +#define vdeImsStoreItemToImageBuffer(storeItem, buffer) (*(buffer) = (storeItem)->imb, 0) + + +#endif +// End of File