--- a/videoeditorengine/h263decoder/src/vdefrt.cpp Fri Jan 29 14:08:33 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,666 +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:
-* Frame type -dependent settings.
-*
-*/
-
-
-
-
-/*
- * Includes
- */
-
-
-#include "h263dConfig.h"
-
-#include "vdefrt.h"
-#include "vde.h"
-#include "h263dapi.h"
-
-
-
-/*
- * Defines
- */
-
-/* The following two definitions are used to indicate that all image
- widths/heights belong to the scope of the correponding setting. */
-#define VDEFRT_ALL_WIDTHS 0
-#define VDEFRT_ALL_HEIGHTS 0
-
-
-/*
- * Structures and typedefs
- */
-
-/* Size list item */
-typedef struct {
- LST_ITEM_SKELETON
-
- int width; /* image width associated with this item */
- int height; /* image height associated with this item */
- u_char fSnapshot; /* snapshot flag associated with this item */
-
- u_int32 dataHandle; /* handle to generic data */
- void (*dealloc) (void *); /* function for dataHandle dealloction */
-} vdeFrtSizeListItem_t;
-
-/* NOTE: Currently the snapshot scope must be used together with the frame
- size scope. It is not possible to store or retrieve an item based
- on the snapshot flag only. */
-
-/*
- * Local function prototypes
- */
-
-static int vdeFrtRemoveAll(vdeFrtStore_t *store);
-
-static int vdeFrtSeekSize(lst_t *sizeList, int width, int height,
- vdeFrtSizeListItem_t **seekHit);
-
-static int vdeFrtSeekItem(lst_t *sizeList, int width, int height,
- u_char fSnapshot, vdeFrtSizeListItem_t **seekHit);
-
-
-/*
- * Global functions
- */
-
-/* {{-output"vdeFrtClose.txt"}} */
-/*
- * vdeFrtClose
- *
- * Parameters:
- * store a pointer to a frame type store
- *
- * Function:
- * This function closes the given frame type store.
- *
- * Returns:
- * VDE_OK if the function was successful
- * VDE_ERROR if an error occured
- *
- *
- */
-
-int vdeFrtClose(vdeFrtStore_t *store)
-/* {{-output"vdeFrtClose.txt"}} */
-{
- int retValue;
-
- retValue = vdeFrtRemoveAll(store);
- if (retValue < 0)
- return retValue;
-
- if (lstClose(&store->sizeList) < 0)
- return VDE_ERROR;
-
- return VDE_OK;
-}
-
-
-/* {{-output"vdeFrtGetItem.txt"}} */
-/*
- * vdeFrtGetItem
- *
- * Parameters:
- * store a pointer to a frame type store
- * frameType specifies the frame type for the wanted item
- * item used to return an item from the store
- *
- * Function:
- * This function fetches the item from the given store which corresponds
- * to the given frame type.
- *
- * Returns:
- * VDE_OK if the function was successful
- * VDE_ERROR if an error occured
- *
- *
- */
-
-int vdeFrtGetItem(vdeFrtStore_t *store, h263dFrameType_t *frameType, u_int32 *item)
-/* {{-output"vdeFrtGetItem.txt"}} */
-{
- switch (frameType->scope) {
- case H263D_FTYPE_NDEF:
- case H263D_FTYPE_SIZE + H263D_FTYPE_SNAPSHOT:
- {
- int retValue;
- vdeFrtSizeListItem_t *listItem;
-
- /* seek item with matching size and snapshot flag */
- retValue = vdeFrtSeekItem(&store->sizeList, frameType->width,
- frameType->height, frameType->fSnapshot, &listItem);
- if (retValue < 0)
- return retValue;
-
- if (listItem)
- *item = listItem->dataHandle;
-
- else {
- if (lstTail(&store->sizeList, (void **) &listItem) < 0)
- return VDE_ERROR;
-
- /* If a default item exists */
- if (listItem &&
- listItem->width == VDEFRT_ALL_WIDTHS &&
- listItem->height == VDEFRT_ALL_HEIGHTS)
- *item = listItem->dataHandle;
-
- else {
- *item = 0;
- return VDE_OK_NOT_AVAILABLE;
- }
- }
-
- return VDE_OK;
-
- }
-
- case H263D_FTYPE_SIZE:
- {
- int retValue;
- vdeFrtSizeListItem_t *listItem;
-
- retValue = vdeFrtSeekSize(&store->sizeList, frameType->width,
- frameType->height, &listItem);
- if (retValue < 0)
- return retValue;
-
- if (listItem)
- *item = listItem->dataHandle;
-
- else {
- if (lstTail(&store->sizeList, (void **) &listItem) < 0)
- return VDE_ERROR;
-
- /* If a default item exists */
- if (listItem &&
- listItem->width == VDEFRT_ALL_WIDTHS &&
- listItem->height == VDEFRT_ALL_HEIGHTS)
- *item = listItem->dataHandle;
-
- else {
- *item = 0;
- return VDE_OK_NOT_AVAILABLE;
- }
- }
-
- return VDE_OK;
- }
-
- case H263D_FTYPE_DEF:
- {
- vdeFrtSizeListItem_t *tailItem;
-
- if (lstTail(&store->sizeList, (void **) &tailItem) < 0)
- return VDE_ERROR;
-
- /* If a default item exists */
- if (tailItem->width == VDEFRT_ALL_WIDTHS &&
- tailItem->height == VDEFRT_ALL_HEIGHTS) {
- *item = tailItem->dataHandle;
- return VDE_OK;
- }
-
- else {
- *item = 0;
- return VDE_OK_NOT_AVAILABLE;
- }
- }
-
- default:
- return VDE_ERROR;
- }
-}
-
-
-/* {{-output"vdeFrtOpen.txt"}} */
-/*
- * vdeFrtOpen
- *
- * Parameters:
- * store a pointer to a frame type store
- *
- * Function:
- * This function initializes the given frame type store.
- *
- * Returns:
- * VDE_OK if the function was successful
- * VDE_ERROR if an error occured
- *
- *
- */
-
-int vdeFrtOpen(vdeFrtStore_t *store)
-/* {{-output"vdeFrtOpen.txt"}} */
-{
- if (lstOpen(&store->sizeList) < 0)
- return VDE_ERROR;
-
- return VDE_OK;
-}
-
-
-/* {{-output"vdeFrtPutItem.txt"}} */
-/*
- * vdeFrtPutItem
- *
- * Parameters:
- * store a pointer to a frame type store
- * frameType specifies the frame type for the given item
- * item a data handle to store
- * removeItem a function which is used to deallocate
- * the data handle when it is removed from
- * the store. NULL may be given if no
- * deallocation is needed.
- *
- * Function:
- * This function puts a data handle to the frame type store.
- *
- * Returns:
- * VDE_OK if the function was successful
- * VDE_ERROR if an error occured
- *
- *
- */
-
-int vdeFrtPutItem(vdeFrtStore_t *store, h263dFrameType_t *frameType,
- u_int32 item, void (*removeItem) (void *))
-/* {{-output"vdeFrtPutItem.txt"}} */
-{
- switch (frameType->scope) {
- case H263D_FTYPE_ALL:
- {
- int retValue;
- vdeFrtSizeListItem_t *newItem;
-
- retValue = vdeFrtRemoveAll(store);
- if (retValue < 0)
- return retValue;
-
- newItem = (vdeFrtSizeListItem_t *)
- vdeMalloc(sizeof(vdeFrtSizeListItem_t));
- if (!newItem)
- return VDE_ERROR;
-
- newItem->width = VDEFRT_ALL_WIDTHS;
- newItem->height = VDEFRT_ALL_HEIGHTS;
- newItem->fSnapshot = 0;
- newItem->dataHandle = item;
- newItem->dealloc = removeItem;
-
- if (lstAdd(&store->sizeList, newItem) < 0) {
- vdeDealloc(newItem);
- return VDE_ERROR;
- }
-
- return VDE_OK;
- }
-
- case H263D_FTYPE_DEF:
- {
- vdeFrtSizeListItem_t *tailItem;
-
- if (lstTail(&store->sizeList, (void **) &tailItem) < 0)
- return VDE_ERROR;
-
- /* If a default item exists */
- if (tailItem->width == VDEFRT_ALL_WIDTHS &&
- tailItem->height == VDEFRT_ALL_HEIGHTS) {
-
- if (tailItem->dealloc)
- tailItem->dealloc((void *) tailItem->dataHandle);
-
- /* Overwrite its data handle */
- tailItem->dataHandle = item;
- }
-
- else {
- vdeFrtSizeListItem_t *newItem;
-
- newItem = (vdeFrtSizeListItem_t *)
- vdeMalloc(sizeof(vdeFrtSizeListItem_t));
- if (!newItem)
- return VDE_ERROR;
-
- newItem->width = VDEFRT_ALL_WIDTHS;
- newItem->height = VDEFRT_ALL_HEIGHTS;
- newItem->fSnapshot = 0;
- newItem->dataHandle = item;
- newItem->dealloc = removeItem;
-
- if (lstEnd(&store->sizeList) < 0) {
- vdeDealloc(newItem);
- return VDE_ERROR;
- }
-
- if (lstAdd(&store->sizeList, newItem) < 0) {
- vdeDealloc(newItem);
- return VDE_ERROR;
- }
- }
-
- return VDE_OK;
- }
-
- case H263D_FTYPE_SIZE:
- {
- int retValue;
- vdeFrtSizeListItem_t *listItem;
-
- retValue = vdeFrtSeekSize(&store->sizeList, frameType->width,
- frameType->height, &listItem);
- if (retValue < 0)
- return retValue;
-
- /* If a setting with the same size already exists */
- if (listItem) {
-
- if (listItem->dealloc)
- listItem->dealloc((void *) listItem->dataHandle);
-
- /* Overwrite its data handle */
- listItem->dataHandle = item;
- }
-
- else {
- vdeFrtSizeListItem_t *newItem;
-
- if (lstHead(&store->sizeList, (void **) &listItem) < 0)
- return VDE_ERROR;
-
- newItem = (vdeFrtSizeListItem_t *)
- vdeMalloc(sizeof(vdeFrtSizeListItem_t));
- if (!newItem)
- return VDE_ERROR;
-
- newItem->width = frameType->width;
- newItem->height = frameType->height;
- newItem->fSnapshot = 0;
- newItem->dataHandle = item;
- newItem->dealloc = removeItem;
-
- if (lstAdd(&store->sizeList, newItem) < 0) {
- vdeDealloc(newItem);
- return VDE_ERROR;
- }
- }
-
- return VDE_OK;
- }
-
- case H263D_FTYPE_SIZE + H263D_FTYPE_SNAPSHOT:
- {
- int retValue;
- vdeFrtSizeListItem_t *listItem;
-
- retValue = vdeFrtSeekItem(&store->sizeList, frameType->width,
- frameType->height, frameType->fSnapshot, &listItem);
- if (retValue < 0)
- return retValue;
-
- /* If a setting with the same parameters already exists */
- if (listItem) {
-
- if (listItem->dealloc)
- listItem->dealloc((void *) listItem->dataHandle);
-
- /* Overwrite its data handle */
- listItem->dataHandle = item;
- }
-
- else {
- vdeFrtSizeListItem_t *newItem;
-
- if (lstHead(&store->sizeList, (void **) &listItem) < 0)
- return VDE_ERROR;
-
- newItem = (vdeFrtSizeListItem_t *)
- vdeMalloc(sizeof(vdeFrtSizeListItem_t));
- if (!newItem)
- return VDE_ERROR;
-
- newItem->width = frameType->width;
- newItem->height = frameType->height;
- newItem->fSnapshot = frameType->fSnapshot;
- newItem->dataHandle = item;
- newItem->dealloc = removeItem;
-
- if (lstAdd(&store->sizeList, newItem) < 0) {
- vdeDealloc(newItem);
- return VDE_ERROR;
- }
- }
-
- return VDE_OK;
-
- }
- default:
- return VDE_ERROR;
- }
-}
-
-
-/* {{-output"vdeFrtRemoveItem.txt"}} */
-/*
- * vdeFrtRemoveItem
- *
- * Parameters:
- * store a pointer to a frame type store
- * frameType specifies the frame type for the item to remove
- *
- * Function:
- * This function removes an entry from the given frame type store.
- * The entry corresponds to the given frame type.
- *
- * Returns:
- * VDE_OK if the function was successful
- * VDE_ERROR if an error occured
- *
- *
- */
-
-int vdeFrtRemoveItem(vdeFrtStore_t *store, h263dFrameType_t *frameType)
-/* {{-output"vdeFrtRemoveItem.txt"}} */
-{
- switch (frameType->scope) {
- case H263D_FTYPE_ALL:
- {
- int retValue;
-
- retValue = vdeFrtRemoveAll(store);
- if (retValue < 0)
- return retValue;
-
- return VDE_OK;
- }
-
- case H263D_FTYPE_DEF:
- {
- vdeFrtSizeListItem_t *tailItem;
-
- if (lstTail(&store->sizeList, (void **) &tailItem) < 0)
- return VDE_ERROR;
-
- /* If a default item exists */
- if (tailItem && tailItem->width == VDEFRT_ALL_WIDTHS &&
- tailItem->height == VDEFRT_ALL_HEIGHTS) {
-
- /* Remove it */
- if (lstRemove(&store->sizeList, (void **) &tailItem) < 0)
- return VDE_ERROR;
-
- if (tailItem->dealloc)
- tailItem->dealloc((void *) tailItem->dataHandle);
-
- vdeDealloc(tailItem);
- }
-
- return VDE_OK;
- }
-
- case H263D_FTYPE_SIZE:
- {
- int retValue;
- vdeFrtSizeListItem_t *listItem;
-
- retValue = vdeFrtSeekSize(&store->sizeList, frameType->width,
- frameType->height, &listItem);
- if (retValue < 0)
- return retValue;
-
- /* If an item with the same size already exists */
- if (listItem) {
-
- /* Remove it */
- if (lstRemove(&store->sizeList, (void **) &listItem) < 0)
- return VDE_ERROR;
-
- if (listItem->dealloc)
- listItem->dealloc((void *) listItem->dataHandle);
-
- vdeDealloc(listItem);
- }
-
- return VDE_OK;
- }
-
- case H263D_FTYPE_SIZE + H263D_FTYPE_SNAPSHOT:
- {
- int retValue;
- vdeFrtSizeListItem_t *listItem;
-
- retValue = vdeFrtSeekItem(&store->sizeList, frameType->width,
- frameType->height, frameType->fSnapshot, &listItem);
- if (retValue < 0)
- return retValue;
-
- /* If an item with the same parameters already exists */
- if (listItem) {
-
- /* Remove it */
- if (lstRemove(&store->sizeList, (void **) &listItem) < 0)
- return VDE_ERROR;
-
- if (listItem->dealloc)
- listItem->dealloc((void *) listItem->dataHandle);
-
- vdeDealloc(listItem);
- }
- return VDE_OK;
-
- }
-
- default:
- return VDE_ERROR;
- }
-}
-
-
-/*
- * Local functions
- */
-
-/*
- * vdeFrtRemoveAll
- * This function removes all items from the given store.
- */
-
-static int vdeFrtRemoveAll(vdeFrtStore_t *store)
-{
- vdeFrtSizeListItem_t *listItem;
-
- if (lstHead(&store->sizeList, (void **) &listItem) < 0)
- return VDE_ERROR;
-
- do {
- if (lstRemove(&store->sizeList, (void **) &listItem) < 0)
- return VDE_ERROR;
-
- if (listItem) {
- if (listItem->dealloc)
- listItem->dealloc((void *) listItem->dataHandle);
- vdeDealloc(listItem);
- }
- } while (listItem);
-
- return VDE_OK;
-}
-
-
-/*
- * vdeFrtSeekSize
- * This function seeks for the given width and height from the given
- * size list. It returns the matching size list item (if there is one).
- */
-
-static int vdeFrtSeekSize(lst_t *sizeList, int width, int height,
- vdeFrtSizeListItem_t **seekHit)
-{
- vdeFrtSizeListItem_t *listItem;
-
- *seekHit = NULL;
-
- if (lstHead(sizeList, (void **) &listItem) < 0)
- return VDE_ERROR;
-
- while (listItem) {
- if (lstNext(sizeList, (void **) &listItem) < 0)
- return VDE_ERROR;
-
- if (listItem && listItem->width == width && listItem->height == height) {
- *seekHit = listItem;
- break;
- }
- }
-
- return VDE_OK;
-}
-
-/*
- * vdeFrtSeekItem
- * This function seeks for an item with the given parameters from the
- * size list. It returns the matching list item (if there is one).
- */
-
-static int vdeFrtSeekItem(lst_t *sizeList, int width, int height,
- u_char fSnapshot, vdeFrtSizeListItem_t **seekHit)
-{
- vdeFrtSizeListItem_t *listItem;
-
- *seekHit = NULL;
-
- if (lstHead(sizeList, (void **) &listItem) < 0)
- return VDE_ERROR;
-
- while (listItem) {
-
- if (listItem && listItem->width == width && listItem->height == height &&
- listItem->fSnapshot == fSnapshot) {
- *seekHit = listItem;
- break;
- }
- if (lstNext(sizeList, (void **) &listItem) < 0)
- return VDE_ERROR;
- }
-
- return VDE_OK;
-}
-
-// End of File