之前在IMX6D,L3.0.35内核版本上,利用V4L2框架获取YUV422视频,通过IPU转码成YUV420,再通过VPU硬编码已经完成!
现在我需要移植到L3.14.52内核上,需要做哪些改变?2个版本的VPU编码是否存在差异?
应用程序不改变时,运行时的一些log:
imx-ipuv3 2800000.ipu: IPU Warning - IPU_INT_STAT_9 = 0x04000000
mxc_mipi_csi2 21dc000.mipi_csi: mipi_csi2_reset: mipi_lane_bps = 324 Mbps
mxc_mipi_csi2 21dc000.mipi_csi: mipi_csi2_reset: value = 0x48.
imx-ipuv3 2800000.ipu: handler already installed on irq 20.Error registering rot irq
VIDIOC_STREAMON error
imx-ipuv3 2400000.ipu: IPU Warning - IPU_INT_STAT_5 = 0x00100000
imx-ipuv3 2400000.ipu: IPU Warning - IPU_INT_STAT_9 = 0x04000000
imx-ipuv3 2400000.ipu: ERR:[0xa88e4000]-no:0xd0 "wait_for_comp_timeout" ret:0,line:2967
imx-ipuv3 2400000.ipu: IPU Warning - IPU_INT_STAT_9 = 0x04000000
imx-ipuv3 2400000.ipu: ERR:[0xa88e2e00]-no:0xe0 "wait_for_comp_timeout" ret:0,line:2967
imx-ipuv3 2400000.ipu: IPU Warning - IPU_INT_STAT_9 = 0x04000000
imx-ipuv3 2400000.ipu: ERR:[0xa88e2e00]-no:0xf0 "wait_for_comp_timeout" ret:0,line:2967
imx-ipuv3 2400000.ipu: IPU Warning - IPU_INT_STAT_9 = 0x04000000
imx-ipuv3 2400000.ipu: ERR:[0xa88e2e00]-no:0x100 "wait_for_comp_timeout" ret:0,line:2967
imx-ipuv3 2400000.ipu: IPU Warning - IPU_INT_STAT_9 = 0x04000000
imx-ipuv3 2400000.ipu: ERR:[0xa88e2e00]-no:0x110 "wait_for_comp_timeout" ret:0,line:2967
imx-ipuv3 2400000.ipu: IPU Warning - IPU_INT_STAT_9 = 0x04000000
这些好像是IPU的问题,当我把IPU关掉不用然后,再从V4L2那边直接获取YUV420视频格式的码流,直接VPU编码,能够编码,但是没有SPS和PPS字符串,全部是I帧和P帧。这个是什么问题?
而当我手动的把3.0.35上编码获得的SPS和PPS写到3.14.52编码后的avi文件时,播放的情况是这样的:如附件所示:
SPS:0x00,0x00,0x00,0x01,0x67,0x42,0x40,0x1e,0xa6,0x80,0xb0,0x12,0x64
PPS: 0x00,0x00,0x00,0x01,0x68,0xce,0x30,0xa4,0x80
出现这种图像叠加的情况,这个又是怎么问题呢?
谢谢!
Hello juzi chen ,
原则上,应用程序,不需要做特别的改变,就可以直接在高版本上运行的。
请把下面的两个patch打上去,试试。
这里是IPU和VPU 资源,内有很多debug文档,对你调试很有帮助:
IPU:IPU Resources
Have a great day,
TIC Weidong sun
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------
你好!非常感谢你的回复!
无法打开你发的2个地址!如下所示:
除此之外,我再咨询一个问题,现在我的分辨率是D1的,当我做720P的时候,出现如下的一些提示:
imx-ipuv3 2400000.ipu: IC output size(1280) cannot exceed 1024
imx-ipuv3 2400000.ipu: failed to calculate prpenc width scaling coefficients
ERROR: v4l2 capture: mxc_v4l_dqueue timeout enc_counter 0
比较奇怪的是IPU我已经关掉了,还是显示ipu相关的信息?
做720p分辨率跟做D1的,除了分辨率不同之外,其它的需要修改哪些地方呢?
谢谢!
你好,我最近也在做视频格式转换,平台IMX6Q,版本是3.0.35。我要在JNI中利用v4l2框架获取yuyv422,然后转为yuv420p,传给android显示。但转换很耗费cpu,现在想把转换通过ipu来做,但这一步不知道怎么做。请问你有详细步骤或者资料么,或者可以把你的这一部分的代码发给我么,494727564qq@.com。
希望能够回复我,谢谢了!