Firefly开源社区

标题: VDEC解码h265格式文件报错 [打印本页]

作者: lyz    时间: 2022-5-6 16:28
标题: VDEC解码h265格式文件报错

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

tchip_askquestions

test.h265

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

vdec_h265.log

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


作者: lyz    时间: 2022-5-6 17:52
这个h265的文件的分辨率是1920*1080的,但是解码的时候就成了
[RKMEDIA][VDEC][Info]:MppDec Info change get, 1920x1080 in (2304x1080)
作者: 799959745    时间: 2022-5-7 10:50
lyz 发表于 2022-5-6 17:52
这个h265的文件的分辨率是1920*1080的,但是解码的时候就成了
[RKMEDIA][VDEC]:MppDec Info change get, 1 ...

你说的保存NV12数据是异常的,这只是个解码demo,没有保存NV12的操作啊
作者: lyz    时间: 2022-5-7 10:59
是没有保存nv12的操作,我自己添加了一下写的操作长度为w*h*3/2。这样,你可以试一下1080P分辨率下的h265解码,解码流程能过去,解码出来的nv12数据是异常的
作者: lyz    时间: 2022-5-7 14:44
附上我修改过的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


作者: 799959745    时间: 2022-5-7 15:17
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
复制代码

作者: lyz    时间: 2022-5-7 15:28
1.解码程序我只添加了保存的模块,其它模块都没动,哪里不对呢,请指正一下吧
2.h265文件的分辨率是1080P的,为啥解码完之后成了2304*1080的呢,然后必须以2304*1080的显示分辨率显示nv12正常呢
作者: 板蓝根    时间: 2022-5-7 15:33
[RKMEDIA][VDEC][Info]:MppDec Info change get, 1920x1080 in (2304x1080) 1920 是 width 像素分辨率,2304 是 stride 单位是字节数据长度,保存文件应该用接口读取 frame 的size 然后写入,预览用 1920x1080 分辨率
作者: lyz    时间: 2022-5-7 15:36
1.同样的demo程序用1080P的h264编码格式文件解码出来的nv12数据,以1920*1080的分辨率显示出来正常,没有多余的绿色
2.那官方的解码模块如果遇到1080P的h265还需要特殊处理吗,我觉得这样的SDK明显是不太合理吧
作者: lyz    时间: 2022-5-7 15:41
板蓝根 发表于 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没问题呢

作者: lyz    时间: 2022-5-7 16:28
板蓝根 发表于 2022-5-7 15:33
[RKMEDIA][VDEC]:MppDec Info change get, 1920x1080 in (2304x1080) 1920 是 width 像素分辨率,2304 是 s ...

Get Frame:ptr:0x9f9ba000, fd:17, size:3732480, mode:3, channel:0, timestamp:0, ImgInfo:<wxh 1920x1080, fmt 0x4>
刚发现RK_MPI_MB_GetSize(mb)的长度就是2304*1080*3/2,你们的sdk库是否需要做一下优化
作者: rkdream    时间: 2023-3-13 17:17
我也是用MPP解码H264是正常的,解码H265跟你的情况一样?请问你怎么解决这个问题的。




欢迎光临 Firefly开源社区 (https://dev.t-firefly.com/) Powered by Discuz! X3.1