diff -r 951a5db380a0 -r d87d32eab1a9 videoeditorengine/h263decoder/src/vdemain.cpp --- a/videoeditorengine/h263decoder/src/vdemain.cpp Fri Jan 29 14:08:33 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,448 +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: -* Video decoder engine main module. -* -*/ - - - - -/* - * Includes - */ - -#include "h263dConfig.h" - -#include "vdemain.h" -#include "renapi.h" -#include "rendri.h" -#include "h263dext.h" -#include "vde.h" - -#include "biblin.h" - - -/* - * Global functions - */ - -/* {{-output"vdeFree.txt"}} */ -/* - * vdeFree - * - * - * Parameters: - * Nothing - * - * Function: - * This function deinitializes this module. - * - * Returns: - * VDE_OK if the function was successful - * VDE_ERROR indicating a general error - * - * - */ - -int vdeFree(void) -/* {{-output"vdeFree.txt"}} */ -{ - if (vdcFree() < 0) - return VDE_ERROR; - - return VDE_OK; -} - - -/* {{-output"vdeGetLatestFrame.txt"}} */ -/* - * vdeGetLatestFrame - * - * - * Parameters: - * hInstance instance data - * - * ppy, ppu, ppv used to return Y, U and V frame pointers - * - * pLumWidth, pLumHeight used to return luminance image width and height - * Note these values can be counted on even if - * the function returns an error. - * - * pFrameNum used to return frame number - * - * Function: - * This function returns the latest correctly decoded frame - * (and some side-information). - * - * Note that no thread synchronization is used since the function - * is used only from the mobidntc.c and it is very likely that - * the same decoder instance is used only from a single calling - * thread at the same time. - * - * Returns: - * VDE_OK if the function was successful - * VDE_ERROR indicating a general error - */ - - -int vdeGetLatestFrame( - vdeHInstance_t hInstance, - u_char **ppy, u_char **ppu, u_char **ppv, - int *pLumWidth, int *pLumHeight, - int *pFrameNum) -/* {{-output"vdeGetLatestFrame.txt"}} */ -{ - int - retValue; - - vdeImb_t - *pImb; - - vdeImsItem_t - *pImsItem; - - vdeInstance_t - *instance = (vdeInstance_t *) hInstance; - - - vdeAssert(instance != NULL); - - /* Ensure that image width and height are returned anyway */ - *pLumWidth = instance->lumWidth; - *pLumHeight = instance->lumHeight; - - retValue = vdeImsGetReference( - &instance->imageStore, - VDEIMS_REF_LATEST, 0, - &pImsItem); - if (retValue < 0) - return retValue; - - if (!pImsItem) - return VDE_ERROR; - - pImb = pImsItem->imb; - - if (vdeImbYUV(pImb, ppy, ppu, ppv, pLumWidth, pLumHeight) < 0) - return VDE_ERROR; - - *pFrameNum = renDriFrameNumber(pImb->drawItem); - - return VDE_OK; -} - - - -/* {{-output"vdeInit.txt"}} */ -/* - * vdeInit - * - * - * Parameters: - * param a h263dOpen_t structure containing - * the initialization parameters - * - * Function: - * This function allocates and initializes an H.263 video decoder engine - * (VDE) instance. - * - * Returns: - * a handle to the new instance or - * NULL if the initialization fails - * - * - */ - -vdeHInstance_t vdeInit(h263dOpen_t *param) -/* {{-output"vdeInit.txt"}} */ -{ - vdeInstance_t *instance; - - vdeAssert(param); - vdeAssert(!param->fRPS || (param->fRPS && param->numReferenceFrames > 1)); - - instance = (vdeInstance_t *) - vdeMalloc(sizeof(vdeInstance_t) + param->freeSpace); - if (instance == NULL) - goto errInstanceAllocation; - memset(instance, 0, sizeof(vdeInstance_t)); - - if (param->lumWidth % 16) - param->lumWidth = (param->lumWidth / 16 + 1) * 16; - - if (param->lumHeight % 16) - param->lumHeight = (param->lumHeight / 16 + 1) * 16; - - if (vdeImsOpen(&instance->imageStore, param->numPreallocatedFrames, - param->lumWidth, param->lumHeight) < 0) - goto errVdeImsOpen; - - instance->vdcHInstance = vdcOpen(&instance->imageStore, - param->fRPS ? param->numReferenceFrames : 1, - (void *) instance); - if (!instance->vdcHInstance) - goto errVdcOpen; - - if (vdeFrtOpen(&instance->renStore) < 0) - goto errRenStore; - - if (vdeFrtOpen(&instance->startCallbackStore) < 0) - goto errStartCallbackStore; - - if (vdeFrtOpen(&instance->endCallbackStore) < 0) - goto errEndCallbackStore; - - - instance->lumWidth = param->lumWidth; - instance->lumHeight = param->lumHeight; - - return (vdeHInstance_t) instance; - - /* Error cases (release resources in reverse order) */ - -errEndCallbackStore: - - vdeFrtClose(&instance->startCallbackStore); -errStartCallbackStore: - - vdeFrtClose(&instance->renStore); -errRenStore: - - vdcClose(instance->vdcHInstance); -errVdcOpen: - - vdeImsClose(&instance->imageStore); -errVdeImsOpen: - - vdeDealloc(instance); -errInstanceAllocation: - - return NULL; -} - - -/* {{-output"vdeIsINTRA.txt"}} */ -/* - * vdeIsINTRA - * - * - * Parameters: - * hInstance handle of instance data - * frameStart pointer to memory chunk containing a frame - * frameLength number of bytes in frame - * - * Function: - * This function returns 1 if the passed frame is an INTRA frame. - * Otherwise the function returns 0. - * - * Note: - * This function does not use vdeque services since it is intended to be - * used in non-thread version of the codec only. - * - * Returns: - * See above. - */ - -int vdeIsINTRA( - vdeHInstance_t hInstance, - void *frameStart, - unsigned frameLength) -/* {{-output"vdeIsINTRA.txt"}} */ -{ - vdeInstance_t *instance = (vdeInstance_t *) hInstance; - - vdeAssert(instance != NULL); - - /* Note: We assume that vdeDetermineStreamType has been called to - decide whether the stream is MPEG-4 or H.263 */ - - if (instance->fMPEG4) - return vdcIsMPEGINTRA(instance->vdcHInstance, frameStart, frameLength); - else - return vdcIsINTRA(instance->vdcHInstance, frameStart, frameLength); -} - - -/* {{-output"vdeLoad.txt"}} */ -/* - * vdeLoad - * - * - * Parameters: - * rendererFileName file from which to get renderer functions - * - * Function: - * This function initializes this module. - * - * Renderer functions are dynamically loaded from the given file. - * If rendererFileName is NULL, renderer functions are expected to be - * statically linked. - * - * Returns: - * VDE_OK if the function was successful - * VDE_ERROR indicating a general error - * - * - */ - -int vdeLoad(const char * /*rendererFileName*/) -/* {{-output"vdeLoad.txt"}} */ -{ - - if (vdcLoad() < 0) - return VDE_ERROR; - - return VDE_OK; -} - - - - -/* {{-output"vdeSetInputBuffer.txt"}} */ -/* - * vdeSetInputBuffer - * - * - * Parameters: - * hInstance handle of instance data - * buffer a new bit buffer to use - * - * Function: - * This function sets the bit buffer to use for decoding. - * It is intended that this function is used mainly in applications - * where frames are provided one by one from applications. - * Some upper level function must create a bit buffer for each frame, - * pass a pointer to the created bit buffer to the decoder using this - * function and then decode the frame. - * - * Returns: - * VDE_OK if the function was successful - * VDE_ERROR indicating a general error - * - * - */ - -int vdeSetInputBuffer(vdeHInstance_t hInstance, bibBuffer_t *buffer) -/* {{-output"vdeSetInputBuffer.txt"}} */ -{ - vdeInstance_t *instance = (vdeInstance_t *) hInstance; - - if (instance == NULL) - return VDE_ERROR; - - instance->inBuffer = buffer; - - return VDE_OK; -} - - - -int vdeSetOutputBuffer(vdeHInstance_t hInstance, bibBuffer_t *buffer) -/* {{-output"vdeSetOutputBuffer.txt"}} */ -{ - vdeInstance_t *instance = (vdeInstance_t *) hInstance; - - if (instance == NULL) - return VDE_ERROR; - - instance->outBuffer = buffer; - - return VDE_OK; -} - -int vdeSetBufferEdit(vdeHInstance_t hInstance, bibBufferEdit_t *bufEdit) -/* {{-output"vdeSetOutputBuffer.txt"}} */ -{ - vdeInstance_t *instance = (vdeInstance_t *) hInstance; - - if (instance == NULL) - return VDE_ERROR; - - instance->bufEdit = bufEdit; - - return VDE_OK; -} - -int vdeSetVideoEditParams(vdeHInstance_t hInstance, int aColorEffect, TBool aGetDecodedFrame, - TInt aColorToneU, TInt aColorToneV) -{ - vdeInstance_t *instance = (vdeInstance_t *) hInstance; - - if (instance == NULL) - return VDE_ERROR; - - instance->iColorEffect = aColorEffect; - instance->iGetDecodedFrame = aGetDecodedFrame; - instance->iColorToneU = aColorToneU; - instance->iColorToneV = aColorToneV; - - return VDE_OK; -} - - - - - - - - - -/* {{-output"vdeShutDown.txt"}} */ -/* - * vdeShutDown - * - * - * Parameters: - * hInstance handle of instance data - * - * Function: - * This function has to be called in the end of each video sequence. - * It frees the resources (the VDE instance) allocated by vdeInit. - * - * Returns: - * VDE_OK if the closing was successful - * VDE_ERROR indicating a general error - * - * - */ - -int vdeShutDown(vdeHInstance_t hInstance) -/* {{-output"vdeShutDown.txt"}} */ -{ - int retValue = VDE_OK; - vdeInstance_t *instance = (vdeInstance_t *) hInstance; - - if (vdcClose(instance->vdcHInstance) < 0) - retValue = VDE_ERROR; - - if (vdeFrtClose(&instance->endCallbackStore) < 0) - retValue = VDE_ERROR; - - if (vdeFrtClose(&instance->startCallbackStore) < 0) - retValue = VDE_ERROR; - - if (vdeFrtClose(&instance->renStore) < 0) - retValue = VDE_ERROR; - - if (vdeImsClose(&instance->imageStore) < 0) - retValue = VDE_ERROR; - - vdeDealloc(instance); - - return retValue; -} - -// End of File