Android с включенным pthread_cancel? ffmpeg зависит от pthread_cancel
Я строю ffmpeg 2.1.3 в Android с версией ndk r9b.
Я использовал приведенную ниже команду.
./configure --enable-shared --prefix=/home/fbuild
--cross-prefix=arm-linux-androideabi-
--enable-cross-compile
--target-os=linux --arch=arm --enable-gpl
--enable-libx264 --extra-cflags=-I/home/fbuild/include
--extra-ldflags=-L/home/fbuild/lib --disable-doc
--disable-ffmpeg --enable-network --disable-ffplay
--disable-ffprobe --disable-ffserver --enable-avresample
--enable-decoders
--enable-encoders
--enable-muxers
--enable-demuxers
--enable-parsers --enable-protocols --enable-filters
--enable-avresample --disable-indevs --enable-indev=lavfi
--disable-outdevs --enable-hwaccels --enable-libx264
--enable-zlib --enable-muxer=md5 --enable-runtime-cpudetect
--cpu=cortex-a8
--enable-pthreads --enable-static
в config.log
main:ffconf.82qqjSTF.c(.text+0x4): error: undefined reference to '**pthread_cancel**
Что ясно указывает на то, что pthread_cancel недоступен.
Это существующая проблема, или у нас есть какое-то другое решение для того же?
Я включил "--enable-pthreads",
Я пытаюсь транслировать поток RTSP через UDP
Ваша помощь очень ценится. Благодарю.
1 ответ
Это существующая проблема?
Официальная документация NDK гласит:
pthread_cancel()
не будет поддерживаться в Bionic, потому что для этого потребуется значительно увеличить библиотеку C, что принесет очень мало пользы. [...] Все это противоречит целям дизайна Bionic. Если ваш код зависит от отмены потока, рассмотрите альтернативные варианты.
см. раздел Bionic Overview
При этом скрипт ffmpeg configure автоматически обнаруживает это:
if enabled pthreads; then
check_func pthread_cancel
fi
Поэтому я предполагаю, что ffmpeg имеет запасные варианты на стороне реализации, если pthread_cancel
недоступен (см. #if HAVE_PTHREAD_CANCEL
секции).