INT32 PipView_OnDraw_3sensor(APPDISP_VIEW_DRAW *pDraw) //PIP = Picture In Picture
{
IRECT dst_region;
UINT32 uiMovieSize;
#if (DUALCAM_PIP_BEHIND_FLIP)
IPOINT dstLocation;
#endif
uiMovieSize = SysGetFlag(FL_MOVIE_SIZE);
//DBG_ERR("UI_GetData(FL_DUAL_CAM) = %d\r\n",UI_GetData(FL_DUAL_CAM));
if (pDraw->viewcnt == 3){
if(UI_GetData(FL_DUAL_CAM) == DUALCAM_BOTH){
if(pDraw->p_dst_img->Width && pDraw->p_dst_img->Height){
GxImg_FillData(pDraw->p_dst_img, NULL, COLOR_YUV_BLACK) ;
}
// img1 - big
dst_region.x = 0;
dst_region.y = 0;
dst_region.w = pDraw->p_dst_img->Width;
dst_region.h = pDraw->p_dst_img->Height;
if(pDraw->p_src_img[0] && pDraw->p_dst_img->Width && pDraw->p_dst_img->Height){
GxImg_ScaleData(pDraw->p_src_img[0], REGION_MATCH_IMG, pDraw->p_dst_img, &dst_region);
}
// img2 - small
if (GetMovieRecType_2p(uiMovieSize) == MOVIE_REC_TYPE_DUAL)
{
dst_region.x = 0;
dst_region.y = 40;
dst_region.w = pDraw->p_dst_img->Width/3;
dst_region.h = pDraw->p_dst_img->Height/3;
//CHKPNT;
if(pDraw->p_src_img[1] && pDraw->p_dst_img->Width && pDraw->p_dst_img->Height){
GxImg_ScaleData(pDraw->p_src_img[1], REGION_MATCH_IMG, pDraw->p_dst_img, &dst_region);
}
}
// img3 - small
dst_region.x = pDraw->p_dst_img->Width - pDraw->p_dst_img->Width/3;
dst_region.y = 40;
dst_region.w = pDraw->p_dst_img->Width/3;
dst_region.h = pDraw->p_dst_img->Height/3;
if(pDraw->p_src_img[2] && pDraw->p_dst_img->Width && pDraw->p_dst_img->Height){
GxImg_ScaleData(pDraw->p_src_img[2], REGION_MATCH_IMG, pDraw->p_dst_img, &dst_region);
}
}else if(UI_GetData(FL_DUAL_CAM) == DUALCAM_FRONT){//Tx1
if(pDraw->p_src_img[0] && pDraw->p_dst_img != pDraw->p_src_img[0])
GxImg_FillData(pDraw->p_dst_img, NULL, COLOR_YUV_BLACK) ;
// img0 - big
dst_region.x = 0;
dst_region.y = 0;
dst_region.w = pDraw->p_dst_img->Width;
dst_region.h = pDraw->p_dst_img->Height;
if(pDraw->p_src_img[0] && pDraw->p_dst_img != pDraw->p_src_img[0]){
GxImg_ScaleData(pDraw->p_src_img[0], REGION_MATCH_IMG, pDraw->p_dst_img, &dst_region);
}
}else if(UI_GetData(FL_DUAL_CAM) == DUALCAM_BEHIND){//Tx2
if(pDraw->p_src_img[1] && pDraw->p_dst_img != pDraw->p_src_img[1])
GxImg_FillData(pDraw->p_dst_img, NULL, COLOR_YUV_BLACK) ;
// img1 - big
dst_region.x = 0;
dst_region.y = 0;
dst_region.w = pDraw->p_dst_img->Width;
dst_region.h = pDraw->p_dst_img->Height;
if(pDraw->p_src_img[1] && pDraw->p_dst_img != pDraw->p_src_img[1]){
GxImg_ScaleData(pDraw->p_src_img[1], REGION_MATCH_IMG, pDraw->p_dst_img, &dst_region);
}
}else if(UI_GetData(FL_DUAL_CAM) == DUALCAM_BOTH2){//Rx Sensor
if(pDraw->p_src_img[2] && pDraw->p_dst_img != pDraw->p_src_img[2])
GxImg_FillData(pDraw->p_dst_img, NULL, COLOR_YUV_BLACK) ;
// img2 - big
dst_region.x = 0;
dst_region.y = 0;
dst_region.w = pDraw->p_dst_img->Width;
dst_region.h = pDraw->p_dst_img->Height;
if(pDraw->p_src_img[2] && pDraw->p_dst_img != pDraw->p_src_img[2]){
GxImg_ScaleData(pDraw->p_src_img[2], REGION_MATCH_IMG, pDraw->p_dst_img, &dst_region);
}
}else if(UI_GetData(FL_DUAL_CAM) == DUALCAM_CUSTOM_1){ //Tx1, Tx2
if(pDraw->p_dst_img->Width && pDraw->p_dst_img->Height){
GxImg_FillData(pDraw->p_dst_img, NULL, COLOR_YUV_BLACK) ;
}
//DBG_DUMP("src[1] w=%d, %d, src[2] w=%d, %d, dst_img=%d, %d\r\n",pDraw->p_src_img[1]->Width,pDraw->p_src_img[1]->Height,pDraw->p_src_img[2]->Width,pDraw->p_src_img[2]->Height,pDraw->p_dst_img->Width,pDraw->p_dst_img->Height);
// img1
dst_region.x = 0;
dst_region.y = 0;
dst_region.w = pDraw->p_dst_img->Width / 2;
dst_region.h = pDraw->p_dst_img->Height;
if(pDraw->p_src_img[1] && pDraw->p_dst_img->Width && pDraw->p_dst_img->Height){
GxImg_ScaleData(pDraw->p_src_img[1], REGION_MATCH_IMG, pDraw->p_dst_img, &dst_region);
}
// img2
dst_region.x = pDraw->p_dst_img->Width / 2;
dst_region.y = 0;
if(pDraw->p_src_img[2] && pDraw->p_dst_img->Width && pDraw->p_dst_img->Height){
GxImg_ScaleData(pDraw->p_src_img[2], REGION_MATCH_IMG, pDraw->p_dst_img, &dst_region);
}
}else if(UI_GetData(FL_DUAL_CAM) == DUALCAM_CUSTOM_2){ //Tx1, Rx, Tx2, 1:2:1
if(pDraw->p_dst_img->Width && pDraw->p_dst_img->Height){
GxImg_FillData(pDraw->p_dst_img, NULL, COLOR_YUV_BLACK) ;
}
//DBG_DUMP("src[0] w=%d, %d, src[1] w=%d, %d, src[2] w=%d, %d, dst_img=%d, %d\r\n",pDraw->p_src_img[0]->Width,pDraw->p_src_img[0]->Height,pDraw->p_src_img[1]->Width,pDraw->p_src_img[1]->Height,pDraw->p_src_img[2]->Width,pDraw->p_src_img[2]->Height,pDraw->p_dst_img->Width,pDraw->p_dst_img->Height);
// img1
UINT32 WidthUnit=ALIGN_CEIL_4(pDraw->p_dst_img->Width / 4);
dst_region.x = WidthUnit;
dst_region.y = 0;
dst_region.w = 2*WidthUnit;
dst_region.h = pDraw->p_dst_img->Height;
if(pDraw->p_src_img[0] && pDraw->p_dst_img->Width && pDraw->p_dst_img->Height){
GxImg_ScaleData(pDraw->p_src_img[0], REGION_MATCH_IMG, pDraw->p_dst_img, &dst_region);
}
// img2
dst_region.x = 0;
dst_region.y = 0;
dst_region.w = WidthUnit;
if(pDraw->p_src_img[1] && pDraw->p_dst_img->Width && pDraw->p_dst_img->Height){
GxImg_ScaleData(pDraw->p_src_img[1], REGION_MATCH_IMG, pDraw->p_dst_img, &dst_region);
}
// img3
dst_region.x = 3*WidthUnit;
dst_region.y = 0;
dst_region.w = WidthUnit;
if(pDraw->p_src_img[2] && pDraw->p_dst_img->Width && pDraw->p_dst_img->Height){
GxImg_ScaleData(pDraw->p_src_img[2], REGION_MATCH_IMG, pDraw->p_dst_img, &dst_region);
}
}else if(UI_GetData(FL_DUAL_CAM) == DUALCAM_CUSTOM_3){ //Tx1, Rx, Tx2, 1:1:1
if(pDraw->p_dst_img->Width && pDraw->p_dst_img->Height){
GxImg_FillData(pDraw->p_dst_img, NULL, COLOR_YUV_BLACK) ;
}
//DBG_DUMP("src[0] w=%d, %d, src[1] w=%d, %d, src[2] w=%d, %d, dst_img=%d, %d\r\n",pDraw->p_src_img[0]->Width,pDraw->p_src_img[0]->Height,pDraw->p_src_img[1]->Width,pDraw->p_src_img[1]->Height,pDraw->p_src_img[2]->Width,pDraw->p_src_img[2]->Height,pDraw->p_dst_img->Width,pDraw->p_dst_img->Height);
// img1
UINT32 WidthUnit=ALIGN_CEIL_4(pDraw->p_dst_img->Width / 3);
dst_region.x = WidthUnit;
dst_region.y = 0;
dst_region.w = WidthUnit;
dst_region.h = pDraw->p_dst_img->Height;
if(pDraw->p_src_img[0] && pDraw->p_dst_img->Width && pDraw->p_dst_img->Height){
GxImg_ScaleData(pDraw->p_src_img[0], REGION_MATCH_IMG, pDraw->p_dst_img, &dst_region);
}
// img2
dst_region.x = 0;
dst_region.y = 0;
dst_region.w = WidthUnit;
if(pDraw->p_src_img[1] && pDraw->p_dst_img->Width && pDraw->p_dst_img->Height){
GxImg_ScaleData(pDraw->p_src_img[1], REGION_MATCH_IMG, pDraw->p_dst_img, &dst_region);
}
// img3
dst_region.x = 2*WidthUnit;
dst_region.y = 0;
dst_region.w = WidthUnit;
if(pDraw->p_src_img[2] && pDraw->p_dst_img->Width && pDraw->p_dst_img->Height){
GxImg_ScaleData(pDraw->p_src_img[2], REGION_MATCH_IMG, pDraw->p_dst_img, &dst_region);
}
}
/*MULTCAM_FRONT_CABIN_REAR_BIG_FRONT*/
else if(UI_GetData(FL_DUAL_CAM) == DUALCAM_CUSTOM_6)
{
if(pDraw->p_dst_img->Width && pDraw->p_dst_img->Height){
GxImg_FillData(pDraw->p_dst_img, NULL, COLOR_YUV_BLACK) ;
}
// img1 -> Big
dst_region.x = 0;
dst_region.y = 0;
dst_region.w = pDraw->p_dst_img->Width;
dst_region.h = pDraw->p_dst_img->Height;
if(pDraw->p_src_img[0] && pDraw->p_dst_img->Width && pDraw->p_dst_img->Height){
GxImg_ScaleData(pDraw->p_src_img[0], REGION_MATCH_IMG, pDraw->p_dst_img, &dst_region);
}
// img2 -> left small
if (GetMovieRecType_2p(uiMovieSize) == MOVIE_REC_TYPE_DUAL)
{
#if (DUALCAM_PIP_BEHIND_FLIP == ENABLE)
if (pDraw->p_src_img[1])
{
// flip rear image to destination buffer
IRECT dstRegion;
// scale rear image to top-right corner of destination buffer (size 1/4)
dstRegion.x = 0;
dstRegion.y = pDraw->p_dst_img->Height/2;
dstRegion.w = ALIGN_CEIL_4(pDraw->p_dst_img->Width/3);
dstRegion.h = ALIGN_CEIL_4(pDraw->p_dst_img->Height/3);
GxImg_ScaleData(pDraw->p_src_img[1], REGION_MATCH_IMG, pDraw->p_dst_img, &dstRegion);
// flip and paste scaled image from top-right to top-left of destination buffer
dstLocation.x = 0;
dstLocation.y = 40;
GxImg_RotatePasteData(pDraw->p_dst_img, &dstRegion, pDraw->p_dst_img, &dstLocation, GX_IMAGE_ROTATE_HRZ, GX_IMAGE_ROTATE_ENG2);
// paste top-right of front image to destination buffer
if (pDraw->p_src_img[0]) {
GxImg_ScaleData(pDraw->p_src_img[0], &dstRegion, pDraw->p_dst_img, &dstRegion);
}
}
#else
dst_region.x = 0;
dst_region.y = 40;
dst_region.w = pDraw->p_dst_img->Width/3;
dst_region.h = pDraw->p_dst_img->Height/3;
if(pDraw->p_src_img[1] && pDraw->p_dst_img->Width && pDraw->p_dst_img->Height){
GxImg_ScaleData(pDraw->p_src_img[1], REGION_MATCH_IMG, pDraw->p_dst_img, &dst_region);
}
#endif
}
// img3-> right small
#if (DUALCAM_PIP_BEHIND_FLIP == ENABLE)
// rear image is smaller on the right
if (pDraw->p_src_img[2])
{
// flip rear image to destination buffer
IRECT dstRegion;
// scale rear image to top-right corner of destination buffer (size 1/4)
dstRegion.x = 0;
dstRegion.y = pDraw->p_dst_img->Height/2;
dstRegion.w = ALIGN_CEIL_4(pDraw->p_dst_img->Width / 3);
dstRegion.h = ALIGN_CEIL_4(pDraw->p_dst_img->Height / 3);
GxImg_ScaleData(pDraw->p_src_img[2], REGION_MATCH_IMG, pDraw->p_dst_img, &dstRegion);
// flip and paste scaled image from top-right to top-left of destination buffer
dstLocation.x = 320;
dstLocation.y = PIP_WND_HIGHT;//0;
GxImg_RotatePasteData(pDraw->p_dst_img, &dstRegion, pDraw->p_dst_img, &dstLocation, GX_IMAGE_ROTATE_HRZ, GX_IMAGE_ROTATE_ENG2);
// paste top-right of front image to destination buffer
if (pDraw->p_src_img[0]) {
GxImg_ScaleData(pDraw->p_src_img[0], &dstRegion, pDraw->p_dst_img, &dstRegion);
}
}
#else
dst_region.x = pDraw->p_dst_img->Width - pDraw->p_dst_img->Width/3;
dst_region.y = 40;
dst_region.w = pDraw->p_dst_img->Width/3;
dst_region.h = pDraw->p_dst_img->Height/3;
if(pDraw->p_src_img[2] && pDraw->p_dst_img->Width && pDraw->p_dst_img->Height){
GxImg_ScaleData(pDraw->p_src_img[2], REGION_MATCH_IMG, pDraw->p_dst_img, &dst_region);
}
#endif
}
/*MULTCAM_FRONT_CABIN_REAR_BIG_CABIN*/
else if(UI_GetData(FL_DUAL_CAM) == DUALCAM_CUSTOM_7)
{
if(pDraw->p_dst_img->Width && pDraw->p_dst_img->Height){
GxImg_FillData(pDraw->p_dst_img, NULL, COLOR_YUV_BLACK) ;
}
// img2 - big
if (GetMovieRecType_2p(uiMovieSize) == MOVIE_REC_TYPE_DUAL)
{
#if (DUALCAM_PIP_BEHIND_FLIP == ENABLE)
if(pDraw->p_src_img[1])
{
GxImg_FillData(pDraw->p_dst_img, NULL, COLOR_YUV_BLACK) ;
dst_region.x = 0;
dst_region.y = 0;
dst_region.w = pDraw->p_dst_img->Width;
dst_region.h = pDraw->p_dst_img->Height;
// flip rear image to destination buffer
dstLocation.x = 0;
dstLocation.y = 0;
if (pDraw->p_src_img[1]->Width != pDraw->p_dst_img->Width){
if(g_PipViewBflip_PoolAddr && g_PipViewBflip_PoolSize){
IMG_BUF scale_dst_img;
GxImg_InitBuf(&scale_dst_img, pDraw->p_dst_img->Width, pDraw->p_dst_img->Height, GX_IMAGE_PIXEL_FMT_YUV420, pDraw->p_dst_img->Width, g_PipViewBflip_PoolAddr, g_PipViewBflip_PoolSize);
GxImg_ScaleData(pDraw->p_src_img[1], REGION_MATCH_IMG, &scale_dst_img, &dst_region);
GxImg_RotatePasteData(&scale_dst_img, &dst_region, pDraw->p_dst_img, &dstLocation, GX_IMAGE_ROTATE_HRZ, GX_IMAGE_ROTATE_ENG2);
}
}
else
{
// flip rear image to destination buffer
GxImg_RotatePasteData(pDraw->p_src_img[1], &dst_region, pDraw->p_dst_img, &dstLocation, GX_IMAGE_ROTATE_HRZ, GX_IMAGE_ROTATE_ENG2);
}
// img3 - small on left
#if (DUALCAM_PIP_BEHIND_FLIP == ENABLE)
// rear image is smaller on the left
if (pDraw->p_src_img[2])
{
// flip rear image to destination buffer
IRECT dstRegion;
// scale rear image to top-right corner of destination buffer (size 1/4)
//dstRegion.x = 0;
//dstRegion.y = pDraw->p_dst_img->Height/2;
dstRegion.x = pDraw->p_dst_img->Width - pDraw->p_dst_img->Width/3;
dstRegion.y = 40;
dstRegion.w = ALIGN_CEIL_4(pDraw->p_dst_img->Width / 3);
dstRegion.h = ALIGN_CEIL_4(pDraw->p_dst_img->Height / 3);
GxImg_ScaleData(pDraw->p_src_img[2], REGION_MATCH_IMG, pDraw->p_dst_img, &dstRegion);
// flip and paste scaled image from top-right to top-left of destination buffer
dstLocation.x = 0;
dstLocation.y = PIP_WND_HIGHT;//0;
GxImg_RotatePasteData(pDraw->p_dst_img, &dstRegion, pDraw->p_dst_img, &dstLocation, GX_IMAGE_ROTATE_HRZ, GX_IMAGE_ROTATE_ENG2);
// paste top-right of front image to destination buffer
if (pDraw->p_src_img[0]) {
GxImg_ScaleData(pDraw->p_src_img[0], &dstRegion, pDraw->p_dst_img, &dstRegion);
}
}
#else
dst_region.x = 0;
dst_region.y = 40;
dst_region.w = pDraw->p_dst_img->Width/3;
dst_region.h = pDraw->p_dst_img->Height/3;
if(pDraw->p_src_img[2] && pDraw->p_dst_img->Width && pDraw->p_dst_img->Height){
GxImg_ScaleData(pDraw->p_src_img[2], REGION_MATCH_IMG, pDraw->p_dst_img, &dst_region);
}
#endif
// img1-small on the right
dst_region.x = pDraw->p_dst_img->Width - pDraw->p_dst_img->Width/3;
dst_region.y = 40;
dst_region.w = ALIGN_CEIL_4(pDraw->p_dst_img->Width/3);
dst_region.h = ALIGN_CEIL_4(pDraw->p_dst_img->Height/3);
if(pDraw->p_src_img[0] && pDraw->p_dst_img->Width && pDraw->p_dst_img->Height){
GxImg_ScaleData(pDraw->p_src_img[0], REGION_MATCH_IMG, pDraw->p_dst_img, &dst_region);
}
}
else
{
// img1 - big
dst_region.x = 0;
dst_region.y = 0;
dst_region.w = pDraw->p_dst_img->Width;
dst_region.h = pDraw->p_dst_img->Height;
if(pDraw->p_src_img[0] && pDraw->p_dst_img->Width && pDraw->p_dst_img->Height){
GxImg_ScaleData(pDraw->p_src_img[0], REGION_MATCH_IMG, pDraw->p_dst_img, &dst_region);
}
// img3 - small on left to right
#if (DUALCAM_PIP_BEHIND_FLIP == ENABLE)
// rear image is smaller on the right
if (pDraw->p_src_img[2])
{
// flip rear image to destination buffer
IRECT dstRegion;
// scale rear image to top-right corner of destination buffer (size 1/4)
dstRegion.x = 0;
dstRegion.y = pDraw->p_dst_img->Height/2;
dstRegion.w = ALIGN_CEIL_4(pDraw->p_dst_img->Width / 3);
dstRegion.h = ALIGN_CEIL_4(pDraw->p_dst_img->Height / 3);
GxImg_ScaleData(pDraw->p_src_img[2], REGION_MATCH_IMG, pDraw->p_dst_img, &dstRegion);
// flip and paste scaled image from top-right to top-left of destination buffer
dstLocation.x = 320;
dstLocation.y = PIP_WND_HIGHT;//0;
GxImg_RotatePasteData(pDraw->p_dst_img, &dstRegion, pDraw->p_dst_img, &dstLocation, GX_IMAGE_ROTATE_HRZ, GX_IMAGE_ROTATE_ENG2);
// paste top-right of front image to destination buffer
if (pDraw->p_src_img[0]) {
GxImg_ScaleData(pDraw->p_src_img[0], &dstRegion, pDraw->p_dst_img, &dstRegion);
}
}
#else
dst_region.x = 0;
dst_region.y = 40;
dst_region.w = pDraw->p_dst_img->Width/3;
dst_region.h = pDraw->p_dst_img->Height/3;
if(pDraw->p_src_img[2] && pDraw->p_dst_img->Width && pDraw->p_dst_img->Height){
GxImg_ScaleData(pDraw->p_src_img[2], REGION_MATCH_IMG, pDraw->p_dst_img, &dst_region);
}
#endif
}
#else
dst_region.x = 0;
dst_region.y = 0;
dst_region.w = pDraw->p_dst_img->Width;
dst_region.h = pDraw->p_dst_img->Height;
if(pDraw->p_src_img[1] && pDraw->p_dst_img->Width && pDraw->p_dst_img->Height){
GxImg_ScaleData(pDraw->p_src_img[1], REGION_MATCH_IMG, pDraw->p_dst_img, &dst_region);
}
#endif
}
}
/*MULTCAM_FRONT_CABIN_REAR_BIG_REAR*/
else if(UI_GetData(FL_DUAL_CAM) == DUALCAM_CUSTOM_8)
{
if(pDraw->p_dst_img->Width && pDraw->p_dst_img->Height){
GxImg_FillData(pDraw->p_dst_img, NULL, COLOR_YUV_BLACK) ;
}
// img3 - Big
#if (DUALCAM_PIP_BEHIND_FLIP == ENABLE)
if(pDraw->p_src_img[2])
{
GxImg_FillData(pDraw->p_dst_img, NULL, COLOR_YUV_BLACK) ;
dst_region.x = 0;
dst_region.y = 0;
dst_region.w = pDraw->p_dst_img->Width;
dst_region.h = pDraw->p_dst_img->Height;
// flip rear image to destination buffer
dstLocation.x = 0;
dstLocation.y = 0;
if (pDraw->p_src_img[2]->Width != pDraw->p_dst_img->Width){
//dst_region.x = pDraw->p_dst_img->Width;
if(g_PipViewBflip_PoolAddr && g_PipViewBflip_PoolSize){
IMG_BUF scale_dst_img;
GxImg_InitBuf(&scale_dst_img, pDraw->p_dst_img->Width, pDraw->p_dst_img->Height, GX_IMAGE_PIXEL_FMT_YUV420, pDraw->p_dst_img->Width, g_PipViewBflip_PoolAddr, g_PipViewBflip_PoolSize);
GxImg_ScaleData(pDraw->p_src_img[2], REGION_MATCH_IMG, &scale_dst_img, &dst_region);
GxImg_RotatePasteData(&scale_dst_img, &dst_region, pDraw->p_dst_img, &dstLocation, GX_IMAGE_ROTATE_HRZ, GX_IMAGE_ROTATE_ENG2);
}
}
else
{
// flip rear image to destination buffer
GxImg_RotatePasteData(pDraw->p_src_img[2], &dst_region, pDraw->p_dst_img, &dstLocation, GX_IMAGE_ROTATE_HRZ, GX_IMAGE_ROTATE_ENG2);
}
///
// img1 - small on the left
dst_region.x = 0;
dst_region.y = 40;
dst_region.w = pDraw->p_dst_img->Width/3;
dst_region.h = pDraw->p_dst_img->Height/3;
if(pDraw->p_src_img[0] && pDraw->p_dst_img->Width && pDraw->p_dst_img->Height){
GxImg_ScaleData(pDraw->p_src_img[0], REGION_MATCH_IMG, pDraw->p_dst_img, &dst_region);
}
// img2 - small on the right
if (GetMovieRecType_2p(uiMovieSize) == MOVIE_REC_TYPE_DUAL)
{
#if (DUALCAM_PIP_BEHIND_FLIP == ENABLE)
// rear image is smaller
if (pDraw->p_src_img[1])
{
// flip rear image to destination buffer
IRECT dstRegion;
// scale rear image to top-right corner of destination buffer (size 1/4)
dstRegion.x = 0;
dstRegion.y = pDraw->p_dst_img->Height/2;
dstRegion.w = ALIGN_CEIL_4(pDraw->p_dst_img->Width/3);
dstRegion.h = ALIGN_CEIL_4(pDraw->p_dst_img->Height/3);
GxImg_ScaleData(pDraw->p_src_img[1], REGION_MATCH_IMG, pDraw->p_dst_img, &dstRegion);
// flip and paste scaled image from top-right to top-left of destination buffer
dstLocation.x = pDraw->p_dst_img->Width - pDraw->p_dst_img->Width/3;
dstLocation.y = 40;
GxImg_RotatePasteData(pDraw->p_dst_img, &dstRegion, pDraw->p_dst_img, &dstLocation, GX_IMAGE_ROTATE_HRZ, GX_IMAGE_ROTATE_ENG2);
// paste top-right of front image to destination buffer
if (pDraw->p_src_img[2])
{
//GxImg_ScaleData(p_CainRotate_img, &dstRegion, pDraw->p_dst_img, &dstRegion);
dstLocation.x = dstRegion.x;
dstLocation.y = dstRegion.y;
dstRegion.x = pDraw->p_dst_img->Width - dstRegion.w;
GxImg_RotatePasteData(pDraw->p_src_img[2], &dstRegion, pDraw->p_dst_img, &dstLocation, GX_IMAGE_ROTATE_HRZ, GX_IMAGE_ROTATE_ENG2);
}
}
#else
dst_region.x = pDraw->p_dst_img->Width - pDraw->p_dst_img->Width/3;
dst_region.y = 40;
dst_region.w = pDraw->p_dst_img->Width/3;
dst_region.h = pDraw->p_dst_img->Height/3;
if(pDraw->p_src_img[1] && pDraw->p_dst_img->Width && pDraw->p_dst_img->Height){
GxImg_ScaleData(pDraw->p_src_img[1], REGION_MATCH_IMG, pDraw->p_dst_img, &dst_region);
}
#endif
}
else
{
}
#else
dst_region.x = 0;
dst_region.y = 0;
dst_region.w = pDraw->p_dst_img->Width;
dst_region.h = pDraw->p_dst_img->Height;
if(pDraw->p_src_img[2] && pDraw->p_dst_img->Width && pDraw->p_dst_img->Height){
GxImg_ScaleData(pDraw->p_src_img[2], REGION_MATCH_IMG, pDraw->p_dst_img, &dst_region);
}
#endif
}
else
{
// img1 - big
dst_region.x = 0;
dst_region.y = 0;
dst_region.w = pDraw->p_dst_img->Width;
dst_region.h = pDraw->p_dst_img->Height;
if(pDraw->p_src_img[0] && pDraw->p_dst_img->Width && pDraw->p_dst_img->Height){
GxImg_ScaleData(pDraw->p_src_img[0], REGION_MATCH_IMG, pDraw->p_dst_img, &dst_region);
}
// img2 - small on the left
if (GetMovieRecType_2p(uiMovieSize) == MOVIE_REC_TYPE_DUAL)
{
#if (DUALCAM_PIP_BEHIND_FLIP == ENABLE)
if (pDraw->p_src_img[1])
{
// flip rear image to destination buffer
IRECT dstRegion;
// scale rear image to top-right corner of destination buffer (size 1/4)
dstRegion.x = 0;
dstRegion.y = pDraw->p_dst_img->Height/2;
dstRegion.w = ALIGN_CEIL_4(pDraw->p_dst_img->Width/3);
dstRegion.h = ALIGN_CEIL_4(pDraw->p_dst_img->Height/3);
GxImg_ScaleData(pDraw->p_src_img[1], REGION_MATCH_IMG, pDraw->p_dst_img, &dstRegion);
// flip and paste scaled image from top-right to top-left of destination buffer
dstLocation.x = 0;
dstLocation.y = 40;
GxImg_RotatePasteData(pDraw->p_dst_img, &dstRegion, pDraw->p_dst_img, &dstLocation, GX_IMAGE_ROTATE_HRZ, GX_IMAGE_ROTATE_ENG2);
// paste top-right of front image to destination buffer
if (pDraw->p_src_img[0]) {
GxImg_ScaleData(pDraw->p_src_img[0], &dstRegion, pDraw->p_dst_img, &dstRegion);
}
}
#else
dst_region.x = 0;
dst_region.y = 40;
dst_region.w = pDraw->p_dst_img->Width/3;
dst_region.h = pDraw->p_dst_img->Height/3;
if(pDraw->p_src_img[1] && pDraw->p_dst_img->Width && pDraw->p_dst_img->Height){
GxImg_ScaleData(pDraw->p_src_img[1], REGION_MATCH_IMG, pDraw->p_dst_img, &dst_region);
}
#endif
}
}
}
/*MULTCAM_FRONT_CABIN_BIG_FRONT*/
else if(UI_GetData(FL_DUAL_CAM) == DUALCAM_CUSTOM_9)
{
if(pDraw->p_dst_img->Width && pDraw->p_dst_img->Height){
GxImg_FillData(pDraw->p_dst_img, NULL, COLOR_YUV_BLACK) ;
}
// img1 - big
dst_region.x = 0;
dst_region.y = 0;
dst_region.w = pDraw->p_dst_img->Width;
dst_region.h = pDraw->p_dst_img->Height;
if(pDraw->p_src_img[0] && pDraw->p_dst_img->Width && pDraw->p_dst_img->Height){
GxImg_ScaleData(pDraw->p_src_img[0], REGION_MATCH_IMG, pDraw->p_dst_img, &dst_region);
}
// img2 - small on the left
if (GetMovieRecType_2p(uiMovieSize) == MOVIE_REC_TYPE_DUAL)
{
#if (DUALCAM_PIP_BEHIND_FLIP == ENABLE)
if (pDraw->p_src_img[1])
{
// flip rear image to destination buffer
IRECT dstRegion;
// scale rear image to top-right corner of destination buffer (size 1/4)
dstRegion.x = 0;
dstRegion.y = pDraw->p_dst_img->Height/2;
dstRegion.w = ALIGN_CEIL_4(pDraw->p_dst_img->Width/3);
dstRegion.h = ALIGN_CEIL_4(pDraw->p_dst_img->Height/3);
GxImg_ScaleData(pDraw->p_src_img[1], REGION_MATCH_IMG, pDraw->p_dst_img, &dstRegion);
// flip and paste scaled image from top-right to top-left of destination buffer
dstLocation.x = 0;
dstLocation.y = 40;
GxImg_RotatePasteData(pDraw->p_dst_img, &dstRegion, pDraw->p_dst_img, &dstLocation, GX_IMAGE_ROTATE_HRZ, GX_IMAGE_ROTATE_ENG2);
// paste top-right of front image to destination buffer
if (pDraw->p_src_img[0]) {
GxImg_ScaleData(pDraw->p_src_img[0], &dstRegion, pDraw->p_dst_img, &dstRegion);
}
}
#else
dst_region.x = 0;
dst_region.y = 40;
dst_region.w = pDraw->p_dst_img->Width/3;
dst_region.h = pDraw->p_dst_img->Height/3;
if(pDraw->p_src_img[1] && pDraw->p_dst_img->Width && pDraw->p_dst_img->Height){
GxImg_ScaleData(pDraw->p_src_img[1], REGION_MATCH_IMG, pDraw->p_dst_img, &dst_region);
}
#endif
}
}
/*MULTCAM_FRONT_CABIN_BIG_CABIN*/
else if(UI_GetData(FL_DUAL_CAM) == DUALCAM_CUSTOM_10)
{
if(pDraw->p_dst_img->Width && pDraw->p_dst_img->Height){
GxImg_FillData(pDraw->p_dst_img, NULL, COLOR_YUV_BLACK) ;
}
// img2 - big
if (GetMovieRecType_2p(uiMovieSize) == MOVIE_REC_TYPE_DUAL)
{
#if (DUALCAM_PIP_BEHIND_FLIP == ENABLE)
if(pDraw->p_src_img[1])
{
GxImg_FillData(pDraw->p_dst_img, NULL, COLOR_YUV_BLACK) ;
dst_region.x = 0;
dst_region.y = 0;
dst_region.w = pDraw->p_dst_img->Width;
dst_region.h = pDraw->p_dst_img->Height;
// flip rear image to destination buffer
dstLocation.x = 0;
dstLocation.y = 0;
if (pDraw->p_src_img[1]->Width != pDraw->p_dst_img->Width){
if(g_PipViewBflip_PoolAddr && g_PipViewBflip_PoolSize){
IMG_BUF scale_dst_img;
GxImg_InitBuf(&scale_dst_img, pDraw->p_dst_img->Width, pDraw->p_dst_img->Height, GX_IMAGE_PIXEL_FMT_YUV420, pDraw->p_dst_img->Width, g_PipViewBflip_PoolAddr, g_PipViewBflip_PoolSize);
GxImg_ScaleData(pDraw->p_src_img[1], REGION_MATCH_IMG, &scale_dst_img, &dst_region);
GxImg_RotatePasteData(&scale_dst_img, &dst_region, pDraw->p_dst_img, &dstLocation, GX_IMAGE_ROTATE_HRZ, GX_IMAGE_ROTATE_ENG2);
}
}
else
{
// flip rear image to destination buffer
GxImg_RotatePasteData(pDraw->p_src_img[1], &dst_region, pDraw->p_dst_img, &dstLocation, GX_IMAGE_ROTATE_HRZ, GX_IMAGE_ROTATE_ENG2);
}
// img1 - small
dst_region.x = 0;
dst_region.y = 40;
dst_region.w = pDraw->p_dst_img->Width/3;
dst_region.h = pDraw->p_dst_img->Height/3;
if(pDraw->p_src_img[0] && pDraw->p_dst_img->Width && pDraw->p_dst_img->Height){
GxImg_ScaleData(pDraw->p_src_img[0], REGION_MATCH_IMG, pDraw->p_dst_img, &dst_region);
}
}
else
{
// img1 - big
dst_region.x = 0;
dst_region.y = 0;
dst_region.w = pDraw->p_dst_img->Width;
dst_region.h = pDraw->p_dst_img->Height;
if(pDraw->p_src_img[0] && pDraw->p_dst_img->Width && pDraw->p_dst_img->Height){
GxImg_ScaleData(pDraw->p_src_img[0], REGION_MATCH_IMG, pDraw->p_dst_img, &dst_region);
}
}
#else
dst_region.x = 0;
dst_region.y = 0;
dst_region.w = pDraw->p_dst_img->Width;
dst_region.h = pDraw->p_dst_img->Height;
if(pDraw->p_src_img[1] && pDraw->p_dst_img->Width && pDraw->p_dst_img->Height){
GxImg_ScaleData(pDraw->p_src_img[1], REGION_MATCH_IMG, pDraw->p_dst_img, &dst_region);
}
#endif
}
}
/*MULTCAM_FRONT_REAR_BIG_FRONT*/
else if(UI_GetData(FL_DUAL_CAM) == DUALCAM_CUSTOM_11)
{
if(pDraw->p_dst_img->Width && pDraw->p_dst_img->Height){
GxImg_FillData(pDraw->p_dst_img, NULL, COLOR_YUV_BLACK) ;
}
// img1 - big
dst_region.x = 0;
dst_region.y = 0;
dst_region.w = pDraw->p_dst_img->Width;
dst_region.h = pDraw->p_dst_img->Height;
if(pDraw->p_src_img[0] && pDraw->p_dst_img->Width && pDraw->p_dst_img->Height){
GxImg_ScaleData(pDraw->p_src_img[0], REGION_MATCH_IMG, pDraw->p_dst_img, &dst_region);
}
// img3 - small on left to right
#if (DUALCAM_PIP_BEHIND_FLIP == ENABLE)
// rear image is smaller on the right
if (pDraw->p_src_img[2])
{
// flip rear image to destination buffer
IRECT dstRegion;
// scale rear image to top-right corner of destination buffer (size 1/4)
dstRegion.x = 0;
dstRegion.y = pDraw->p_dst_img->Height/2;
dstRegion.w = ALIGN_CEIL_4(pDraw->p_dst_img->Width / 3);
dstRegion.h = ALIGN_CEIL_4(pDraw->p_dst_img->Height / 3);
GxImg_ScaleData(pDraw->p_src_img[2], REGION_MATCH_IMG, pDraw->p_dst_img, &dstRegion);
// flip and paste scaled image from top-right to top-left of destination buffer
dstLocation.x = 320;
dstLocation.y = PIP_WND_HIGHT;//0;
GxImg_RotatePasteData(pDraw->p_dst_img, &dstRegion, pDraw->p_dst_img, &dstLocation, GX_IMAGE_ROTATE_HRZ, GX_IMAGE_ROTATE_ENG2);
// paste top-right of front image to destination buffer
if (pDraw->p_src_img[0]) {
GxImg_ScaleData(pDraw->p_src_img[0], &dstRegion, pDraw->p_dst_img, &dstRegion);
}
}
#else
dst_region.x = 0;
dst_region.y = 40;
dst_region.w = pDraw->p_dst_img->Width/3;
dst_region.h = pDraw->p_dst_img->Height/3;
if(pDraw->p_src_img[2] && pDraw->p_dst_img->Width && pDraw->p_dst_img->Height){
GxImg_ScaleData(pDraw->p_src_img[2], REGION_MATCH_IMG, pDraw->p_dst_img, &dst_region);
}
#endif
}
/*MULTCAM_FRONT_REAR_BIG_REAR*/
else if(UI_GetData(FL_DUAL_CAM) == DUALCAM_CUSTOM_12)
{
if(pDraw->p_dst_img->Width && pDraw->p_dst_img->Height){
GxImg_FillData(pDraw->p_dst_img, NULL, COLOR_YUV_BLACK) ;
}
// img3 - big
#if (DUALCAM_PIP_BEHIND_FLIP == ENABLE)
if(pDraw->p_src_img[2])
{
GxImg_FillData(pDraw->p_dst_img, NULL, COLOR_YUV_BLACK) ;
dst_region.x = 0;
dst_region.y = 0;
dst_region.w = pDraw->p_dst_img->Width;
dst_region.h = pDraw->p_dst_img->Height;
// flip rear image to destination buffer
dstLocation.x = 0;
dstLocation.y = 0;
if (pDraw->p_src_img[2]->Width != pDraw->p_dst_img->Width){
//dst_region.x = pDraw->p_dst_img->Width;
if(g_PipViewBflip_PoolAddr && g_PipViewBflip_PoolSize){
IMG_BUF scale_dst_img;
GxImg_InitBuf(&scale_dst_img, pDraw->p_dst_img->Width, pDraw->p_dst_img->Height, GX_IMAGE_PIXEL_FMT_YUV420, pDraw->p_dst_img->Width, g_PipViewBflip_PoolAddr, g_PipViewBflip_PoolSize);
GxImg_ScaleData(pDraw->p_src_img[2], REGION_MATCH_IMG, &scale_dst_img, &dst_region);
GxImg_RotatePasteData(&scale_dst_img, &dst_region, pDraw->p_dst_img, &dstLocation, GX_IMAGE_ROTATE_HRZ, GX_IMAGE_ROTATE_ENG2);
}
}
else
{
// flip rear image to destination buffer
GxImg_RotatePasteData(pDraw->p_src_img[2], &dst_region, pDraw->p_dst_img, &dstLocation, GX_IMAGE_ROTATE_HRZ, GX_IMAGE_ROTATE_ENG2);
}
// img1 - small
dst_region.x = pDraw->p_dst_img->Width - pDraw->p_dst_img->Width/3;
dst_region.y = 40;
dst_region.w = pDraw->p_dst_img->Width/3;
dst_region.h = pDraw->p_dst_img->Height/3;
if(pDraw->p_src_img[0] && pDraw->p_dst_img->Width && pDraw->p_dst_img->Height){
GxImg_ScaleData(pDraw->p_src_img[0], REGION_MATCH_IMG, pDraw->p_dst_img, &dst_region);
}
}
else
{
// img1 - big
dst_region.x = 0;
dst_region.y = 0;
dst_region.w = pDraw->p_dst_img->Width;
dst_region.h = pDraw->p_dst_img->Height;
if(pDraw->p_src_img[0] && pDraw->p_dst_img->Width && pDraw->p_dst_img->Height){
GxImg_ScaleData(pDraw->p_src_img[0], REGION_MATCH_IMG, pDraw->p_dst_img, &dst_region);
}
}
#else
dst_region.x = 0;
dst_region.y = 0;
dst_region.w = pDraw->p_dst_img->Width;
dst_region.h = pDraw->p_dst_img->Height;
if(pDraw->p_src_img[2] && pDraw->p_dst_img->Width && pDraw->p_dst_img->Height){
GxImg_ScaleData(pDraw->p_src_img[2], REGION_MATCH_IMG, pDraw->p_dst_img, &dst_region);
}
#endif
}
/*MULTCAM_FRONT_BIG_FRONT*/
else if(UI_GetData(FL_DUAL_CAM) == DUALCAM_CUSTOM_13)
{
if(pDraw->p_dst_img->Width && pDraw->p_dst_img->Height){
GxImg_FillData(pDraw->p_dst_img, NULL, COLOR_YUV_BLACK) ;
}
// img1 - big
dst_region.x = 0;
dst_region.y = 0;
dst_region.w = pDraw->p_dst_img->Width;
dst_region.h = pDraw->p_dst_img->Height;
if(pDraw->p_src_img[0] && pDraw->p_dst_img->Width && pDraw->p_dst_img->Height){
GxImg_ScaleData(pDraw->p_src_img[0], REGION_MATCH_IMG, pDraw->p_dst_img, &dst_region);
}
}
}
return E_OK;
}
参考
https://blog.youkuaiyun.com/laoqiuge/article/details/71708922
https://www.baidu.com/s?tn=15007414_9_dg&wd=error%3A+expected+identifier+or+%27%28%27+before+%27return%27
最后解决办法
最后排查是if-else中缺少}符号,只能使用#if 0和#endif 来一段段屏蔽代码来排查;