library tracing

Place to discuss Fedora and/or Red Hat
Post Reply
worker201
guru
guru
Posts: 668
Joined: Sun Jun 13, 2004 6:38 pm
Location: Hawaii

library tracing

Post by worker201 » Tue May 10, 2005 5:00 pm

I am having a problem using transcode - it cannot find the mpa codec. According to a guy on the transcode help-list, this means that libavcodec.so was built without mpa support. So what I need to do is figure out which package this library came from, so I can remove it and then rebuild manually to suit my needs. There has to be some way to do this - any ideas? Probably some advanced option for searching the rpm database (the lib was probably installed by some synaptic package), but I'm not sure how to do it.

User avatar
Void Main
Site Admin
Site Admin
Posts: 5716
Joined: Wed Jan 08, 2003 5:24 am
Location: Tuxville, USA
Contact:

Post by Void Main » Tue May 10, 2005 5:58 pm

On my system /usr/lib/libavcodec.so is part of the ffmpeg-0.4.9-0.20050427.1.1.fc3 RPM:

Code: Select all

$ locate libavcodec.so
$ rpm -qif /usr/lib/libavcodec.so
Name        : ffmpeg                       Relocations: (not relocatable)
Version     : 0.4.9                             Vendor: Freshrpms.net
Release     : 0.20050427.1.1.fc3            Build Date: Thu 05 May 2005 06:44:39 AM CDT
Install Date: Sun 08 May 2005 01:48:39 PM CDT      Build Host: python2.freshrpms.net
Group       : System Environment/Libraries   Source RPM: ffmpeg-0.4.9-0.20050427.1.1.fc3.src.rpm
Size        : 2815508                          License: GPL
Signature   : DSA/SHA1, Thu 05 May 2005 06:45:32 AM CDT, Key ID 692ac459e42d547b
Packager    : Matthias Saou <matthias@rpmforge.net>
URL         : http://ffmpeg.sourceforge.net/
Summary     : Hyper fast MPEG1/MPEG4/H263/RV and AC3/MPEG audio encoder and decoder
Description :
FFmpeg is a very fast video and audio converter. It can also grab from a
live audio/video source.
The command line interface is designed to be intuitive, in the sense that
ffmpeg tries to figure out all the parameters, when possible. You have
usually to give only the target bitrate you want. FFmpeg can also convert
from any sample rate to any other, and resize video on the fly with a high
quality polyphase filter.

Available rpmbuild rebuild options :
--without : lame vorbis faad faac xvid a52dec altivec
Now, I grabbed the source for this and looked through the configure options and saw nothing related to mpa (unless it's called something else):

Code: Select all

$ apt-get source ffmpeg
$ cd ~/redhat/SOURCES
$ tar -xvjf FFMpeg*
$ cd FFMpeg-20050427
$ ./configure --help

Usage: configure [options]
Options: [defaults in brackets after descriptions]

Standard options:
  --help                   print this message
  --prefix=PREFIX          install in PREFIX []
  --libdir=DIR             install libs in DIR [PREFIX/lib]
  --mandir=DIR             man documentation in DIR [PREFIX/man]
  --enable-mp3lame         enable mp3 encoding via libmp3lame [default=no]
  --enable-libogg          enable ogg support via libogg [default=no]
  --enable-vorbis          enable vorbis support via libvorbis [default=no]
  --enable-theora          enable theora support via libtheora [default=no]
  --enable-faad            enable faad support via libfaad [default=no]
  --enable-faadbin         build faad support with runtime linking [default=no]
  --enable-faac            enable faac support via libfaac [default=no]
  --enable-xvid            enable xvid support via xvidcore [default=no]
  --enable-x264            enable H.264 encoding via x264 [default=no]
  --enable-mingw32         enable mingw32 native/cross windows compile
  --enable-a52             enable GPL'ed A52 support [default=no]
  --enable-a52bin          open liba52.so.0 at runtime [default=no]
  --enable-dts             enable GPL'ed DTS support [default=no]
  --enable-pp              enable GPL'ed post processing support [default=no]
  --enable-shared-pp       use libpostproc.so [default=no]
  --enable-shared          build shared libraries [default=no]
  --enable-amr_nb          enable amr_nb float audio codec
  --enable-amr_nb-fixed    use fixed point for amr-nb codec
  --enable-amr_wb          enable amr_wb float audio codec
  --enable-sunmlib         use Sun medialib [default=no]
  --enable-pthreads        use pthreads [default=no]
  --enable-dc1394          enable IIDC-1394 grabbing using libdc1394 and libraw1394 [default=no]
  --enable-gpl             allow use of gpl code, the resulting libav* and ffmpeg will be under gpl [default=no]
Advanced options (experts only):
  --source-path=PATH       path of source code []
  --cross-prefix=PREFIX    use PREFIX for compile tools []
  --cc=CC                  use C compiler CC []
  --make=MAKE              use specified make []
  --extra-cflags=ECFLAGS   add ECFLAGS to CFLAGS []
  --extra-ldflags=ELDFLAGS add ELDFLAGS to LDFLAGS []
  --extra-libs=ELIBS       add ELIBS []
  --cpu=CPU                force cpu to CPU  []
  --tune=PROCESSOR         tune code for a particular CPU (may fails or misperforms on other CPUs)
  --powerpc-perf-enable    enable performance report on PPC (requires enabling PMC)
  --disable-mmx            disable mmx usage
  --disable-altivec        disable AltiVec usage
  --disable-audio-oss      disable OSS audio support [default=no]
  --disable-audio-beos     disable BeOS audio support [default=no]
  --disable-v4l            disable video4linux grabbing [default=no]
  --disable-dv1394         disable DV1394 grabbing [default=no]
  --disable-network        disable network support [default=no]
  --disable-zlib           disable zlib [default=no]
  --disable-simple_idct    disable simple IDCT routines [default=no]
  --disable-vhook          disable video hooking support
  --enable-gprof           enable profiling with gprof []
  --disable-debug          disable debugging symbols
  --disable-opts           disable compiler optimizations
  --disable-mpegaudio-hp   faster (but less accurate)
                           mpegaudio decoding [default=no]
  --disable-ffserver       disable ffserver build
  --disable-ffplay         disable ffplay build
  --enable-small           optimize for size instead of speed
  --enable-memalign-hack   emulate memalign, interferes with memory debuggers
  --disable-strip          disable stripping of executables and shared libraries

NOTE: The object files are build at the place where configure is launched

worker201
guru
guru
Posts: 668
Joined: Sun Jun 13, 2004 6:38 pm
Location: Hawaii

Post by worker201 » Tue May 10, 2005 6:04 pm

I wonder what that --enable-gpl does, exactly? That sounds extremely fishy, and it is something that a package distributor would have done.

Well, I'll probably try to run through ffmpeg, and we'll see how it goes.

Looks like transcode requires ffmpeg to run, so I'll have to install it from source too. But that's okay, because the list-guy says that 0.6.14, which is the newest available from apt, is really ancient.

User avatar
Void Main
Site Admin
Site Admin
Posts: 5716
Joined: Wed Jan 08, 2003 5:24 am
Location: Tuxville, USA
Contact:

Post by Void Main » Tue May 10, 2005 6:38 pm

Why not just create a new ffmpeg RPM with the latest source and the options you want?

Here's the options used in the spec file:

Code: Select all

%configure \
%ifnarch %{ix86}
    --disable-mmx \
%endif
%ifarch x86_64
    --extra-cflags="-fPIC" \
%endif
    %{!?_without_lame:   --enable-mp3lame} \
    %{!?_without_vorbis: --enable-libogg --enable-vorbis} \
    %{!?_without_faad:   --enable-faad} \
    %{!?_without_faac:   --enable-faac} \
    %{!?_without_xvid:   --enable-xvid} \
    %{!?_without_a52:    --enable-a52 --enable-a52bin} \
    --enable-pp \     --enable-shared-pp \
    --enable-shared \
    --enable-gpl \
    --disable-opts \
    --disable-strip
As you can see the "--enable-gpl" is used and if that is causing the problem you could just remove it from the spec file and rebuild it:

$ rpmbuild -ba ffmpeg.spec

Post Reply