videoeditorengine/h263decoder/src/vdefrt.cpp
changeset 9 d87d32eab1a9
parent 0 951a5db380a0
--- 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