From: "Zhao, Halley" <halley.z...@intel.com> add possible C++ based library dependency add multiple packages dependency for one component add h264dec basing on libyami --- configure | 78 ++++++++++++++++++++++++++++++++++++-------------- libavcodec/Makefile | 1 + libavcodec/allcodecs.c | 1 + 3 files changed, 59 insertions(+), 21 deletions(-)
diff --git a/configure b/configure index a0dbafb..8131935 100755 --- a/configure +++ b/configure @@ -239,6 +239,7 @@ External library support: --enable-libspeex enable Speex de/encoding via libspeex [no] --enable-libssh enable SFTP protocol via libssh [no] --enable-libstagefright-h264 enable H.264 decoding via libstagefright [no] + --enable-libyami-h264 enable H.264 decoding via libyami [no] --enable-libtheora enable Theora encoding via libtheora [no] --enable-libtwolame enable MP2 encoding via libtwolame [no] --enable-libutvideo enable Ut Video encoding and decoding via libutvideo [no] @@ -1023,11 +1024,12 @@ int main(void){ return (int) foo; } EOF } -check_func_headers(){ - log check_func_headers "$@" - headers=$1 - funcs=$2 - shift 2 +check_func_headers_(){ + log check_func_headers_ "$@" + compiler=$1 + headers=$2 + funcs=$3 + shift 3 { for hdr in $headers; do print_include $hdr @@ -1036,7 +1038,10 @@ check_func_headers(){ echo "long check_$func(void) { return (long) $func; }" done echo "int main(void) { return 0; }" - } | check_ld "cc" "$@" && enable $funcs && enable_safe $headers + } | check_ld "$compiler" "$@" && enable $funcs && enable_safe $headers +} +check_func_headers() { + check_func_headers_ "cc" "$@" } check_class_headers_cpp(){ @@ -1095,20 +1100,26 @@ check_lib_cpp(){ check_class_headers_cpp "$headers" "$classes" "$@" && add_extralibs "$@" } -check_pkg_config(){ - log check_pkg_config "$@" - pkgandversion="$1" - pkg="${1%% *}" - headers="$2" - funcs="$3" - shift 3 - check_cmd $pkg_config --exists --print-errors $pkgandversion || return - pkg_cflags=$($pkg_config --cflags $pkg_config_flags $pkg) - pkg_libs=$($pkg_config --libs $pkg_config_flags $pkg) - check_func_headers "$headers" "$funcs" $pkg_cflags $pkg_libs "$@" && +check_pkg_config_(){ + log check_pkg_config_ "$@" + compiler="$1" + ## one component may depend on multiple pkgs + allpkgs="$2" + pkg="${2%% *}" + headers="$3" + funcs="$4" + shift 4 + check_cmd $pkg_config --exists --print-errors $allpkgs || return + pkg_cflags=$($pkg_config --cflags $pkg_config_flags $allpkgs) + pkg_libs=$($pkg_config --libs $pkg_config_flags $allpkgs) + log "compiler:" "$compiler" "; headers:" "$headers" "; funcs:" "$funcs" + check_func_headers_ "$compiler" "$headers" "$funcs" $pkg_cflags $pkg_libs "$@" && set_safe ${pkg}_cflags $pkg_cflags && set_safe ${pkg}_libs $pkg_libs } +check_pkg_config() { + check_pkg_config_ "cc" "$@" +} check_exec(){ check_ld "cc" "$@" && { enabled cross_compile || $TMPE >> $logfile 2>&1; } @@ -1208,15 +1219,37 @@ require_cpp(){ check_lib_cpp "$headers" "$classes" "$@" || die "ERROR: $name not found" } -use_pkg_config(){ - pkg="$1" - check_pkg_config "$@" || return 1 +use_pkg_config_(){ + log "use_pkg_config_:" "$@" + pkg="$2" + check_pkg_config_ "$@" || return 1 add_cflags $(get_safe ${pkg}_cflags) add_extralibs $(get_safe ${pkg}_libs) } +use_pkg_config(){ + use_pkg_config_ "cc" "$@" +} + +require_pkg_config_(){ + use_pkg_config_ "$@" || die "ERROR: $pkg not found using pkg-config$pkg_config_fail_message" +} + +cxx_extralibs_added="no" +add_cxx_extralibs(){ + if [ "$cxx_extralibs_added" = "no" ]; then + add_extralibs "-lstdc++ -Wl,--no-as-needed -ldl" + cxx_extralibs_added="yes" + fi +} + require_pkg_config(){ - use_pkg_config "$@" || die "ERROR: $pkg not found using pkg-config$pkg_config_fail_message" + require_pkg_config_ "cc" "$@" +} + +require_pkg_config_cxx(){ + require_pkg_config_ "cxx" "$@" + add_cxx_extralibs } require_libfreetype(){ @@ -1381,6 +1414,7 @@ EXTERNAL_LIBRARY_LIST=" libspeex libssh libstagefright_h264 + libyami_h264 libtheora libtwolame libutvideo @@ -2379,6 +2413,7 @@ libspeex_decoder_deps="libspeex" libspeex_encoder_deps="libspeex" libspeex_encoder_select="audio_frame_queue" libstagefright_h264_decoder_deps="libstagefright_h264" +libyami_h264_decoder_deps="libyami_h264" libtheora_encoder_deps="libtheora" libtwolame_encoder_deps="libtwolame" libvo_aacenc_encoder_deps="libvo_aacenc" @@ -4909,6 +4944,7 @@ enabled libspeex && require_pkg_config speex speex/speex.h speex_decode enabled libstagefright_h264 && require_cpp libstagefright_h264 "binder/ProcessState.h media/stagefright/MetaData.h media/stagefright/MediaBufferGroup.h media/stagefright/MediaDebug.h media/stagefright/MediaDefs.h media/stagefright/OMXClient.h media/stagefright/OMXCodec.h" android::OMXClient -lstagefright -lmedia -lutils -lbinder -lgnustl_static +enabled libyami_h264 && require_pkg_config_cxx "libyami_decoder libva" VideoDecoderHost.h createVideoDecoder enabled libtheora && require libtheora theora/theoraenc.h th_info_init -ltheoraenc -ltheoradec -logg enabled libtwolame && require libtwolame twolame.h twolame_init -ltwolame && { check_lib twolame.h twolame_encode_buffer_float32_interleaved -ltwolame || diff --git a/libavcodec/Makefile b/libavcodec/Makefile index 80ee389..c95d2d1 100644 --- a/libavcodec/Makefile +++ b/libavcodec/Makefile @@ -750,6 +750,7 @@ OBJS-$(CONFIG_LIBSHINE_ENCODER) += libshine.o OBJS-$(CONFIG_LIBSPEEX_DECODER) += libspeexdec.o OBJS-$(CONFIG_LIBSPEEX_ENCODER) += libspeexenc.o OBJS-$(CONFIG_LIBSTAGEFRIGHT_H264_DECODER)+= libstagefright.o +OBJS-$(CONFIG_LIBYAMI_H264_DECODER) += libyami.o OBJS-$(CONFIG_LIBTHEORA_ENCODER) += libtheoraenc.o OBJS-$(CONFIG_LIBTWOLAME_ENCODER) += libtwolame.o OBJS-$(CONFIG_LIBUTVIDEO_DECODER) += libutvideodec.o diff --git a/libavcodec/allcodecs.c b/libavcodec/allcodecs.c index 29b45f3..d2c245e 100644 --- a/libavcodec/allcodecs.c +++ b/libavcodec/allcodecs.c @@ -97,6 +97,7 @@ void avcodec_register_all(void) REGISTER_HWACCEL(WMV3_VDPAU, wmv3_vdpau); /* video codecs */ + REGISTER_DECODER(LIBYAMI_H264, libyami_h264); REGISTER_ENCODER(A64MULTI, a64multi); REGISTER_ENCODER(A64MULTI5, a64multi5); REGISTER_DECODER(AASC, aasc); -- 1.8.3.2 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel