Firefly开源社区

12
发表新贴
打印 上一主题 下一主题

[Linux] VDEC解码h265格式文件报错

41

积分

0

威望

0

贡献

技术小白

积分
41

VDEC解码h265格式文件报错

发表于 2022-5-6 16:28:59      浏览:10370 | 回复:11        打印      只看该作者   [复制链接] 楼主
问题描述及复现步骤:

1.官方提供的demo解码H265的文件报错,然后保存下来的nv12数据也是异常的,任务紧急,帮忙看一下吧,谢谢啦
如图:

test.h265

681 KB, 下载次数: 2, 下载积分: 灯泡 -1 , 经验 -1

vdec_h265.log

11.5 KB, 下载次数: 2, 下载积分: 灯泡 -1 , 经验 -1

回复

使用道具 举报

41

积分

0

威望

0

贡献

技术小白

积分
41
发表于 2022-5-6 17:52:26        只看该作者  沙发
这个h265的文件的分辨率是1920*1080的,但是解码的时候就成了
[RKMEDIA][VDEC][Info]:MppDec Info change get, 1920x1080 in (2304x1080)
回复

使用道具 举报

1万

积分

7

威望

0

贡献

技术大神

Rank: 8Rank: 8

积分
11422

突出贡献

发表于 2022-5-7 10:50:29        只看该作者  板凳
lyz 发表于 2022-5-6 17:52
这个h265的文件的分辨率是1920*1080的,但是解码的时候就成了
[RKMEDIA][VDEC]:MppDec Info change get, 1 ...

你说的保存NV12数据是异常的,这只是个解码demo,没有保存NV12的操作啊
回复

使用道具 举报

41

积分

0

威望

0

贡献

技术小白

积分
41
发表于 2022-5-7 10:59:22        只看该作者  地板
是没有保存nv12的操作,我自己添加了一下写的操作长度为w*h*3/2。这样,你可以试一下1080P分辨率下的h265解码,解码流程能过去,解码出来的nv12数据是异常的
回复

使用道具 举报

41

积分

0

威望

0

贡献

技术小白

积分
41
发表于 2022-5-7 14:44:46        只看该作者  5#
附上我修改过的rkmedia_vdec_test.c
命令行执行为 ./rkmedia_vdec_test -w 1920 -h 1080 -i /userdata/rv1126_milayer_firefly/src/test.h265 -t H265

打印:
[RKMEDIA][VDEC][Info]:MppDec Info change get, 1920x1080 in (2304x1080)
Get Frame:ptr:(nil), fd:-1, size:0, mode:3, channel:0, timestamp:0, ImgInfo:<wxh 1920x1080, fmt 0x4>
#Send packet(0x44b60, 4096Bytes) to VDEC[0].
Get Frame:ptr:0x9f9ba000, fd:17, size:3732480, mode:3, channel:0, timestamp:0, ImgInfo:<wxh 1920x1080, fmt 0x4>
11111111111111111
#Send packet(0x44b60, 4096Bytes) to VDEC[0].
#Send packet(0x44b60, 4096Bytes) to VDEC[0].
mpp[2036]: H265_PARSER_REF: Could not find ref with POC 30
#Send packet(0x44b60, 4096Bytes) to VDEC[0].
[RKMEDIA][VDEC][Info]:Received a errinfo frame.
#Send packet(0x44b60, 4096Bytes) to VDEC[0].
[RKMEDIA][VDEC][Info]:Received a errinfo frame.
#Send packet(0x44b60, 4096Bytes) to VDEC[0].
[RKMEDIA][VDEC][Info]:Received a errinfo frame.
#Send packet(0x44b60, 4096Bytes) to VDEC[0].
[RKMEDIA][VDEC][Info]:Received a errinfo frame.
22222222222222

rkmedia_vdec_test.c

7.11 KB, 下载次数: 2, 下载积分: 灯泡 -1 , 经验 -1

回复

使用道具 举报

1万

积分

7

威望

0

贡献

技术大神

Rank: 8Rank: 8

积分
11422

突出贡献

发表于 2022-5-7 15:17:28        只看该作者  6#
lyz 发表于 2022-5-7 14:44
附上我修改过的rkmedia_vdec_test.c
命令行执行为 ./rkmedia_vdec_test -w 1920 -h 1080 -i /userdata/rv1 ...

解码是正常的,你写的程序不对。你把图片导出到电脑查看。预览是正常的,有一块是绿色的。
  1. ffplay -f rawvideo -video_size 2304x1080  -pixel_format nv12 firefly.nv12
复制代码
回复

使用道具 举报

41

积分

0

威望

0

贡献

技术小白

积分
41
发表于 2022-5-7 15:28:37        只看该作者  7#
1.解码程序我只添加了保存的模块,其它模块都没动,哪里不对呢,请指正一下吧
2.h265文件的分辨率是1080P的,为啥解码完之后成了2304*1080的呢,然后必须以2304*1080的显示分辨率显示nv12正常呢
回复

使用道具 举报

1万

积分

14

威望

13

贡献

管理员

Rank: 9Rank: 9Rank: 9

积分
11182

优秀版主

发表于 2022-5-7 15:33:26        只看该作者  8#
[RKMEDIA][VDEC][Info]:MppDec Info change get, 1920x1080 in (2304x1080) 1920 是 width 像素分辨率,2304 是 stride 单位是字节数据长度,保存文件应该用接口读取 frame 的size 然后写入,预览用 1920x1080 分辨率
回复

使用道具 举报

41

积分

0

威望

0

贡献

技术小白

积分
41
发表于 2022-5-7 15:36:56        只看该作者  9#
1.同样的demo程序用1080P的h264编码格式文件解码出来的nv12数据,以1920*1080的分辨率显示出来正常,没有多余的绿色
2.那官方的解码模块如果遇到1080P的h265还需要特殊处理吗,我觉得这样的SDK明显是不太合理吧
回复

使用道具 举报

41

积分

0

威望

0

贡献

技术小白

积分
41
发表于 2022-5-7 15:41:01        只看该作者  10#
板蓝根 发表于 2022-5-7 15:33
[RKMEDIA][VDEC]:MppDec Info change get, 1920x1080 in (2304x1080) 1920 是 width 像素分辨率,2304 是 s ...

        FILE *fp = fopen ("./firefly.nv12", "wb");
        fwrite(RK_MPI_MB_GetPtr(mb), 1, RK_MPI_MB_GetSize(mb), fp);
        fclose(fp);

保存的时候确实使用RK_MPI_MB_GetSize(mb)这个写的长度,然后预览用1920*1080有问题,以2304*1080没问题呢
回复

使用道具 举报

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

本版积分规则

友情链接 : 爱板网 电子发烧友论坛 云汉电子社区 粤ICP备14022046号-2
快速回复 返回顶部 返回列表