FVID2 frame buffer structure.
Represents the attribute of one buffer in frame. Attributes like address of each planes and each fields. YUV420 semi-planar buffer with interlaced scan format will have two planes one each for Y data and UV data and odd and even fields.
Data Fields | |
uint64_t | addr [FVID2_MAX_PLANES] |
uint32_t | fid |
uint32_t | chNum |
uint64_t | timeStamp64 |
void * | appData |
void * | perFrameCfg |
void * | drvData |
Fvid2_SubFrameInfo * | subFrameInfo |
uint32_t | status |
uint64_t Fvid2_Frame::addr[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. Not all pointers are valid for a given format.
Representation of YUV422 Interlaced Planar Buffer: Field 0 Y -> addr[0], Field 1 Y -> addr[3] Field 0 U -> addr[1], Field 1 U -> addr[4] Field 0 V -> addr[2], Field 1 V -> addr[5] Representation of YUV422 Progressive Planar Buffer: Y -> addr[0] U -> addr[1] V -> addr[2] Other pointers are not valid.
Representation of Interlaced YUV422 Interleaved Buffer: Field 0 YUV -> addr[0], Field 1 YUV -> addr[3] Representation of Progressive YUV422 Interleaved Buffer: YUV -> addr[0] Other pointers are not valid.
Representation of Interlaced YUV420SP or YUV422SP Buffer: Field 0 Y -> addr[0], Field 1 Y -> addr[3] Field 0 UV -> addr[1], Field 1 UV -> addr[4] Representation of Progressive YUV420SP or YUV422SP Buffer: Y -> addr[0] UV -> addr[1] Other pointers are not valid.
Representation of Interlaced RGB888 Buffer Field 0 RGB -> addr[0], Field 1 RGB -> addr[3], Representation of Progressive RGB888 Buffer RGB -> addr[0] Other pointers are not valid.
uint32_t Fvid2_Frame::fid |
Indicates whether this frame belong to top or bottom field. For valid values see Fvid2_Fid.
uint32_t Fvid2_Frame::chNum |
Channel number to which this FVID2 frame belongs to.
uint64_t Fvid2_Frame::timeStamp64 |
64-bit Time stamp returned by the driver. The value and the unit is driver implementation dependent. But in general the time stamp stored is in micro-seconds. Refer to each driver implementation for the meaning and unit of the time stamp value. Only valid for frames received using Fvid2_dequeue().
void* Fvid2_Frame::appData |
Additional application parameter per frame. This is not modified by driver.
void* Fvid2_Frame::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 scaler 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.
void* Fvid2_Frame::drvData |
Used by driver. Application should not modify this.
Fvid2_SubFrameInfo* Fvid2_Frame::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.
uint32_t Fvid2_Frame::status |
Status of the Frame, see Fvid2_FrameStatus for the valid values Updated by the driver