OpenMax al崩溃了信号6(sigabrt)。媒体服务器模具
-
21-12-2019 - |
题
我有一个问题,在openmax视频完成播放时,应用程序崩溃了6.
这是缓冲区回调中的我的EOS代码。如果我在此停止媒体播放器并清除队列,也会发生崩溃。根据一些更详细的日志,我发送EOS信号,EOS被处理,然后崩溃。
这是我的代码,用于发出信号
// We reached the EOF or an I/O error occured
// Create EOS signal
XAAndroidBufferItem signal;
memset(&signal, 0, sizeof(XAAndroidBufferItem));
signal.itemKey = XA_ANDROID_ITEMKEY_EOS;
// Enqueue the error
if ((res = (*i_PlayerInputBufferInterface)->Enqueue(i_PlayerInputBufferInterface,
(void *)&EOS_BUFFER_CONTEXT, nullptr, 0, &signal, sizeof(XAuint32) * 2))
!= XA_RESULT_SUCCESS)
throw OpenMAXException("Could not enqueue EOS signal.", res);
// Update video state
i_IsEOF = true;
return XA_RESULT_SUCCESS;
.
我的墓碑痕迹在这里。
解决方案
您在stayfight中获得了断言失败:
A/ATSParser(21042): frameworks/av/media/libstagefright/mpeg2ts/ATSParser.cpp:1194 CHECK_EQ( sync_byte,0x47u) failed: 169 vs. 71
A/libc(21042): Fatal signal 6 (SIGABRT) at 0x00005232 (code=-6), thread 21385 (NuPlayerDriver )
.
看起来它对数据流不满意(奇怪 - 应该是一个错误,如果这是一个错误,不是致命的断言)。
你最好的选择是弄清楚libstagefight解析器窒息的流是什么。
构建指纹说,这是一个具有ICS构建(samsung/GT-I9100/GT-I9100:4.0.3/IML74K
)的旧设备。我没有看到源站点的ICS框架/ AV源 jellybean源文件看起来它可能是一样的...检查是在线1033上。试图解析传输流时它似乎失败。
不隶属于 StackOverflow