OpenMAX AL выходит из строя с сигналом 6 (SIGABRT).Медиа-сервер умирает
-
21-12-2019 - |
Вопрос
У меня проблема, когда после завершения воспроизведения видео 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;
Мой след на надгробии здесь.
Решение
Вы получаете ошибку утверждения в 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.Похоже, при попытке проанализировать транспортный поток происходит сбой.