www.pudn.com > SobelEdge_all_2.rar > fvid.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. 
 *   
 */ 
/* "@(#) DDK 1.11.00.00 11-04-03 (ddk-b13)" */ 
/* 
 *  
 *  ======== fvid.h ======== 
 */ 
 
 
#ifndef FVID_ 
#define FVID_ 
 
#include  
#include  
 
 
#ifdef __cplusplus 
extern "C" { 
#endif 
 
 
/* 
 *  -------- command codes for IOM_Packet -------- 
 */ 
 
#define FVID_BASE       IOM_USER 
 
#define FVID_ALLOC      (FVID_BASE + 0) 
#define FVID_FREE       (FVID_BASE + 1) 
#define FVID_EXCHANGE   (FVID_BASE + 2) 
 
typedef GIO_Handle FVID_Handle; 
/* defination of interlaced frame */ 
typedef struct FVID_IFrame{ 
    Char* y1; 
    Char* cb1; 
    Char* cr1; 
    Char* y2; 
    Char* cb2; 
    Char* cr2; 
}FVID_IFrame; 
 
/* progressive frame */ 
typedef struct FVID_PFrame { 
    Char* y; 
    Char* cb; 
    Char* cr; 
} FVID_PFrame;  
 
/* Raw frame. Could be RGB, monochrome  or any type of data*/ 
/* interleaved Y/C frame etc. */ 
typedef struct FVID_RawIFrame{ 
    Char* buf1;     
    Char* buf2;     
} FVID_RawIFrame;  
 
typedef struct FVID_RawPFrame{ 
    Char* buf;     
} FVID_RawPFrame;  
 
/* FVID frame buffer descriptor */ 
typedef struct FVID_Frame { 
    QUE_Elem        queElement; /* for queuing */ 
    union { 
        FVID_IFrame     iFrm;     /* y/c frame buffer         */ 
        FVID_PFrame     pFrm;     /* y/c frame buffer         */ 
        FVID_RawIFrame  riFrm;    /* raw frame buffer         */ 
        FVID_RawPFrame  rpFrm;    /* raw frame buffer         */ 
    } frame;     
} FVID_Frame; 
 
/* 
 *  ======== FVID_alloc ======== 
 *  FVID_alloc() is used for device drivers that manage their own buffers. 
 *  FVID_alloc() returns a pointer to a device driver allocated buffer and 
 *  also sets the size. 
 */ 
#define FVID_alloc(gioChan, bufp) \ 
        GIO_submit(gioChan, FVID_ALLOC, bufp, NULL, NULL) 
 
 
/* 
 *  ======== FVID_control ======== 
 *  This is a direct call down into the mini driver. 
 */ 
#define FVID_control(gioChan, cmd, args) \ 
        GIO_control(gioChan, cmd, args) 
 
 
/* 
 *  ======== FVID_create ======== 
 *  FVID_create() allocates and initializes an GIO_Obj structure. FVID_create() 
 *  returns a non-NULL GIO_Handle object on success and NULL for failure. 
 *  The 'name' parameter is used to find a matching name in the device 
 *  table.  Associated IOM_Fxns table and params structure are then used 
 *  to create a channel for that device.   The 'attrs->nPackets' parameter 
 *  specifies the number of asynchronous I/O calls that can be outstanding. 
 *  The status field is the address where a device status is returned, ignored 
 *  if status is specified as NULL. 
 */ 
#define  FVID_create(name, mode, status, optArgs, attrs) \ 
        GIO_create(name, mode, status, optArgs, attrs) 
 
 
/* 
 *  ======== FVID_delete ======== 
 *  FVID_delete() frees up channel resources. 
 */ 
#define FVID_delete(giochan) \ 
        GIO_delete(gioChan) 
 
 
/* 
 *  ======== FVID_exchange ======== 
 *  Exchange one driver-managed buffer for another driver-managed buffer. 
 *  This operation is similar to an FVID_free()/alloc() pair but has less 
 *  overhead since it involves only one call into the driver. 
 */ 
#define FVID_exchange(gioChan, bufp) \ 
        GIO_submit(gioChan, FVID_EXCHANGE, bufp, NULL, NULL) 
 
 
 
/* 
 *  ======== FVID_free ======== 
 *  FVID_free() returns a device-driver allocated buffer back to the driver. 
 */ 
#define FVID_free(gioChan, bufp) \ 
        GIO_submit(gioChan, FVID_FREE, bufp, NULL, NULL) 
 
 
#ifdef __cplusplus 
} 
#endif /* extern "C" */ 
 
#endif /* FVID_ */