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));

}

...全文
488 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

4,465

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧