Exemple #1
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);
}
Exemple #2
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);
}