The Warp Filter descriptor should be placed in DDR memory in the following format. The address of this descriptor is provided to the IP through the Descriptor Address register and the IP reads the descriptor from this address.
typedef struct {
u32 height;
u32 width;
u32 stride;
u32 format;
u32 valid_seg;
u32 lblock_count;
u32 line_num;
u32 reserved;
u64 src_buf_addr;
#if ((MAX_NR_PLANES == 2) || (MAX_NR_PLANES == 3) )
u64 src_buf_addr1;
#endif
#if (MAX_NR_PLANES == 3)
u64 src_buf_addr2;
#endif
u64 seg_table_addr;
u64 dest_buf_addr;
#if ((MAX_NR_PLANES == 2) || (MAX_NR_PLANES == 3) )
u64 dest_buf_addr1;
#endif
#if (MAX_NR_PLANES == 3)
u64 dest_buf_addr2;
#endif
#if (WRITE_INVALID == 1)
AXIMM_WRITE dest_buf_addr_i;
AXIMM_READ seg_table_addr_i;
#endif
u64 Warp_NextDescAddr;
} XVWarpFilter_Desc;
The fields in the above descriptor are explained as below:
Descriptor Field | Explanation |
---|---|
height | Height of the input source image. Supported values are between 240 and the value provided in the Maximum Number of Rows field in the Vivado IDE. |
width | Width of the input source image. Supported values are between 320 and the value provided in the Maximum Number of Columns field in the Vivado IDE. |
stride | Stride in bytes of the source image. |
format | Pixel format of the source image. |
valid_seg | Number of valid blocks that the Warp Filter needs to reconstruct. This value must be read from the valid_segs register of the Warp Initializer. |
lblock_count | For faster processing, the Warp Filter runs two cores in parallel. The total number of valid blocks are divided between the two cores. The number of blocks that need to be processed by the first core comes from lblock_count. This value must be read from the lblock_count register of the Warp Initializer IP. |
line_num | The line number from which the 2nd core in the Warp Filter starts reading the source image. This value must be read from the line_num register of the Warp Initializer. |
src_buf_addr | The 64-bit address from which the source image must be read. |
src_buf_addr1 | The 64-bit address from which the source image must be read. |
src_buf_addr2 | The 64-bit address from which the source image must be read. |
seg_table_addr | The 64-bit address from which the Warp Filter parameters must be read. |
dest_buf_addr | The 64-bit address to which the corrected image must be written. |
dest_buf_addr1 | The 64-bit address to which the corrected image must be written. |
dest_buf_addr2 | The 64-bit address to which the corrected image must be written. |