librga
librga copied to clipboard
使用RkRgaBlit接口做画中画半透明效果,设置alpha值之后合成的画面花屏
您好,使用RkRgaBlit接口做画中画半透明效果,设置alpha值之后合成的画面花屏,如何使用这个半透明接口呢,下面是我的代码,帮忙看下哪里有问题,谢谢!
bool rkmpprga::pip(void* src_buf, void* dst_buf, rga_rect_t src_rect,rga_rect_t dst_rect,uint8_t alpha) { rga_info_t src_info,dst_info;
memset(&src_info,0,sizeof(rga_info_t));
src_info.fd = -1;
src_info.virAddr = src_buf;
src_info.phyAddr = nullptr;
src_info.mmuFlag = 1;
src_info.rect = src_rect;
memset(&dst_info,0,sizeof(rga_info_t));
dst_info.fd = -1;
dst_info.virAddr = dst_buf;
dst_info.phyAddr = nullptr;
dst_info.mmuFlag = 1;
dst_info.rect = dst_rect;
src_info.blend = 0x405;
src_info.blend |= alpha<<16;
RkRgaBlit(&src_info,&dst_info,NULL);
return true;
}
{ mix_rect rectSrc = {0,0,1,1}; mix_rect rectDst = {0,0,1,1}; uint8_t alpha = 0xef; rga_set_rect(&src_rect,videoWidthrectSrc.x,videoHeightrectSrc.y,videoWidthrectSrc.w,videoHeightrectSrc.h,frame[0]->linesize[0],videoHeight,RK_FORMAT_YCbCr_420_P); rga_set_rect(&dst_rect,videoWidthrectDst.x,videoHeightrectDst.y,videoWidthrectDst.w/2,videoHeightrectDst.h/2,yuvFrame->linesize[0],videoHeight,RK_FORMAT_YCbCr_420_P); memcpy(outDataY,frame[0]->data[0],frame[0]->linesize[0]*videoHeight); memcpy(outDataU,frame[0]->data[1],frame[0]->linesize[1]*videoHeight/2); memcpy(outDataV,frame[0]->data[2],frame[0]->linesize[2]*videoHeight/2); memcpy(inDataY,frame[1]->data[0],frame[1]->linesize[0]*videoHeight); memcpy(inDataU,frame[1]->data[1],frame[1]->linesize[1]*videoHeight/2); memcpy(inDataV,frame[1]->data[2],frame[1]->linesize[2]*videoHeight/2);
rga.pip(framedata, yuvdata,src_rect,dst_rect,alpha);
}