videoeditorengine/h263decoder/inc/vdeimb.h
changeset 0 951a5db380a0
--- /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