2013-09-30 2 views
0

Я создаю приложение для плеера для Android с новым API MediaCodec и MediaExtractor (доступно по API 16). Как правило, она работает хорошо, но иногда у меня есть аварии с очень бессмысленных сообщений:Android mediacodec crash

09-30 16:39:13.985: A/MediaCodec(6508): frameworks/av/media/libstagefright/MediaCodec.cpp:423 CHECK(buffer->meta()->findInt64("timeUs", &timeUs)) failed. 
09-30 16:39:13.985: A/libc(6508): Fatal signal 11 (SIGSEGV) at 0xdeadbaad (code=1), thread 12769 (MediaCodec_loop) 

Если бы хорошо, если кто-то может дать мне лучше понять, что происходит не так. Обычно авария происходит, когда я открываю видео, немного поиграю, уйду из него, перейдя на другое видео. Это происходит очень редко, но очень раздражает.

+1

Это провал утверждать внутри код медикакодека. Он ожидает найти временную метку и потерпеть неудачу. (Реализация libstagefright общается внутри с сообщениями пары имя/значение.) Какую версию Android вы используете? Номер строки немного выключен, но JB-MR1/JB-MR1.1 близок: https://android.googlesource.com/platform/frameworks/av/+/jb-mr1.1-release/media/libstagefright/ MediaCodec.cpp (см. Строку 421). – fadden

ответ

1

Наконец-то я выясню решение. Я отвечаю здесь, чтобы люди, которые нашли ту же проблему, могли это исправить.

Когда мой mediacodec играет ближе к концу файла, он не в очереди больше входного буфера в inputQueue, поэтому, когда необходимо из очереди буферов, он не может найти какой-либо буфер играть