diff -r 000000000000 -r 951a5db380a0 videoeditorengine/h263decoder/inc/vdeimb.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videoeditorengine/h263decoder/inc/vdeimb.h Fri Jan 29 14:08:33 2010 +0200 @@ -0,0 +1,139 @@ +/* +* 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: +* A header file for the Video Decoder Engine Image Buffer abstract +* data type. +* +*/ + + +#ifndef _VDEIMB_H_ +#define _VDEIMB_H_ + + + +/* + * Includes + */ + +#include "renapi.h" +#include "rendri.h" + + +/* + * Defines + */ + +/* Displaying status */ +#define VDEIMB_NO_DISPLAYING 1 +#define VDEIMB_WAITING 2 +#define VDEIMB_DISPLAYED 4 + +/* Full-picture freeze status, + see vdeImb_t for description of the definitions */ +#define VDEIMB_FPF_REQUEST 2 +#define VDEIMB_FPF_RELEASE 1 +#define VDEIMB_FPF_NOT_SPECIFIED 0 + + +/* + * Structures and typedefs + */ + +/* {{-output"vdeImb_t_info.txt" -ignore"*" -noCR}} + vdeImb_t defines the structure of a single image buffer which is capable + of storing one YUV 4:2:0 image and a number of paramaters as + side-information. The YUV image as well as the YUV to RGB conversion and + displaying related parameters are kept in a renDrawItem_t structure. + Decoder related parameters are stored in the vdeImb_t itself. + One may directly refer to the member variables of the vdeImb_t structure. + However, one should use the functions and macros in the Renderer Draw Item + Interface for accessing the contents of the drawItem member of vdeImb_t. + {{-output"vdeImb_t_info.txt"}} */ + +/* {{-output"vdeImb_t.txt"}} */ +typedef struct { + renDrawItem_t *drawItem; /* renderer draw item which actually contains + the frame memory (and some parameters) */ + + int fReferenced; /* non-zero if the image buffer is going to be + used as a reference frame. Otherwise, zero. */ + + int tr; /* the TR field of H.263 which is associated with + the image buffer */ + + + int trRef; /* Referenced for a TR prediction, + 0 if the frame is a normal picture referenced + once at maximum (in the next picture), + 1 if the frame is referenced multiple times + in the future frames. + This information is used to update reference + picture data structures. It is neede at least + in streaming applications. */ + + int *yQuantParams; /* luminance quantizer parameter for each + macroblock in scan-order */ + + int *uvQuantParams; /* chrominance quantizer parameter for each + macroblock in scan-order */ + +} vdeImb_t; +/* {{-output"vdeImb_t.txt"}} */ + + +/* + * Function prototypes + */ + +vdeImb_t *vdeImbAlloc(int width, int height, int fYuvNeeded); + +int vdeImbCopyParameters(vdeImb_t *dstImb, const vdeImb_t *srcImb); + +void vdeImbDealloc(vdeImb_t *imb); + + +/* + * Macros + */ + +/* {{-output"vdeImbYUV.txt"}} */ +/* + * vdeImbYUV + * + * Parameters: + * vdeImb_t *pimb a pointer to image buffer + * u_char **ppy, **ppu, **ppv used to return the pointers to the top-left + * corner of Y, U and V image buffers + * respectively + * int *pWidth, *pHeight used to return the width and height of + * the luminance image in pixels + * + * Function: + * This function returns the Y, U and V pointers to the passed image buffer + * as well as the dimensions of the luminance frame of the image buffer. + * + * Returns: + * REN_OK if the function was successful + * REN_ERROR indicating a general error + * + */ + +#define vdeImbYUV(pimb, ppy, ppu, ppv, pWidth, pHeight) \ + renDriYUV((pimb)->drawItem, (ppy), (ppu), (ppv), (pWidth), (pHeight)) +/* {{-output"vdeImbYUV.txt"}} */ + +#endif +// End of File