TI中文支持网
TI专业的中文技术问题搜集分享网站

请教关于decLink解码h264报错的问题(outArgs->viddec3OutArgs.extendedError for channel 0 Error: 0x401)

群内的朋友,IT的专家你们好!

   我使用的开发环境为8127, ipn_rdk v3.8

  我在使用decLink解码h264的数据时总是报0x401错误,具体错误代码如下:

[m3video] 15136:DECLINK::links_m3video/iva_dec/decLink_h264.c:[302]::INTERNAL ERROR:-1
[m3video] ALGPROCESS FAILED:STATUS
[m3video] outArgs->viddec3OutArgs.extendedError for channel 0 Error: 0x401

我的decLink的有关代码如下:

UInt32 idx, channum = 1;
DecLink_CreateParams decPrm;
DecLink_CreateParams_Init(&decPrm);
for (idx = 0; idx < channum; ++idx)
{
decPrm.chCreateParams[idx].format = IVIDEO_H264HP;//IVIDEO_MPEG4SP;
// 0–IH264VDEC_PROFILE_BASELINE;1–Main Profile;2–High Profile;3–IH264VDEC_PROFILE_ANY
decPrm.chCreateParams[idx].profile = /*IH264VDEC_PROFILE_ANY;*/3;
decPrm.chCreateParams[idx].fieldMergeDecodeEnable = FALSE;
decPrm.chCreateParams[idx].targetMaxWidth = 1280;
decPrm.chCreateParams[idx].targetMaxHeight = 720;
decPrm.chCreateParams[idx].defaultDynamicParams.targetFrameRate = 30;
decPrm.chCreateParams[idx].defaultDynamicParams.targetBitRate = 4 * 1000 * 1000; // 4M
/* Max ref frames is only 2 as this is closed loop decoder */
decPrm.chCreateParams[idx].dpbBufSizeInFrames = 2;
}
decPrm.inQueParams.prevLinkId = prevLinkId;
decPrm.inQueParams.prevLinkQueId = 0;
decPrm.outQueParams.nextLink = nextLinkId;
decPrm.tilerEnable = FALSE;
decPrm.numBufPerPool[0] = 4;//NUM_DECODE_BUFFERS;
System_linkCreate(decLinkId, &decPrm, sizeof(decPrm));

我查了下h264 decoder的pdf文档:0x401的错误为:

0bit–Error code(IH264VDEC_ERR_NOSLICE)–Explanation(Not even a single error-free slice header found in this process call,did not start MB loop)
10bit–Error code(XDM_INSUFFICIENTDATA)
–Explanation(Insufficient input data)

从错误信息上反映好像是输入的h264码流数据不正确, 我使用的1280×720.h264我检查了下视频是可以播放的.

具体传进去的帧内容为如下:

第1帧: 00 00 00 01 27 … 00 00 00 01 28 …. 00 00 00 01 06 …. 00 00 00 01 25 …

第2帧: 00 00 00 01 06 …. 00 00 00 01 21 …

请教下,这个错误到底是什么原因呢? 我怎样改正呢,先谢谢了!!!

jensen zhang:

咳,没人能帮助我吗? 卡了好几天了,不知道该怎样做

Chris Meng:

回复 jensen zhang:

你好,

是只有一个视频无法解码,还是你尝试的264视频都无法解码?

你板子上的JTAG口没有接出来?你手上有仿真器么?如果有的话,在codecs目录下h264dec有基于CCS的读文件解码的测试例程,你可以在测试例程里面尝试解码,看是否能成功?

对了,你是使用什么工具确认你的h264码流是没有问题的?是Vega分析工具么?

jensen zhang:

回复 Chris Meng:

Chris Meng: 你好!谢谢你的回复..汗,我只是用vlc播放了待测试的视频,能正常播放…我确实没有用Vega等工具去分析… 一般出现这个错误是因为视频数据有问题吗? 附件是我测试的一个视频之一(扩展名实际为h264,因网站不支持h264改成了mp4单击此处播放此视频
(function(id)
{var v = document.getElementById(id), isSafari = navigator.userAgent.indexOf(‘Safari’) != -1 && navigator.userAgent.indexOf(‘Chrome’) == -1;var op = v.style.position, ol = v.style.left, or = v.style.right, fe = [];var nodeLimit = 50;checkVideo = function() {if (!v.canPlayType || v.error) {var bound = 0;while (v.childNodes.length > 0 && bound 0 && bound < nodeLimit) {bound++;if (v.childNodes[0].nodeName != 'SOURCE') {fe[fe.length] = v.childNodes[0];v.parentNode.insertBefore(v.childNodes[0], v);}}window.setTimeout(checkVideoRendered, 249);} else if (v.readyState == 0) {window.setTimeout(checkVideo, 249);}},checkVideoRendered = function() {if (v.networkState == 1 && v.readyState == 4) {v.style.position = op;v.style.left = ol;v.style.right = or;for (var i = 0; i < fe.length; i++) {fe[i].parentNode.removeChild(fe[i]);}} else {window.setTimeout(checkVideoRendered, 249);}}if (navigator.userAgent.indexOf('iPad') == -1 && navigator.userAgent.indexOf('iPhone') == -1 && navigator.userAgent.indexOf('iPod') == -1) {window.setTimeout(checkVideo, 249);}
})('v_42fc2ebf4f0e4ee8a21fa64816a519a4');

jensen zhang:

回复 Chris Meng:

Chris Meng:你好!首先非常感谢你的回复…我用encLink编码了一段数据保存成了h264文件, 然后elecard这个工具分析了此文件,
内容是没有问题的.我看了内容依次是:
H264 Sequence Parameter Set
H264 Picture Parameter Set
H264 SETI
I slice # 0
P slice #1
….
我还有什么别的地方去查找下原因吗?

jensen zhang:

回复 jensen zhang:

搞掂了…待解码的数据放错了地方..

Da mi:

回复 jensen zhang:

你好 我也遇到了该问题 请问能加下qq吗 812965284

赞(0)
未经允许不得转载:TI中文支持网 » 请教关于decLink解码h264报错的问题(outArgs->viddec3OutArgs.extendedError for channel 0 Error: 0x401)
分享到: 更多 (0)