Tool/software: Linux
Hi. I'm using Vision SDK 3.4 to develop 3ch 1080p vip capture -> panorama algorithm.
To make panorama image to fit 1080 width, I resized each channel to 640x360.
So, 1920x360 size Y-LUT and 1920x180 size CbCr-LUT is used to make panorama image.
I used VXlib function , VXLIB_remapBilinear_bc_i8u_i32f_o8u.
According to VXLib Test Report, remap function takes 7.5*(dst width * dst height) + 139 cycles.
In my case, remap function should take about 13ms.
But, actually it takes over 40ms.
LUT is allocated as belows
pPanoramaObj->remapBuf = Utils_memAlloc(
UTILS_HEAPID_DDR_CACHED_SR,
( 1920*360*8*2 ),
MY_FRAME_ALIGN /* 32u*/
);
and below is the part of remap.
VXLIB_bufParams2D_t src_addr;
VXLIB_bufParams2D_t dst_addr;
VXLIB_bufParams2D_t remap_addr;
VXLIB_STATUS vx_status;
src_addr.dim_x = 1920;
src_addr.dim_y = 360;
src_addr.stride_y = 1920;
src_addr.data_type = VXLIB_UINT8;
dst_addr.dim_x = 1920;
dst_addr.dim_y = 360;
dst_addr.stride_y = 1920;
dst_addr.data_type = VXLIB_UINT8;
remap_addr.dim_x = 1920*2;
remap_addr.dim_y = 360;
remap_addr.stride_y = 1920*8;
remap_addr.data_type = VXLIB_FLOAT32;
vx_status = VXLIB_remapBilinear_bc_i8u_i32f_o8u(
(UInt8*)((UInt32)pMosaicFrameBuffer->bufAddr[0] + 1920*360),
&src_addr,
(UInt8*)((UInt32)pOutFrameBuffer->bufAddr[0] + 1920*360),
&dst_addr,
(VXLIB_F32*)((UInt8*)pPanoramaObj->remapBuf),
&remap_addr,
0
);
if(vx_status!=VXLIB_SUCCESS)
Vps_printf("remapY result:%d\n", vx_status);
remap function itself works well, and image is normal.
What should I do for better performance?
Thanks in advance.