--- a/videoeditorengine/h263decoder/src/rendri.cpp Fri Jan 29 14:08:33 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,409 +0,0 @@
-/*
-* 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:
-* Renderer Draw Item Interface.
-*
-*/
-
-
-
-#include "h263dconfig.h"
-#include "rendri.h"
-#include "debug.h"
-
-
-/*
- * Preprocessor definitions
- */
-
-
-#define renDriMalloc malloc
-#define renDriCalloc calloc
-#define renDriRealloc realloc
-#define renDriDealloc free
-
-#ifndef renAssert
- #ifndef assert
- #include <assert.h>
- #endif
- #define renAssert(exp) assert(exp)
-#endif
-
-
-/*
- * Local function prototypes
- */
-
-
-/*
- * Global functions
- */
-
-/* {{-output"renDriAlloc.txt"}} */
-/*
- * renDriAlloc
- *
- *
- * Parameters:
- * width luminance image width in pixels
- * height luminance image height in pixels
- *
- * Function:
- * This function creates and initializes a new draw item.
- *
- * When passed to the renderer the following members of the draw item
- * must be explicitly set (i.e. these members are not set by this
- * function):
- * drawItem->param.dwFlags
- * drawItem->param.lTime
- * drawItem->extParam.flags
- * drawItem->extParam.rate
- * drawItem->extParam.scale
- * drawItem->extParam.numOfCodedMBs
- * drawItem->extParam.snapshotRect
- * drawItem->extParam.ckInfo
- * drawItem->retFrame
- * drawItem->retFrameParam
- *
- * Returns:
- * a pointer to the created
- * draw item if the function was successful
- * NULL indicating a general error
- *
- *
- */
-
-renDrawItem_t * renDriAlloc(int width, int height, int fYuvNeeded)
-/* {{-output"renDriAlloc.txt"}} */
-{
- renDrawItem_t *drawItem;
- renBitmapInfoHeader_t *bmi;
- void *data;
-
- /* Allocate draw item */
- drawItem = (renDrawItem_t *) renDriMalloc(sizeof(renDrawItem_t));
- if (drawItem == NULL)
- return NULL;
- memset(drawItem, 0, sizeof(renDrawItem_t));
-
- /* Allocate bitmap info header */
- bmi = (renBitmapInfoHeader_t *) renDriMalloc(sizeof(renBitmapInfoHeader_t));
- if (bmi == NULL) {
- renDriDealloc(drawItem);
- return NULL;
- }
-
- /* Initialize bitmap info header */
- bmi->biSize = sizeof(renBitmapInfoHeader_t);
- bmi->biWidth = width;
- bmi->biHeight = height;
- if ( fYuvNeeded )
- {
- bmi->biSizeImage = (u_int32) width * (u_int32) height * 3 / 2;
- /* Allocate room for frame data */
- data = renDriMalloc(bmi->biSizeImage);
- if (data == NULL) {
- renDriDealloc(bmi);
- renDriDealloc(drawItem);
- return NULL;
- }
- }
- else
- {
- bmi->biSizeImage = 0;
- data = NULL;
- }
-
-
- /* Initialize renDrawParam_t member of draw item */
- /* dwFlags set by application */
- drawItem->param.lpFormat = bmi;
- drawItem->param.lpData = data;
- drawItem->param.cbData = bmi->biSizeImage;
- /* lTime set by application */
-
- drawItem->extParam.size = sizeof(renExtDrawParam_t);
- /* flags set by application */
- /* rate set by application */
- /* scale set by application */
- drawItem->extParam.numOfMBs = (width / 16) * (height / 16);
- /* numOfCodedMBs set by application */
- drawItem->extParam.fCodedMBs = (u_char *) renDriMalloc(
- drawItem->extParam.numOfMBs * sizeof(u_char));
- if (drawItem->extParam.fCodedMBs == NULL) {
- renDriDealloc(data);
- renDriDealloc(bmi);
- renDriDealloc(drawItem);
- return NULL;
- }
- /* snapshotRect set by application */
- /* ckInfo set by application */
-
- /* retFrame and retFrameParam members of draw item are set by application */
-
- return drawItem;
-}
-
-
-/* {{-output"renDriCopyParameters.txt"}} */
-/*
- * renDriCopyParameters
- *
- *
- * Parameters:
- * dstDrawItem destination draw item
- * srcDrawItem source draw item
- *
- * Function:
- * This function copies the srcDrawItem structure to the dstDrawItem
- * structure. All other parameters are copied but the actual picture
- * contents. The function handles nested structures correctly.
- * No pointers are overwritten but rather the contents corresponding
- * to a pointer are copied from the source to the destionation structure.
- *
- * Returns:
- * Nothing
- *
- *
- */
-
-void renDriCopyParameters(
- renDrawItem_t *dstDrawItem,
- const renDrawItem_t *srcDrawItem)
-/* {{-output"renDriCopyParameters.txt"}} */
-{
- /* param */
- {
- renDrawParam_t *dstDrawParam = &(dstDrawItem->param);
- const renDrawParam_t *srcDrawParam = &(srcDrawItem->param);
-
- /* dwFlags */
- dstDrawParam->dwFlags = srcDrawParam->dwFlags;
-
- /* lpFormat */
- {
- const renBitmapInfoHeader_t *srcBitmapInfoHeader =
- (renBitmapInfoHeader_t *) srcDrawParam->lpFormat;
-
- /* biSize indicates the size of the bitmap info header.
- Thus, copy biSize bytes from source to destination bitmap info
- header.
- Note: it is assumed that biSize (and the amount of allocated
- memory) is the same in both structures. */
- MEMCPY(
- dstDrawParam->lpFormat,
- srcDrawParam->lpFormat,
- (TInt)srcBitmapInfoHeader->biSize);
- }
-
- /* lpData */
- /* Not copied since contains a pointer to actual picture contents.
- Set to NULL for clarity. */
-
- /* cbData */
- dstDrawParam->cbData = srcDrawParam->cbData;
-
- /* lTime */
- dstDrawParam->lTime = srcDrawParam->lTime;
- }
-
- /* extParam */
- {
- renExtDrawParam_t *dstExtDrawParam = &(dstDrawItem->extParam);
- const renExtDrawParam_t *srcExtDrawParam = &(srcDrawItem->extParam);
- u_char *dstFCodedMBs = dstExtDrawParam->fCodedMBs;
-
- /* fCodedMBs is the only pointer in the structure. Thus, it is easier
- to temporally save the destionation fCodedMBs, then overwrite each
- member of the destination structure by corresponding member of
- the source structure and finally restore fCodedMBs in the destination
- structure. */
-
- /* "size" member indicates the size of the structure.
- Thus, copy size bytes from source to destination structure.
- Note: it is assumed that size (and the amount of allocated
- memory) is the same in both structures. */
- MEMCPY(
- (void *) dstExtDrawParam,
- (void *) srcExtDrawParam,
- (TInt)srcExtDrawParam->size);
-
- /* Restore destination fCodedMBs. */
- dstExtDrawParam->fCodedMBs = dstFCodedMBs;
-
- /* Copy coded MBs array */
- MEMCPY(
- (void *) dstFCodedMBs,
- (void *) srcExtDrawParam->fCodedMBs,
- (TInt)srcExtDrawParam->numOfMBs);
- }
-
-}
-
-/* {{-output"renDriCopyFrameData.txt"}} */
-/*
- * renDriCopyFrameData
- *
- * Parameters:
- * dstDrawItem destination draw item
- * srcDrawItem source draw item
- *
- * Function:
- * This function copies the actual picture data contents from srcDrawItem
- * structure to the dstDrawItem structure. No pointers are overwritten
- * but rather the contents corresponding to a pointer are copied from
- * the source to the destination structure.
- *
- * Returns:
- * Nothing
- *
- */
-
-void renDriCopyFrameData(
- renDrawItem_t *dstDrawItem,
- const renDrawItem_t *srcDrawItem)
-/* {{-output"renDriCopyFrameData.txt"}} */
-{
-
- renDrawParam_t *dstDrawParam = &(dstDrawItem->param);
- const renDrawParam_t *srcDrawParam = &(srcDrawItem->param);
- const renBitmapInfoHeader_t *srcBitmapInfoHeader =
- (renBitmapInfoHeader_t *) srcDrawParam->lpFormat;
-
- /* biSizeImage indicates the size of the image data in bytes.
- Copy biSizeImage bytes from source to destination frame data.
- Note: it is assumed that size (and the amount of allocated
- memory) is the same in both structures. */
-
- renAssert(((renBitmapInfoHeader_t *) dstDrawParam->lpFormat)->biSizeImage == srcBitmapInfoHeader->biSizeImage);
-
- MEMCPY(dstDrawParam->lpData,
- srcDrawParam->lpData,
- (TInt)srcBitmapInfoHeader->biSizeImage);
-
-}
-
-/* {{-output"renDriFree.txt"}} */
-/*
- * renDriFree
- *
- *
- * Parameters:
- * drawItem a pointer to the draw item to free
- *
- * Function:
- * This function destroys the passed draw item.
- *
- * Returns:
- * Nothing.
- *
- *
- */
-
-void renDriFree(renDrawItem_t *drawItem)
-/* {{-output"renDriFree.txt"}} */
-{
- renDrawParam_t *param;
- renExtDrawParam_t *extParam;
-
- if (!drawItem)
- return;
-
- param = &drawItem->param;
- extParam = &drawItem->extParam;
-
- if (param) {
- if (param->lpFormat)
- renDriDealloc(param->lpFormat);
- if (param->lpData)
- renDriDealloc(param->lpData);
- }
-
- if (extParam) {
- if (extParam->fCodedMBs)
- renDriDealloc(extParam->fCodedMBs);
- }
-
- renDriDealloc(drawItem);
-}
-
-
-
-
-
-/* {{-output"renDriYUV.txt"}} */
-/*
- * renDriYUV
- *
- *
- * Parameters:
- * drawItem a pointer to a draw item
- * y, u, v top-left corners of the Y, U and V frames
- * corresponding to the passed draw item
- * width, height the dimensions of the luminance frame of
- * the passed draw item
- *
- * Function:
- * This function returns the Y, U and V pointers to the passed draw item
- * as well as the dimensions of the luminance frame of the draw item.
- *
- * Returns:
- * REN_OK if the function was successful
- * REN_ERROR indicating a general error
- *
- */
-
-int renDriYUV(renDrawItem_t *drawItem,
- u_char **y, u_char **u, u_char **v, int *width, int *height)
-/* {{-output"renDriYUV.txt"}} */
-{
- renBitmapInfoHeader_t *bmi;
- int32 ySize, uvSize;
-
- /* If invalid arguments */
- if (!drawItem || !drawItem->param.lpFormat ||
- !y || !u || !v || !width || !height) {
- /* Return error */
- debPrintf("renGetYUVFromDrawParam: ERROR - null pointer.\n");
- return REN_ERROR;
- }
-
-
- bmi = (renBitmapInfoHeader_t *) drawItem->param.lpFormat;
-
- *width = bmi->biWidth;
- *height = labs(bmi->biHeight);
-
- if ( drawItem->param.lpData == NULL )
- {
- // no YUV buffer, parsing-only instance
- *y = NULL,
- *u = NULL;
- *v = NULL;
-
- return REN_OK;
- }
-
- ySize = (*width) * (*height) * sizeof(u_char);
- uvSize = ySize / 4;
-
- *y = (u_char *) drawItem->param.lpData;
- *u = *y + ySize;
- *v = *u + uvSize;
-
- return REN_OK;
-}
-
-// End of File