我有一个问题,当 OpenMAX 视频播放完毕后,应用程序会因 Signal 6 而崩溃。
这是我在缓冲区回调中的 EOS 代码。如果我在这里停止媒体播放器并清除队列,也会发生崩溃。根据一些更详细的日志,我发送了一个 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;
我的墓碑痕迹在这里。