Toybrick

ARGB32转NV12会,再编码会卡死

hz2580

注册会员

积分
162
楼主
发表于 2020-11-18 09:19:13    查看: 7353|回复: 3 | [复制链接]    打印 | 只看该作者
本帖最后由 hz2580 于 2020-11-18 23:48 编辑

ARGB32转NV12会卡死,怀疑是ARGB32的问题。mRga->ops->setSrcFormat(mRga, V4L2_PIX_FMT_ARGB32, width, height);
mRga->ops->setDstFormat(mRga, V4L2_PIX_FMT_NV12, width, height);
mRga->ops->setSrcBufferPtr(mRga, srcBuf);
mRga->ops->setDstBufferPtr(mRga, dstBuf);
mRga->ops->go(mRga);


NV12拷贝去编码器可以
mRga->ops->setSrcFormat(mRga, V4L2_PIX_FMT_NV12, width, height);
mRga->ops->setDstFormat(mRga, V4L2_PIX_FMT_NV12, width, height);
mRga->ops->setSrcBufferPtr(mRga, srcBuf);
mRga->ops->setDstBufferPtr(mRga, dstBuf);
mRga->ops->go(mRga);


回复

使用道具 举报

hz2580

注册会员

积分
162
沙发
 楼主| 发表于 2020-11-18 23:43:43 | 只看该作者
本帖最后由 hz2580 于 2020-11-18 23:47 编辑

    mRga->ops->setSrcFormat(mRga, V4L2_PIX_FMT_ARGB32, srcBuf_width, srcBuf_height);
    mRga->ops->setDstFormat(mRga, V4L2_PIX_FMT_NV12, dstBuf_width, dstBuf_height);
    mRga->ops->setSrcBufferPtr(mRga, srcBuf);
    mRga->ops->setDstBufferPtr(mRga, dstBuf);
    mRga->ops->setSrcCrop(mRga, srcX, srcY, srcW,srcH);
    mRga->ops->setDstCrop(mRga, dstX, dstY, dstW,dstH);
    mRga->ops->go(mRga);

感觉只要有V4L2_PIX_FMT_ARGB32就会出错,是不是内核驱动里面这个作为源不支持?

内核的错误提示:
[ 5543.470382] rk_vcodec: vpu_service_ioctl:1890: error: unknown vpu service ioctl cmd 40086c01
[ 5548.857117] Unable to handle kernel paging request at virtual address ffffffc000000000
[ 5548.857834] pgd = ffffffc0f1398000
[ 5548.858139] [ffffffc000000000] *pgd=0000000000000000, *pud=0000000000000000
[ 5548.858825] Internal error: Oops: 96000146 [#1] SMP
[ 5548.859258] Modules linked in:
[ 5548.859547] CPU: 4 PID: 2142 Comm: rk3399pro_vdec Not tainted 4.4.167 #78
[ 5548.860150] Hardware name: rockchip,rk3399pro-toybrick-prod-linux (DT)
[ 5548.860731] task: ffffffc0ed035e80 task.stack: ffffffc0efdd0000
[ 5548.861263] PC is at __dma_flush_range+0x18/0x30
[ 5548.861674] LR is at rga_dma_flush_page+0x50/0x5c
[ 5548.862093] pc : [<ffffff8008094b98>] lr : [<ffffff8008429284>] pstate: 60000145
[ 5548.862739] sp : ffffffc0efdd35f0

内核版本:
[toybrick@toybrick MyProjects]$ cat /proc/version
Linux version 4.4.167 (kfx@inno) (gcc version 6.3.1 20170404 (Linaro GCC 6.3-2017.05) ) #78 SMP Wed Aug 21 09:15:51 CST 2019
[toybrick@toybrick MyProjects]$ uname -a
Linux toybrick.fc28 4.4.167 #78 SMP Wed Aug 21 09:15:51 CST 2019 aarch64 aarch64 aarch64 GNU/Linux
回复

使用道具 举报

jefferyzhang

版主

积分
13580
板凳
发表于 2020-11-19 08:45:35 | 只看该作者
这LOG显示你自己内存越界了。
玩嵌入式都要注意硬件宽高都有16对齐,buffer都要按对齐的开
回复

使用道具 举报

hz2580

注册会员

积分
162
地板
 楼主| 发表于 2020-11-19 09:18:28 | 只看该作者
srcBuf_width, srcBuf_height,需要16进对齐是吧
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

产品中心 购买渠道 开源社区 Wiki教程 资料下载 关于Toybrick


快速回复 返回顶部 返回列表