Hello, I was compiling Gem against a recent ffmpeg and noticed that it still uses the img_convert call, along with, perhaps, some other deprecated functionality. I patched it [img_convert] out thusly:
(filmFFMPEG.cpp @ 314) // was: if (img_convert(&rgba,dstfmt,&m_Picture,fmt,width,height)<0) //Patched to use swsscale instead of img_convert: static SwsContext *sws_context = NULL; sws_context = sws_getCachedContext(sws_context, width, height, fmt, width, height, dstfmt, 0, NULL, NULL, NULL); if (!sws_context) error("ffmpeg-conversion failed (%d->%d)", fmt, dstfmt); else if (sws_scale(sws_context, m_Picture.data, m_Picture.linesize, 0, height, rgba.data, rgba.linesize)<0) error("ffmpeg-conversion failed (%d->%d)", fmt, dstfmt);
(also added swscale.h to the header; added -lswscale with PKG_CONFIG_FFMPEG)
However, (a) I'm not sure this is a great option, since sws_getCachedContext will de- and re- allocate contexts repeatedly, e.g. if decoding multiple streams of different sizes. If there is there a way to make that SwsContext per-object, it would work better. (b) haven't found a test video that actually works yet (I have mostly .mkv's and ffmpeg gives a decode error on 'em). (c) From all the #defines in the code, it seems like multiple- version compatibility is really important, and -- of course -- this also breaks that. (d) there is other deprecated stuff yet to patch out, but see (c).
Anyway, figured I'd email this list and see if anyone was working on it or had suggestions.
Good day,
--Jim
hi
Quoting Jim McCann jmccann@cs.cmu.edu:
Anyway, figured I'd email this list and see if anyone was working on it or had suggestions.
i think the way to go is to drop the compiled in support for FFMPEG entirely, and move on to a more plugable system, such as the videIO experiment from last years GSoC project (which unfortunately got stuck in gstreamer)
fmgasd.r IOhannes
---------------------------------------------------------------- This message was sent using IMP, the Internet Messaging Program.