OpenMax ALはシグナル6(SIGABRT)でクラッシュします。メディアサーバーダイ

StackOverflow https://stackoverflow.com//questions/25036807

質問

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;
.

私の墓石のトレースはここにあります。

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行にあります。トランスポートストリームを解析しようとしている間に失敗しているようです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top