From owner-freebsd-multimedia@FreeBSD.ORG Mon Apr 2 17:50:12 2007 Return-Path: X-Original-To: freebsd-multimedia@hub.freebsd.org Delivered-To: freebsd-multimedia@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id BDF4B16A403 for ; Mon, 2 Apr 2007 17:50:12 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [69.147.83.40]) by mx1.freebsd.org (Postfix) with ESMTP id 6A98313C44C for ; Mon, 2 Apr 2007 17:50:12 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) by freefall.freebsd.org (8.13.4/8.13.4) with ESMTP id l32HoCEr083372 for ; Mon, 2 Apr 2007 17:50:12 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.13.4/8.13.4/Submit) id l32HoCS8083371; Mon, 2 Apr 2007 17:50:12 GMT (envelope-from gnats) Date: Mon, 2 Apr 2007 17:50:12 GMT Message-Id: <200704021750.l32HoCS8083371@freefall.freebsd.org> To: freebsd-multimedia@FreeBSD.org From: Bill Fenner Cc: Subject: Re: ports/109379: ffmpeg-devel can't dynamically link to faad2 X-BeenThere: freebsd-multimedia@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: Bill Fenner List-Id: Multimedia discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 02 Apr 2007 17:50:12 -0000 The following reply was made to PR ports/109379; it has been noted by GNATS. From: Bill Fenner To: ahze@FreeBSD.org Cc: freebsd-gnats-submit@FreeBSD.org, freebsd-multimedia@FreeBSD.org Subject: Re: ports/109379: ffmpeg-devel can't dynamically link to faad2 Date: Mon, 2 Apr 2007 10:14:51 -0700 While faad 2.5,1 includes API compatability, as I stated in the description of the problem, the linkage that ffmpeg uses is not able to use that API compatability. This is because the faad API compatability is performed with #defines, and the ffmpeg linkage happens with fancy macros that put together the function names in a way that doesn't allow the #defines to work. (The dfaac() macro in libavcodec/faad.c uses "faacDec" ## a to put symbols together to get, e.g. faacDecGetErrorMessage, into strings, which it then looks up in the shared library with dlsym(), which never gives the "compatability API" a chance to get in the middle). Were you able to get the steps in "how-to-repeat:" to work, or did you just close the PR because you think it is supposed to work? I think it is supposed to work too, but that doesn't mean it does. I spent an hour rebuilding faad (of which I already had 2.5,1 installed) and ffmpeg-devel (which I upgraded from ffmpeg-devel-0.4.9.c.2006032300_4 to ffmpeg-devel-0.4.9.c.2006032300_5) to make sure that the bug was still there. frogbits% pkg_info -I ffmpeg\* faad\* faad2-2.5,1 MPEG-2 and MPEG-4 AAC audio decoder ffmpeg-devel-0.4.9.c.2006032300_5 Hyper fast realtime audio/video encoder/converter, streamin frogbits% ffmpeg -i Diego-2.mp4 /tmp/foo.mpeg FFmpeg version CVS, Copyright (c) 2000-2004 Fabrice Bellard configuration: --cc=cc --prefix=/usr/local --make=gmake --disable-debug --enable-memalign-hack --enable-shared --source-path=/usr/ports/multimedia/ffmpeg-devel/work/FFMpeg-2006032300 --enable-a52 --enable-dts --enable-faac --enable-faad --enable-faadbin --enable-gpl --enable-libgsm --enable-mp3lame --enable-libogg --enable-pp --enable-pthreads --enable-vorbis --enable-x264 --enable-xvid libavutil version: 49.0.0 libavcodec version: 51.8.0 libavformat version: 50.4.0 built on Apr 2 2007 10:02:29, gcc: 3.4.4 [FreeBSD] 20050518 Seems that stream 0 comes from film source: 24000.00 (24000/1) -> 23.98 (24000/1001) Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'Diego-2.mp4': Duration: 00:42:45.1, start: 0.000000, bitrate: 1129 kb/s Stream #0.0(eng), 23.98 fps(r): Video: mpeg4, yuv420p, 640x480 Stream #0.1(eng): Audio: aac, 44100 Hz, stereo Output #0, mpeg, to '/tmp/foo.mpeg': Stream #0.0, 23.98 fps(c): Video: mpeg1video, yuv420p, 640x480, q=2-31, 200 kb/s Stream #0.1: Audio: mp2, 44100 Hz, stereo, 64 kb/s Stream mapping: Stream #0.0 -> #0.0 Stream #0.1 -> #0.1 [aac @ 0x28356028]FAAD library: cannot resolve faacDecGetErrorMessage in libfaad.so.0! Error while opening codec for input stream #0.1 Bill