[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: pkg/48116 (multimedia/ffmpeg / ffplay do not build)
The following reply was made to PR pkg/48116; it has been noted by GNATS.
From: Stefan Schaeckeler <schaecsn%gmx.net@localhost>
Subject: Re: pkg/48116 (multimedia/ffmpeg / ffplay do not build)
Date: Sun, 1 Sep 2013 13:13:39 -0700 (PDT)
> > The second part of my bug report, the linking issue of ffplay (perhaps
> only on Linux?), is not yet addressed.
> Separate bug reports for separate problems makes lives easier :)
I can't disagree, but here we have to deal with a package that was
artificially split into two packages by the pkgsrc team. So problems and
solutions are interleaved. I looked into the ffplay linker problem:
1. Need to know:
With configure option --disable-asm, the library libavcodec is solely build
from sources in ./ffmpeg-1.2.1/libavcodec/.
Without option --disable-asm, most files are taken from
./ffmpeg-1.2.1/libavcodec/ but others are taken from
2. At least on my machine:
configure option --disble-asm must be passed to gcc 4.3.3. Gcc 4.5 does not
need this option (at least not with CFLAGS+= -O2 -march=pentium4 -pipe)
3. my linker issue with the current pkgsrc Makefile in multimedia/ffplay is
for gcc 4.3.3 with configure option --disable-asm (without --disable-asm, I
run into the 'can't find a register' issue posted above):
libavcodec/libavcodec.so: undefined reference to `ff_mpeg_draw_horiz_band'
libavcodec/libavcodec.so: undefined reference to `ff_h264_draw_horiz_band'
These definitions are in
ff_mpeg_draw_horiz_band(MpegEncContext *s, int y, int h)
./ffmpeg-1.2.1/libavcodec/h264.c:void ff_h264_draw_horiz_band(H264Context *h,
int y, int height)
The Makefile in multimedia/ffmpeg does not trigger the compilation of these
two .c files. Experimenting showed that this is because configure option
--disable-decoders is passed in multimedia/ffplay/Makefile.
When configuring without option --disable-asm, alternative code is taken from
ffmpeg-1.2.1/libavcodec/x86/ that does not refer to these definitions.
4. Fix. I see several ways to proceed:
A. compile everything with gcc 4.5
Add GCC_REQD+= 4.5 to ffmpeg/Makefile.common. This makes sure that configure
option --disable-asm is not chosen.
B. Move the gcc version checks from ffmpeg/Makefile to ffmpeg/Makefile.common.
Make sure these checks pass --disable-asm to gcc 4.3.3. Then, also comment out
CONFIGURE_ARGS+= --disable-decoders in ffplay/Makefile for this version of gcc
to make sure mpegvideo.c and h264.c are compiled into libavcodec/libavcodec.so.
Main Index |
Thread Index |