videoeditorengine/h263decoder/src/rendri.cpp
branchRCL_3
changeset 3 e0b5df5c0969
parent 0 951a5db380a0
child 7 4c409de21d23
--- 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