fvid.h
上传用户:dahaojd
上传日期:2008-01-29
资源大小:14357k
文件大小:4k
源码类别:

DSP编程

开发平台:

C/C++

  1. /*
  2.  *  Copyright 2003 by Texas Instruments Incorporated.
  3.  *  All rights reserved. Property of Texas Instruments Incorporated.
  4.  *  Restricted rights to use, duplicate or disclose this code are
  5.  *  granted through contract.
  6.  *  
  7.  */
  8. /* "@(#) DDK 1.10.00.23 07-02-03 (ddk-b12)" */
  9. /*
  10.  * 
  11.  *  ======== fvid.h ========
  12.  */
  13. #ifndef FVID_
  14. #define FVID_
  15. #include <gio.h>
  16. #include <iom.h>
  17. #ifdef __cplusplus
  18. extern "C" {
  19. #endif
  20. /*
  21.  *  -------- command codes for IOM_Packet --------
  22.  */
  23. #define FVID_BASE       IOM_USER
  24. #define FVID_ALLOC      (FVID_BASE + 0)
  25. #define FVID_FREE       (FVID_BASE + 1)
  26. #define FVID_EXCHANGE   (FVID_BASE + 2)
  27. typedef GIO_Handle FVID_Handle;
  28. /* defination of interlaced frame */
  29. typedef struct FVID_IFrame{
  30.     Char* y1;
  31.     Char* cb1;
  32.     Char* cr1;
  33.     Char* y2;
  34.     Char* cb2;
  35.     Char* cr2;
  36. }FVID_IFrame;
  37. /* progressive frame */
  38. typedef struct FVID_PFrame {
  39.     Char* y;
  40.     Char* cb;
  41.     Char* cr;
  42. } FVID_PFrame; 
  43. /* Raw frame. Could be RGB, monochrome  or any type of data*/
  44. /* interleaved Y/C frame etc. */
  45. typedef struct FVID_RawIFrame{
  46.     Char* buf1;    
  47.     Char* buf2;    
  48. } FVID_RawIFrame; 
  49. typedef struct FVID_RawPFrame{
  50.     Char* buf;    
  51. } FVID_RawPFrame; 
  52. /* FVID frame buffer descriptor */
  53. typedef struct FVID_Frame {
  54.     QUE_Elem        queElement; /* for queuing */
  55.     union {
  56.         FVID_IFrame     iFrm;     /* y/c frame buffer         */
  57.         FVID_PFrame     pFrm;     /* y/c frame buffer         */
  58.         FVID_RawIFrame  riFrm;    /* raw frame buffer         */
  59.         FVID_RawPFrame  rpFrm;    /* raw frame buffer         */
  60.     } frame;    
  61. } FVID_Frame;
  62. /*
  63.  *  ======== FVID_alloc ========
  64.  *  FVID_alloc() is used for device drivers that manage their own buffers.
  65.  *  FVID_alloc() returns a pointer to a device driver allocated buffer and
  66.  *  also sets the size.
  67.  */
  68. #define FVID_alloc(gioChan, bufp) 
  69.         GIO_submit(gioChan, FVID_ALLOC, bufp, NULL, NULL)
  70. /*
  71.  *  ======== FVID_control ========
  72.  *  This is a direct call down into the mini driver.
  73.  */
  74. #define FVID_control(gioChan, cmd, args) 
  75.         GIO_control(gioChan, cmd, args)
  76. /*
  77.  *  ======== FVID_create ========
  78.  *  FVID_create() allocates and initializes an GIO_Obj structure. FVID_create()
  79.  *  returns a non-NULL GIO_Handle object on success and NULL for failure.
  80.  *  The 'name' parameter is used to find a matching name in the device
  81.  *  table.  Associated IOM_Fxns table and params structure are then used
  82.  *  to create a channel for that device.   The 'attrs->nPackets' parameter
  83.  *  specifies the number of asynchronous I/O calls that can be outstanding.
  84.  *  The status field is the address where a device status is returned, ignored
  85.  *  if status is specified as NULL.
  86.  */
  87. #define  FVID_create(name, mode, status, optArgs, attrs) 
  88.         GIO_create(name, mode, status, optArgs, attrs)
  89. /*
  90.  *  ======== FVID_delete ========
  91.  *  FVID_delete() frees up channel resources.
  92.  */
  93. #define FVID_delete(giochan) 
  94.         GIO_delete(gioChan)
  95. /*
  96.  *  ======== FVID_exchange ========
  97.  *  Exchange one driver-managed buffer for another driver-managed buffer.
  98.  *  This operation is similar to an FVID_free()/alloc() pair but has less
  99.  *  overhead since it involves only one call into the driver.
  100.  */
  101. #define FVID_exchange(gioChan, bufp) 
  102.         GIO_submit(gioChan, FVID_EXCHANGE, bufp, NULL, NULL)
  103. /*
  104.  *  ======== FVID_free ========
  105.  *  FVID_free() returns a device-driver allocated buffer back to the driver.
  106.  */
  107. #define FVID_free(gioChan, bufp) 
  108.         GIO_submit(gioChan, FVID_FREE, bufp, NULL, NULL)
  109. #ifdef __cplusplus
  110. }
  111. #endif /* extern "C" */
  112. #endif /* FVID_ */