Beispiel #1
0
/** 
********************************************************************************
*  @fn     _ALG_allocMemory(IALG_MemRec memTab[], Int n)
*
*  @brief  This function allocates the specified number of memory blocks with
*          alignment.
*
*  @param[in]  memTab   :  Array containing the base address
*
*  @param[in]  n        : Number of Memory instance to be freed
*          
*  @return    TRUE if allocated else FALSE
********************************************************************************
*/
Bool _ALG_allocMemory(IALG_MemRec memTab[], Int n)
{
  Int idx;
  
  for (idx = 0; idx < n; idx++) 
  {
    memTab[idx].base = (void *)myMemalign(memTab[idx].alignment, 
    memTab[idx].size);

    if (memTab[idx].base == NULL) 
    {
      _ALG_freeMemory(memTab, idx);
      return (FALSE);
    }
    else
    {
      if (0 == idx)
      {
          /* As per xdaised standard, memTab[0] is guaranteed to be
           * initialized to zero.
           */
          memset(memTab[idx].base,0,memTab[idx].size);

      }
    }
    
  }

  return (TRUE);
}
Beispiel #2
0
/*
*  ======== ALG_create ========
*/
ALG_Handle ALG_create(IALG_Fxns *fxns, IALG_Handle p, IALG_Params *pParams)
{
	IALG_MemRec memTab[ JPEGDEC_MEM_NUMBER ];
	Int n;
	ALG_Handle alg;
	IALG_Fxns *fxnsPtr;

	if (fxns != NULL) 
	{
		n = fxns->algNumAlloc != NULL ? fxns->algNumAlloc() : IALG_DEFMEMRECS;
		memset( memTab, 0, JPEGDEC_MEM_NUMBER * sizeof( IALG_MemRec ) );

		n = fxns->algAlloc(pParams, &fxnsPtr, memTab);
		if (( n <= 0 ) ) 
		{
			return (NULL);
		}
		if (_ALG_allocMemory(memTab, n)) 
		{
			alg = (IALG_Handle)memTab[0].base;
			alg->fxns = fxns;
			if (fxns->algInit(alg, memTab, p, pParams) == IALG_EOK) 
			{
				return (alg);
			}
			fxns->algFree(alg, memTab);
			_ALG_freeMemory(memTab, n);
		}
	}

	return (NULL);
}
Beispiel #3
0
/*
 *  ======== ALG_create ========
 */
ALG_Handle ALG_create(IALG_Fxns *fxns, IALG_Handle p, IALG_Params *params)
{
    IALG_MemRec *memTab;
    Int n;
    ALG_Handle alg;
    IALG_Fxns *fxnsPtr;

    if (fxns != NULL) {
        n = fxns->algNumAlloc != NULL ? fxns->algNumAlloc() : IALG_DEFMEMRECS;

        if ((memTab = (IALG_MemRec *)malloc(n * sizeof (IALG_MemRec)))) {

            n = fxns->algAlloc(params, &fxnsPtr, memTab);
            if (n <= 0) {
                return (NULL);
            }

            if (_ALG_allocMemory(memTab, n)) {
                alg = (IALG_Handle)memTab[0].base;
                alg->fxns = fxns;
                if (fxns->algInit(alg, memTab, p, params) == IALG_EOK) {
                    free(memTab);
                    return (alg);
                }
                fxns->algFree(alg, memTab);
                _ALG_freeMemory(memTab, n);
            }

            free(memTab);
        }
    }

    return (NULL);
}
Beispiel #4
0
Bool _ALG_allocMemory(IALG_MemRec memTab[], Int n)
{
    Int i;

    for (i = 0; i < n; i++) {
	  memTab[i].base = NULL;
      allocateMemTabRequest( &memTab[i]);
      if (memTab[i].base == NULL) {
		_ALG_freeMemory( memTab, n );
		return (FALSE);
      }
    }
    return (TRUE);
}
Beispiel #5
0
/*
*  ======== ALG_delete ========
*/
Void ALG_delete(ALG_Handle alg)
{
	IALG_MemRec memTab[ JPEGDEC_MEM_NUMBER ];
	Int n;
	IALG_Fxns *fxns;

	if (alg != NULL && alg->fxns != NULL) {
		fxns = alg->fxns;
		n = fxns->algNumAlloc != NULL ? fxns->algNumAlloc() : IALG_DEFMEMRECS;
		memset( memTab, 0, JPEGDEC_MEM_NUMBER * sizeof( IALG_MemRec ) );
		memTab[0].base = alg;
		n = fxns->algFree(alg, memTab);
		_ALG_freeMemory(memTab, n);
	}
}
Beispiel #6
0
/*
 *  ======== ALG_delete ========
 */
Void ALG_delete(ALG_Handle alg)
{
    IALG_MemRec *memTab;
    Int n;
    IALG_Fxns *fxns;

    if (alg != NULL && alg->fxns != NULL) {
        fxns = alg->fxns;
        n = fxns->algNumAlloc != NULL ? fxns->algNumAlloc() : IALG_DEFMEMRECS;

        if ((memTab = (IALG_MemRec *)malloc(n * sizeof (IALG_MemRec)))) {
            memTab[0].base = alg;
            n = fxns->algFree(alg, memTab);
            _ALG_freeMemory(memTab, n);

            free(memTab);
        }
    }
}
/*
 *  ======== _ALG_allocMemory ========
 */
Bool _ALG1_allocMemory(IALG_MemRec memTab[], Int n)
{
    Int i;

    for (i = 0; i < n; i++) {

		memTab[i].base = (void *)CMEM_alloc( memTab[i].size, &memParams);

        if (memTab[i].base == NULL) {
            _ALG_freeMemory(memTab, i);
            return (FALSE);
        }
        /*------------------------------------------------------------------*/
		/* Recommended to work with out memset 0.                           */
		/*------------------------------------------------------------------*/
        //memset(memTab[i].base, 0, memTab[i].size);
    }

    return (TRUE);
}
Beispiel #8
0
/** 
********************************************************************************
*  @fn     _ALG_allocMemory(IALG_MemRec memTab[], Int n)
*
*  @brief  This function allocates the specified number of memory blocks with
*          alignment.
*
*  @param[in]  memTab   :  Array containing the base address
*
*  @param[in]  n        : Number of Memory instance to be freed
*          
*  @return    TRUE if allocated else FALSE
********************************************************************************
*/
Bool _ALG_allocMemory(IALG_MemRec memTab[], Int n)
{
  Int idx;
  
  for (idx = 0; idx < n; idx++) 
  {
    memTab[idx].base = (void *)myMemalign(memTab[idx].alignment, 
    memTab[idx].size);

    if (memTab[idx].base == NULL) 
    {
      _ALG_freeMemory(memTab, idx);
      return (FALSE);
    }
    else
    {
      /* Nothing to execute*/
    }
    
  }

  return (TRUE);
}
/*
 *  ======== _ALG_allocMemory ========
 */
Bool _ALG1_allocMemory(IALG_MemRec memTab[], Int n)
{
    Int i;
    
    for (i = 0; i < n; i++) {
#ifdef ON_LINUX
		printf("\n memTab[%d].size = %d", i, memTab[i].size);
        memTab[i].base = (void *)CMEM_alloc( memTab[i].size, &memParams);
#else
        memTab[i].base = (void *)myMemalign(memTab[i].alignment, memTab[i].size);
#endif
        if (memTab[i].base == NULL) {
            _ALG_freeMemory(memTab, i);
            return (FALSE);
        }
        /*------------------------------------------------------------------*/
		/* Recommended to work with out memset 0.                           */
		/*------------------------------------------------------------------*/
        //memset(memTab[i].base, 0, memTab[i].size);
    }

    return (TRUE);
}