lyz 发表于 2022-5-6 16:28:59

VDEC解码h265格式文件报错


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

lyz 发表于 2022-5-6 17:52:26

这个h265的文件的分辨率是1920*1080的,但是解码的时候就成了
:MppDec Info change get, 1920x1080 in (2304x1080)

799959745 发表于 2022-5-7 10:50:29

lyz 发表于 2022-5-6 17:52
这个h265的文件的分辨率是1920*1080的,但是解码的时候就成了
:MppDec Info change get, 1 ...

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

lyz 发表于 2022-5-7 10:59:22

是没有保存nv12的操作,我自己添加了一下写的操作长度为w*h*3/2。这样,你可以试一下1080P分辨率下的h265解码,解码流程能过去,解码出来的nv12数据是异常的

lyz 发表于 2022-5-7 14:44:46

附上我修改过的rkmedia_vdec_test.c
命令行执行为 ./rkmedia_vdec_test -w 1920 -h 1080 -i /userdata/rv1126_milayer_firefly/src/test.h265 -t H265

打印:
: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.
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.
#Send packet(0x44b60, 4096Bytes) to VDEC.
mpp: H265_PARSER_REF: Could not find ref with POC 30
#Send packet(0x44b60, 4096Bytes) to VDEC.
:Received a errinfo frame.
#Send packet(0x44b60, 4096Bytes) to VDEC.
:Received a errinfo frame.
#Send packet(0x44b60, 4096Bytes) to VDEC.
:Received a errinfo frame.
#Send packet(0x44b60, 4096Bytes) to VDEC.
:Received a errinfo frame.
22222222222222

799959745 发表于 2022-5-7 15:17:28

lyz 发表于 2022-5-7 14:44
附上我修改过的rkmedia_vdec_test.c
命令行执行为 ./rkmedia_vdec_test -w 1920 -h 1080 -i /userdata/rv1 ...

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

lyz 发表于 2022-5-7 15:28:37

1.解码程序我只添加了保存的模块,其它模块都没动,哪里不对呢,请指正一下吧
2.h265文件的分辨率是1080P的,为啥解码完之后成了2304*1080的呢,然后必须以2304*1080的显示分辨率显示nv12正常呢

板蓝根 发表于 2022-5-7 15:33:26

:MppDec Info change get, 1920x1080 in (2304x1080) 1920 是 width 像素分辨率,2304 是 stride 单位是字节数据长度,保存文件应该用接口读取 frame 的size 然后写入,预览用 1920x1080 分辨率

lyz 发表于 2022-5-7 15:36:56

1.同样的demo程序用1080P的h264编码格式文件解码出来的nv12数据,以1920*1080的分辨率显示出来正常,没有多余的绿色
2.那官方的解码模块如果遇到1080P的h265还需要特殊处理吗,我觉得这样的SDK明显是不太合理吧

lyz 发表于 2022-5-7 15:41:01

板蓝根 发表于 2022-5-7 15:33
: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没问题呢
页: [1] 2
查看完整版本: VDEC解码h265格式文件报错