OpenMAX AL在信号6 (SIGABRT)时崩溃.媒体服务器死亡

OpenMAX AL crashes with Signal 6 (SIGABRT). Media Server dies

本文关键字:崩溃 媒体 服务器 SIGABRT AL 信号 OpenMAX      更新时间:2023-10-16

我有一个问题,当一个OpenMAX视频完成播放,应用程序崩溃与信号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;

My Tombstone trace is here

http://pastebin.com/CScimETt

在stagefright出现断言失败:

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 )

看起来它对数据流不满意(这很奇怪——如果是这种情况,应该是一个错误,而不是一个致命的断言)。

最好的办法是弄清楚libstagefright解析器阻塞的流是什么。

构建指纹表示这是具有ICS构建(samsung/GT-I9100/GT-I9100:4.0.3/IML74K)的旧设备。我没有在源站点上看到ICS框架/av源文件,但是jellybean源文件看起来可能是一样的…支票在1033线上。在尝试解析传输流时似乎失败。