I've been trying so hard not to resort to the forums for this problem, but I have been looking for an answer for weeks now and haven't found it.

I'm trying to compile ffmpeg with a few extras like mp3 enabled. Configuring goes ok, but when I try to build, I get this: (I'll only post the relevent bit at the end)

Code:

dsputil.c: In function `h263_v_loop_filter_c':
dsputil.c:2685: error: `ENABLE_H263_ENCODER' undeclared (first use in this function)
dsputil.c:2685: error: (Each undeclared identifier is reported only once
dsputil.c:2685: error: for each function it appears in.)
dsputil.c:2685: error: `ENABLE_H263P_ENCODER' undeclared (first use in this function)
dsputil.c:2685: error: `ENABLE_MPEG4_ENCODER' undeclared (first use in this function)
dsputil.c:2685: error: `ENABLE_MSMPEG4V1_ENCODER' undeclared (first use in this function)
dsputil.c:2685: error: `ENABLE_MSMPEG4V2_ENCODER' undeclared (first use in this function)
dsputil.c:2685: error: `ENABLE_MSMPEG4V3_ENCODER' undeclared (first use in this function)
dsputil.c: In function `h263_h_loop_filter_c':
dsputil.c:2722: error: `ENABLE_H263_ENCODER' undeclared (first use in this function)
dsputil.c:2722: error: `ENABLE_H263P_ENCODER' undeclared (first use in this function)
dsputil.c:2722: error: `ENABLE_MPEG4_ENCODER' undeclared (first use in this function)
dsputil.c:2722: error: `ENABLE_MSMPEG4V1_ENCODER' undeclared (first use in this function)
dsputil.c:2722: error: `ENABLE_MSMPEG4V2_ENCODER' undeclared (first use in this function)
dsputil.c:2722: error: `ENABLE_MSMPEG4V3_ENCODER' undeclared (first use in this function)
dsputil.c: In function `dsputil_init':
dsputil.c:4247: error: `ENABLE_H263_ENCODER' undeclared (first use in this function)
dsputil.c:4247: error: `ENABLE_H263P_ENCODER' undeclared (first use in this function)
dsputil.c:4247: error: `ENABLE_MPEG4_ENCODER' undeclared (first use in this function)
dsputil.c:4247: error: `ENABLE_MSMPEG4V1_ENCODER' undeclared (first use in this function)
dsputil.c:4247: error: `ENABLE_MSMPEG4V2_ENCODER' undeclared (first use in this function)
dsputil.c:4247: error: `ENABLE_MSMPEG4V3_ENCODER' undeclared (first use in this function)
make[1]: *** [dsputil.o] Error 1
make[1]: Leaving directory `/home/wilsonj/Desktop/ffmpeg/libavcodec'
make: *** [lib] Error 2

I've googled around so much and I'm still not sure why this won't work. any help?

David the H.

01-17-2009 06:52 AM

Just to eliminate the obvious, have you made sure that all the library header packages are also installed? If you want to include liblame, for example, you need to have the liblame-dev package installed also. These packages include the header files that are needed to actually compile the program. Configure scripts don't always check for the existence of headers.

How do I find the names of the header files?? I've been searching the deb archive but to no avail.

Before I was trying to install with TONS of things enabled. I've cut it down to

Code:

./configure --enable-shared --enable-libmp3lame --enable-libvorbis

but I still get the same message.

David the H.

01-22-2009 07:25 AM

Header (a.k.a. development file) packages nearly always have the same name as the library package, with "-dev" tacked on to the end. So if you install libmp3lame, there should also be a libmp3lame-dev package available. Occasionally there will be slight variations in the package names, but it's still easy to figure them out. An apt search on my system currently shows libvorbis as package name "libvorbis0a", but the headers are all in "libvorbis-dev" (no number), for example.

Jinouchi

01-23-2009 10:35 AM

Well, I installed the ffmpeg version from the debian-multimedia sources using apt, and that solved my problem of not being able to encode mp3 audio, so I guess all is well for now.

For future reference though, how do I know which codecs I have installed? I understand that the header files are in the "-dev" packages, but I don't know what non dev ones I already have, so I don't know what dev ones I need.

David the H.

01-23-2009 11:14 AM

Have a look in /usr/include; I think that's where most of the headers are installed.

Other than that, I don't think there's any easy way to tell. You just have to use your package manager and some guesswork to figure it out. I usually go carefully through the output of the ./configure process myself to see what libraries it's checking for, then confirm that the dev packages are installed for all of them.