www.pudn.com > SobelEdge_all_2.rar > chan.h
/* * Copyright 2003 by Texas Instruments Incorporated. * All rights reserved. Property of Texas Instruments Incorporated. * Restricted rights to use, duplicate or disclose this code are * granted through contract. * */ /* "@(#) ReferenceFrameworks 2.20.00.08 07-18-03 (swat-f02)" */ /* * ======== chan.h ======== * This file is the main include file for the CHAN module. * * The following is the calling sequence of the CHAN APIs: * * ----------- * | | * v | * -------------- -------------- ---------------- | * | CHAN_init | --> | CHAN_setup | --> | CHAN_regCell |--- * -------------- -------------- ---------------- * | * | ---------- * | | | * v v | * ----------------- | * | CHAN_create@ |---- * | CHAN_open# | * | CHAN_getAttrs | * | CHAN_setAttrs | * | CHAN_execute | * | CHAN_close# | * | CHAN_delete@ | * ----------------- * | * | -------- * | | | * v v | * -------------- ---------------- | * | CHAN_exit | <-- |CHAN_unregCell|---- * -------------- ---------------- * Additional notes * # = must have opened a channel before you can close it. * @ = must have created a channel before you can delete it. Create/delete * are not required if channel statically defined. * */ #ifndef CHAN_ #define CHAN_ #include#include #include #ifdef __cplusplus extern "C" { #endif /* States for a channel */ typedef enum CHAN_State { CHAN_ACTIVE, CHAN_INACTIVE } CHAN_State; typedef struct CHAN_Obj *CHAN_Handle; /* * CHAN_Obj * -------- * cellSet: Set of cells in the channel. * cellCnt: number of cells in the cellSet. Must be at least 1. * state: state of the channel. * chanControlCB: Callback called within CHAN_execute. Can be NULL. */ typedef struct CHAN_Obj { ICELL_Obj *cellSet; Uns cellCnt; CHAN_State state; Bool (*chanControlCB)(CHAN_Handle chanHandle); } CHAN_Obj; /* * CHAN_Attrs * ---------- * state: state of the channel. * chanControlCB: Callback called within CHAN_execute. Can be NULL. */ typedef struct CHAN_Attrs { CHAN_State state; Bool (*chanControlCB)(CHAN_Handle chanHandle); } CHAN_Attrs; extern CHAN_Attrs CHAN_ATTRS; /* default attributes, defined in chan.c */ /* Release the resources owned by the channel. Does not free the channel. */ extern Bool CHAN_close(CHAN_Handle chanHandle); /* Create the channel */ extern CHAN_Handle CHAN_create(Void); /* Delete the channel */ extern Bool CHAN_delete(CHAN_Handle chanHandle); /* The function that actually executes all the algorithms. */ extern Bool CHAN_execute(CHAN_Handle chanHandle, Arg arg); /* Exit the CHAN module. */ extern Void CHAN_exit(Void); /* Get the state of a channel */ extern Void CHAN_getAttrs(CHAN_Handle chanHandle, CHAN_Attrs *attrs); /* Init the CHAN module. */ extern Void CHAN_init(Void); /* Create the algorithms */ extern Bool CHAN_open(CHAN_Handle chanHandle, ICELL_Obj cellSet[], Uns cellCnt, CHAN_Attrs *chanAttrs); /* Determine worst-case scratch requirements and assign ICCs */ extern Bool CHAN_regCell(ICELL_Handle cellHandle, ICC_Handle iccIn[], Uns iccInCnt, ICC_Handle iccOut[], Uns iccOutCnt); /* Set the state of a channel */ extern Void CHAN_setAttrs(CHAN_Handle chanHandle, CHAN_Attrs *attrs); /* * Set-up the CHAN module. * algrfInternalHeap - heap from which algrf allocates internal non-scratch * memory requested by XDAIS algorithms. * algrfExternalHeap - heap from which algrf allocates external memory * requested by XDAIS algorithms. * sscrInternalHeap - heap from which sscr allocates internal scratch * memory requested by XDAIS algorithms. */ extern Bool CHAN_setup(Int algrfInternalHeap, Int algrfExternalHeap, Int sscrInternalHeap, Uns bucketCnt, Ptr bucketBuf[], Uns bucketSize[]); /* release memory allocated for ICC arrays */ extern Void CHAN_unregCell(ICELL_Handle cellHandle); #ifdef __cplusplus } #endif // extern "C" #endif // CHAN_