Pergunta

Tenho um problema em que quando um vídeo OpenMAX termina de ser reproduzido, o aplicativo trava com um Signal 6.

Aqui está meu código EOS no retorno de chamada do buffer.A falha também ocorre se eu parar o media player aqui e limpar a fila também.De acordo com alguns registros mais detalhados, envio um sinal EOS, o EOS é processado e depois trava.

Aqui está meu código para sinalizar um 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;

Meu rastro da Tombstone está aqui.

http://pastebin.com/CScimETt

Foi útil?

Solução

Você está recebendo uma falha de afirmação no 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 )

Parece que está insatisfeito com o fluxo de dados (o que é estranho - deve ser um erro, não uma afirmação fatal, se for esse o caso).

Sua melhor aposta é descobrir o que há no fluxo que o analisador libstagefright está sufocando.

A impressão digital da compilação indica que é um dispositivo mais antigo com uma compilação ICS (samsung/GT-I9100/GT-I9100:4.0.3/IML74K).Não vejo estruturas ICS/fontes AV no site de origem, mas o arquivo fonte do jellybean parece que provavelmente é a mesma coisa...o cheque está na linha 1033.Parece estar falhando ao tentar analisar o fluxo de transporte.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top