t264的使用问题(求大神帮忙)

ITMRLI 2015-07-14 06:22:04
最近参考国嵌的远程视频监控项目在做一个机器人视频监控系统,机器人自带一个CCD摄像头,视频数据从摄像头进来后,通过FPGA进行初步处理,用ioctl(dev,IOCTRL_RD_IMG_DATA,rgb)可以将视频数据从FPGAT提取保存到数组unsigned short int rgb[320*240]中,视频格式是RGB565形式的。我先将RGB565格式转为RGB24格式,然后再用ConvertRGB2YUV函数将RGB24格式转换为YUV420格式,最后调用T264_encode函数进行压缩,可压缩的结果确很异常。视频采集、压缩部分代码及压缩结果如下,请大神指导。
while(1)

{

if(ioctl(dev,IOCTRL_RD_IMG_DATA,rgb))

{

printf("ioctl DISPLAY_IMG_DATA error\n");

exit(1);

}

/*rgb565转为rgb24*/

for(y=0;y<240;y++)

for(x=0;x<320;x++)

rgb565_2_rgb24(pfbmap+x*3+y*320*3,(unsigned short)rgb[y*320+x]);
/*RGB转为YUV*/

ConvertRGB2YUV(m_param.width,m_param.height,pfbmap,cam_yuv);

/*调用t264库文件中的T264_encode()函数进行编码*/

iActualLen=T264_encode(m_t264,cam_yuv,m_pDst,m_lDstSize);

rate=(float)(m_lDstSize-iActualLen)*100/m_lDstSize;

printf("encoded:%d,%d bytes,encoded rate:%.3f\n",m_lDstSize,iActualLen,rate);

memcpy(m_pPoolData,&m_t264->frame_num,1);

memcpy(m_pPoolData+1,m_pDst,iActualLen);

iActualLen++;

/*从m_pPoolData数据缓冲区发送iActualLen字节数据到addrdst地址处,实现了数据的传输*/

sendto(sockfd,m_pPoolData,iActualLen,0,(struct sockaddr*)&addrdst,sizeof(struct sockaddr_in));

}

...全文
447 点赞 收藏 回复
写回复
回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
相关推荐
发帖
Linux_Kernel
创建于2007-08-27

4147

社区成员

Linux/Unix社区 内核源代码研究区
申请成为版主
帖子事件
创建了帖子
2015-07-14 06:22
社区公告
暂无公告