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 секции).

Другие вопросы по тегам