link之间帧交换的帧结构

2015年1月6日 由 Creater 留言 »
/**
 *  \brief FVID2 frame buffer structure.
 *
 *  Unless specified otherwise, all fields in this structure are
 *
 *  [IN]  for FVID2_queue(), FVID2_processFrames() operation.
 *  [OUT] for FVID2_dequeue(), FVID2_getProcessedFrames() operation.
 *
 */
typedef struct
{
    Ptr                 addr[FVID2_MAX_FIELDS][FVID2_MAX_PLANES];
    /**<
         FVID2 buffer pointers for supporting multiple addresses like
         Y, U, V etc for a given frame. The interpretation of these pointers
         depend on the format configured for the driver.
         The first dimension represents the field and the second dimension
         represents the color plane.
         Not all pointers are valid for a given format.

         Representation of YUV422 Planar Buffer:
         Field 0 Y -> addr[0][0], Field 1 Y -> addr[1][0]
         Field 0 U -> addr[0][1], Field 1 U -> addr[1][1]
         Field 0 V -> addr[0][2], Field 1 V -> addr[1][2]
         Other pointers are not valid.

         Representation of YUV422 Interleaved Buffer:
         Field 0 YUV -> addr[0][0], Field 1 YUV -> addr[1][0]
         Other pointers are not valid.

         Representation of YUV420SP or YUV422SP Buffer:
         Field 0 Y  -> addr[0][0], Field 1 Y  -> addr[1][0]
         Field 0 UV -> addr[0][1], Field 1 UV -> addr[1][1]
         Other pointers are not valid.

         Representation of RGB888 Buffer
         Field 0 RGB -> addr[0][0], Field 1 RGB -> addr[1][0],
         Other pointers are not valid.

         For progressive mode data formats
         or when fields are processed by driver in frame mode.
         addr[1][x] is not used.

         Instead of using numerical for accessing the buffers, the application
         can use the macros defined for each buffer formats like
         FVID2_YUV_INT_ADDR_IDX, FVID2_RGB_ADDR_IDX, FVID2_FID_TOP etc. */

    UInt32              fid;
    /**< Indicates whether this frame belong to top or bottom field.
         For valid values see #FVID2_Fid. */
    UInt32              channelNum;
    /**< Channel number to which this FVID2 frame belongs to. */

    UInt32              timeStamp;
    /**< Time stamp returned by the driver, in units of msecs.
         Only valid for frames received using FVID2_dequeue(). */
    Ptr                 appData;
    /**< Additional application parameter per frame. This is not modified by
         driver. */

    Ptr                 perFrameCfg;
    /**< Per frame configuration parameters like scaling ratio, positioning,
         cropping etc...
         This should be set to NULL if not used.

         This can be used by application to control driver behaviour on a per
         frame basis, example changing scaling ratio for scalar driver.

         This can be used by application to get per frame status, example
         detected frame width, height from capture driver.

         This could be set to NULL if not used. In this case, the driver will
         use the last supplied configuration.

         The exact structure type that is passed is driver specific. */

    Ptr                 blankData;
    /**< Blanking data associated with this video frame.
         This could be set to NULL if not used. */

    Ptr                 drvData;
    /**< Used by driver. Application should not modify this. */

    FVID2_SubFrameInfo    *subFrameInfo;
    /**< Used for SubFrame level processing information exchange between
         application and driver.
         This could be set to NULL if sub-frame level processing  is not used. */

    Ptr                 reserved;
    /**< For future use. Not used currently. Set this to NULL. */

} FVID2_Frame;
广告位

发表评论

你必须 登陆 方可发表评论.