Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 392905 - media-sound/cmus-2.4.3 - ffmpeg.c:453:51: error: 'AV_DICT_IGNORE_SUFFIX' undeclared (first use in this function)
Summary: media-sound/cmus-2.4.3 - ffmpeg.c:453:51: error: 'AV_DICT_IGNORE_SUFFIX' unde...
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: New packages (show other bugs)
Hardware: x86 Linux
: Normal normal (vote)
Assignee: Christian Faulhammer (RETIRED)
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-12-02 11:50 UTC by Nils Holland
Modified: 2012-05-16 08:31 UTC (History)
1 user (show)

See Also:
Package list:
Runtime testing required: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Nils Holland 2011-12-02 11:50:30 UTC
Updating world just tried to pull in media-sound/cmus-2.4.3 to my system, which - however - doesn't seem to play nicely with media-video/ffmpeg-0.7.8. Here's what happens when trying to build it:

ffmpeg.c:59:0: warning: "AV_DICT_IGNORE_SUFFIX" redefined
/usr/include/libavutil/dict.h:29:0: note: this is the location of the previous definition
ffmpeg.c: In function 'ffmpeg_open':
ffmpeg.c:183:2: warning: 'av_open_input_file' is deprecated (declared at /usr/include/libavformat/avformat.h:1170)
ffmpeg.c: In function 'ffmpeg_read_comments':
ffmpeg.c:451:2: warning: 'AVMetadataTag' is deprecated (declared at /usr/include/libavutil/dict.h:36)
ffmpeg.c:453:2: warning: 'av_metadata_get' is deprecated (declared at /usr/include/libavformat/avformat.h:145)
ffmpeg.c:453:51: error: 'AV_DICT_IGNORE_SUFFIX' undeclared (first use in this function)
ffmpeg.c:453:51: note: each undeclared identifier is reported only once for each function it appears in
make: *** [ffmpeg.lo] Error 1
make: *** Waiting for unfinished jobs....

Looking into work/cmus-v2.4.3/ffmpeg.c, I find the following stuff that checks for the installed version of libavutil:

#if (LIBAVUTIL_VERSION_INT < ((51<<16)+(5<<8)+0))
#define AV_DICT_IGNORE_SUFFIX AV_METADATA_IGNORE_SUFFIX
#define av_dict_get av_metadata_get
#define AVDictionaryEntry AVMetadataTag
#endif

If I just take these lines out, cmus builds find, with just a few warnings, but nothing serious:

   CC     ffmpeg.lo
ffmpeg.c: In function 'ffmpeg_open':
ffmpeg.c:177:2: warning: 'av_open_input_file' is deprecated (declared at /usr/include/libavformat/avformat.h:1170)
   LD     ffmpeg.so
   CC     pulse.lo
   LD     pulse.so
   CC     alsa.lo
   CC     mixer_alsa.lo
   LD     alsa.so
   HOSTCC     Doc/ttman.o
Doc/ttman.c: In function 'output_buf':
Doc/ttman.c:582:8: warning: ignoring return value of 'fwrite', declared with attribute warn_unused_result
   HOSTLD     Doc/ttman
   MAN    Doc/cmus.1
   MAN    Doc/cmus-remote.1
   MAN    Doc/cmus-tutorial.7

Now, obviously the libavutil version check seems to be the culprit here. But...:

1) Is this already being done wrong by the code supplied by the cmus guys?

2) Or are we probably patching our ffmpeg, which in effect conflicts with the cmus guys' version check, which - of course - assumes an unmodifed ffmpeg?

3) If I weren't on a business trip right now (and thus busy ;-)) I'd - given enough time - assume that I could find these things out and probably even fix it correctly, but under my current circumstances I thought I'd probably just report it and let someone else take a look. ;-)

Reproducible: Always
Comment 1 Tim Harder gentoo-dev 2011-12-04 09:01:40 UTC
The problem is that it's the right version check for libav; however, ffmpeg upstream uses different API versioning scheme which makes it a hassle supporting old and new versions of both ffmpeg and libav.
Comment 2 Tim Harder gentoo-dev 2011-12-04 09:08:35 UTC
Just to note, it probably builds fine with ffmpeg-0.8.7, but I haven't explicitly tested that.
Comment 3 Roman Asendorf 2011-12-19 17:40:17 UTC
(In reply to comment #2)
> Just to note, it probably builds fine with ffmpeg-0.8.7, but I haven't
> explicitly tested that.

I guess the necessary changes have been made in v0.8.7. I have not even tested excessively but this works for me on x86:

#Change necessary use flag:
echo "media-video/ffmpeg sdl -openssl" >> /etc/portage/package.use
#Unmasking ffmpeg-0.9
echo "=media-video/ffmpeg-0.9 **" >> /etc/portage/package.keywords

FYI: This is the same combo you get on x86_64 already with ACCEPT_KEYWORDS="~amd64".
Therefor I had to specify the "!openssl" use for media-video/ffmpeg as well.

# Emerge and feel lucky
emerge -av ffmpeg cmus

Don't forget to run revdep-rebuild ;)
Comment 4 Tomáš Chvátal (RETIRED) gentoo-dev 2012-05-16 08:31:34 UTC
I bumped the dep on virtual to require newer version of ffmpeg when stabilising it. -> bug is fixed.