hi, all!
capture捕获1952*1472的数据进行h264编码,发现图像被一层绿色覆盖(如图)。
如果捕获的是1952*2048大小的数据就不会有问题。
做了下实验高度1472~2048,越靠近2048绿色的范围就越小。
问下怎么能去掉那个绿色?谢谢!
yueping Tian:
补充下, A8直接读出capture捕获的yuv,使用elecard看,yuv是正常的,没有绿色的。
Chris Meng:
回复 yueping Tian:
你好,
你能获得一下编码前的YUV420sp数据么?
据我了解elecard的yuv工具是不能看yuv420sp的图像的。
yueping Tian:
回复 Chris Meng:
en elecard 不能看yuv420sp 但可以看yuv420p, 从captrue得到yuv420sp转换成yuv420, 使用elecard发现yuv是对的
Chris Meng:
回复 yueping Tian:
你好,
请问你的编码器使用的是哪个版本的?
你能否配置maxWidth=2560,再编码看看,是否有同样的问题?
yueping Tian:
回复 Chris Meng:
DVRRDK04.00.00.01 DM8168-EVM REL.500.V.H264AVC.E.IVAHD.02.00.04.01 在什么地方设置maxWidth?
Chris Meng:
回复 yueping Tian:
你好,
encLink_h264.c
static Int enclink_h264_set_static_params(IH264ENC_Params * staticParams, EncLink_AlgCreateParams * algCreateParams){ /* Initialize default values for static params */ *staticParams = H264ENC_TI_PARAMS;
/* Both width & height needs to be align with 2 bytes */ staticParams->videnc2Params.maxHeight = VpsUtils_align(algCreateParams->maxHeight, 2);
staticParams->videnc2Params.maxWidth = VpsUtils_align(algCreateParams->maxWidth, 16); –》修改为2560
yueping Tian:
回复 Chris Meng:
case1: capture -> ipcFrameOut -> ipcFrameIn(A8), A8保存yuv420数据
case2: capture ->ipcOutM3 ->ipcInM3 -> enc -> ipcBitsOut -> ipcBitsIn a8保存h264数据
capture 捕获的是1952*1920的数据, 在captureLink_drv.c中输出uv值:
1248 {1249 pFrame = frameList.frames[frameId];1250 #if 11251 int mm = 0;1252 for (mm =0; mm < 1952 * 8; mm+=16)1253 {1254 Vps_printf("%02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x\n",1255 *((unsigned char*)pFrame->addr[0][1] + mm),1256 *((unsigned char*)pFrame->addr[0][1] + mm+1),1257 *((unsigned char*)pFrame->addr[0][1] + mm+2),1258 *((unsigned char*)pFrame->addr[0][1] + mm+3),1259 *((unsigned char*)pFrame->addr[0][1] + mm+4),1260 *((unsigned char*)pFrame->addr[0][1] + mm+5),1261 *((unsigned char*)pFrame->addr[0][1] + mm+6),1262 *((unsigned char*)pFrame->addr[0][1] + mm+7),1263 *((unsigned char*)pFrame->addr[0][1] + mm+8),1264 *((unsigned char*)pFrame->addr[0][1] + mm+9),1265 *((unsigned char*)pFrame->addr[0][1] + mm+10),1266 *((unsigned char*)pFrame->addr[0][1] + mm+12),1267 *((unsigned char*)pFrame->addr[0][1] + mm+13),1268 *((unsigned char*)pFrame->addr[0][1] + mm+14),1269 *((unsigned char*)pFrame->addr[0][1] + mm+14));1270 }1271 Vps_printf("—————————-end \n");1272 Vps_printf("—————————-end \n");1273 #endif发现case1 和case2输出的数值不一样
yueping Tian:
回复 Chris Meng:
你好! maxWidth 改2560也不行,还是老样子
Chris Meng:
回复 yueping Tian:
你好,
你之前说YUV是对的是基于case1获得的yuv是么?
你说case2输出uv和case1不一样,这是可能的,你摄像头的数据总会有点变化的。你是发现case2的有特别不一样么?
IPNC上有使用IVAHD编码10MP的数据,使用的是4kx4k的编码选项,我之前让你把maxWidth加大就是想看看4kx4k的编码选项是否有问题,应该可以可以的。所以我还是怀疑是输入数据的问题。