This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

h264编码失败



请教:avserver在运行到VINDENC1_process时返回-1,我打印outArgs.extendedError,得到0x8007,请问此错误代码是什么意义?应该看那些资料解决此问题?

谢谢!

  • 请看codec user guide的error信息

  • 我看了Codec Engine Application Developer User's Guide没有看到任何关于这些API的error信息啊,请指教,或给予链接,谢谢!

  • 不是codec engine user guide,是codec本身的user guide,在codec目录下面的doc目录下,里面有XDM_ErrorBits说明错误的含义

  • 多谢,确实找到了xdm.h中关于errorbit的定义,但是这个定义太笼统了,不能从此err分析出出现此状况的原因。Anyhow,tks very much!

  • 请把问题描述清楚一些,比如输入信号格式,分辨率等等

    另外,首先看看你送给codec的数据和你配置的是否一致

  • 输入信号是YUV420 ,分辨率是736*576,我用YUVtool看输入的流生成的文件是正常的。且我用demo:   ./video_encode_io1_dm368.x470MV -c h264enc -i VD_0001.YUV -o test.264 -r 736x576 -n 58

    是可生成264文件的。也就是说源是没有问题的。差别在于我的代码是使用的mcvip和capture的buf而没有用OSA_cmemAlloc分配新的buffer从文件读取而已。

    概括来说我capture到视频数据后用resizer把422的数据转换成420的然后交给codecengine去encoder,我觉得这样可以实现的,现在只能怀疑这些buf是不是在codecengine做虚拟转物理的时候失败了导致DSP拿不到数据。。。

    下面是proces在执行时打印的一些信息:

    @15,667,107us: [+0 T:0x4180c320] ti.sdo.ce.video1.VIDENC1 - VIDENC1_process> Enter (handle=0x2e6150, inBufs=0x4180ba0c, outBufs=0x4180bb70, inArgs=0x4180bb64, outArgs=0x4180badc)

    @15,667,385us: [+5 T:0x4180c320] CV - VISA_entvpfe_vdint1_isr,894

    er(visa=0x2e6150): algHandle = 0x2e6188

    @15,667,526us: [+0 T:0x4180c320] ti.sdo.ce.alg.Algorithm - Algorithm_activate> Enter(alg=0x2e6188)

    @15,667,779us: [+0 T:0x4180c320] ti.sdo.ce.alg.Algorithm - Algorithm_activate> Exit

    @15,667,989us: [+5 T:0x4180c320] CV - VISA_exit(visa=0x2e6150): algHandle = 0x2e6188

    @15,668,153us: [+0 T:0x4180c320] ti.sdo.ce.alg.Algorithm - Algorithm_deactivate> Enter(alg=0x2e6188)

    @15,668,362us: [+0vpfe_vdint1_isr,894

    T:0x4180c320] ti.sdo.ce.alg.Algorithm - Algorithm_deactivate> Exit

    @15,668,495us: [+0 T:0x4180c320] ti.sdo.ce.video1.VIDENC1 - VIDENC1_process> Exit (handle=0x2e6150, retVal=0xffffffff)

    请帮忙分析,谢谢!!!

  • "是可生成264文件的。也就是说源是没有问题的。差别在于我的代码是使用的mcvip和capture的buf而没有用OSA_cmemAlloc分配新的buffer从文件读取而已", 这个原因是可能的,codec要求的输入buffer是在cmem里的,

    你可以做实验,在cmem里申请一个buffer,把capture到的数据copy到cmem buffer里,然后看看是否codec可以被执行

  • 确实是因为我给codec的数据和create时配置的不一致造成的,万谢!

    因为配置时没有考虑对齐的问题,所以导致我实际采集的数据和配置的有误差。

    至于在cmem重新申请内存我试着总是申请失败,可能跟我申请的位置有关吧。

  • 解决了就好,一定要仔细呀