kdenlive SVN compilation problem with latest ffmpeg

Hello,

This was noticed by JB.
compiling kdenlive svn fails with latest ffmpeg :

Quote:
[ 53%] Building CXX object kdenlive/CMakeFiles/kdenlive.dir/krender.o
In file included from /home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp:28:
/usr/include/ffmpeg/libavformat/avformat.h:40:32: error: libavcodec/avcodec.h: Aucun fichier ou répertoire de ce type
/usr/include/ffmpeg/libavformat/avformat.h:170:5: warning: "AV_VERSION_INT" is not defined
/usr/include/ffmpeg/libavformat/avformat.h:170:5: error: missing binary operator before token "("
/usr/include/ffmpeg/libavformat/avformat.h:549:5: warning: "AV_VERSION_INT" is not defined
/usr/include/ffmpeg/libavformat/avformat.h:549:5: error: missing binary operator before token "("
In file included from /home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp:28:
/usr/include/ffmpeg/libavformat/avformat.h:135: error: expected initializer before ‘attribute_deprecated’
/usr/include/ffmpeg/libavformat/avformat.h:155: error: ‘AVRational’ does not name a type
/usr/include/ffmpeg/libavform
at/avformat.h:160: error: use of enum ‘PixelFormat’ without previous declaration
/usr/include/ffmpeg/libavformat/avformat.h:194: error: use of enum ‘CodecID’ without previous declaration
/usr/include/ffmpeg/libavformat/avformat.h:195: error: use of enum ‘CodecID’ without previous declaration
/usr/include/ffmpeg/libavformat/avformat.h:211: error: use of enum ‘CodecID’ without previous declaration
/usr/include/ffmpeg/libavformat/avformat.h:313: error: ISO C++ forbids declaration of ‘AVCodecContext’ with no type
/usr/include/ffmpeg/libavformat/avformat.h:313: error: expected ‘;’ before ‘*’ token
/usr/include/ffmpeg/libavformat/avformat.h:322: error: ‘AVRational’ does not name a type
/usr/include/ffmpeg/libavformat/avformat.h:336: error: ‘AVRational’ does not name a type
/usr/include/ffmpeg/libavformat/avformat.h:340: error: use of enum ‘AVDiscard’ without previous declaration
/usr/include/ffmpeg/libavformat/avformat.h:399: error: use of enum ‘AVDiscard’ without previous declaration
/usr/include/ffmpeg/libavformat/avformat.h:409: error: ‘AVRational’ does not name a type
/usr/include/ffmpeg/libavformat/avformat.h:424: error: ISO C++ forbids declaration of ‘AVClass’ with no type
/usr/include/ffmpeg/libavformat/avformat.h:424: error: expected ‘;’ before ‘*’ token
/usr/include/ffmpeg/libavformat/avformat.h:510: error: use of enum ‘CodecID’ without previous declaration
/usr/include/ffmpeg/libavformat/avformat.h:515: error: use of enum ‘CodecID’ without previous declaration
/usr/include/ffmpeg/libavformat/avformat.h:520: error: use of enum ‘CodecID’ without previous declaration
/usr/include/ffmpeg/libavformat/avformat.h:557: error: use of enum ‘CodecID’ without previous declaration
/usr/include/ffmpeg/libavformat/avformat.h:557: error: invalid type in declaration before ‘;’ token
/usr/include/ffmpeg/libavformat/avformat.h:573: error: use of enum ‘CodecID’ without previous declaration
/usr/include/ffmpeg/libavformat/avformat.h:574: error: use of enum ‘CodecType’ without previous declaration
/usr/include/ffmpeg/libavformat/avformat.h:574: error: invalid type in declaration before ‘;’ token
/usr/include/ffmpeg/libavformat/avformat.h:625: error: use of enum ‘CodecID’ without previous declaration
/usr/include/ffmpeg/libavformat/avformat.h:625: error: invalid type in declaration before ‘;’ token
/usr/include/ffmpeg/libavformat/avformat.h:626: error: use of enum ‘CodecID’ without previous declaration
/usr/include/ffmpeg/libavformat/avformat.h:785: error: ‘AVRational’ has not been declared
/usr/include/ffmpeg/libavformat/avformat.h:933: error: expected constructor, destructor, or type conversion before ‘int’
/usr/include/ffmpeg/libavformat/avformat.h:939: error: expected constructor, destructor, or type conversion before ‘int’
In file included from /home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp:35:
/usr/share/qt3/include/qxml.h:227: warning: ‘class QXmlReader’ has virtual functions but non-virtual destructor
/usr/share/qt3/include/qxml.h:410: warning: ‘class QXmlContentHandler’ has virtual functions but non-virtual destructor
/usr/share/qt3/include/qxml.h:427: warning: ‘class QXmlErrorHandler’ has virtual functions but non-virtual destructor
/usr/share/qt3/include/qxml.h:436: warning: ‘class QXmlDTDHandler’ has virtual functions but non-virtual destructor
/usr/share/qt3/include/qxml.h:444: warning: ‘class QXmlEntityResolver’ has virtual functions but non-virtual destructor
/usr/share/qt3/include/qxml.h:451: warning: ‘class QXmlLexicalHandler’ has virtual functions but non-virtual destructor
/usr/share/qt3/include/qxml.h:464: warning: ‘class QXmlDeclHandler’ has virtual functions but non-virtual destructor
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.h: In constructor ‘KRender::KRender(const QString&, QWidget*, const char*, int, int)’:
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.h:204: warning: ‘KRender::m_externalwinid’ will be initialized after
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.h:184: warning: ‘double KRender::m_framePosition’
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp:73: warning: when initialized here
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.h:187: warning: ‘KRender::m_generateScenelist’ will be initialized after
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.h:156: warning: ‘bool KRender::isBlocked’
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp:73: warning: when initialized here
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp:88: warning: deprecated conversion from string constant to ‘char*’
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp:93: warning: deprecated conversion from string constant to ‘char*’
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp:119: warning: deprecated conversion from string constant to ‘char*’
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp: At global scope:
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp:171: warning: unused parameter ‘self’
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp: In member function ‘int KRender::resetRendererProfile(char*)’:
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp:202: warning: deprecated conversion from string constant to ‘char*’
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp:228: warning: deprecated conversion from string constant to ‘char*’
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp: In member function ‘QPixmap KRender::extractFrame(int, int, int)’:
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp:300: warning: deprecated conversion from string constant to ‘char*’
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp: In member function ‘QPixmap KRender::getVideoThumbnail(QString, int, int, int)’:
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp:349: warning: deprecated conversion from string constant to ‘char*’
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp: In member function ‘void KRender::getImage(KURL, int, QPoint)’:
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp:370: warning: deprecated conversion from string constant to ‘char*’
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp: In member function ‘void KRender::getFileProperties(KURL, uint)’:
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp:461: warning: converting to ‘int’ from ‘double’
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp:479: warning: deprecated conversion from string constant to ‘char*’
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp:506: error: ‘struct AVStream’ has no member named ‘codec’
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp:507: error: ‘struct AVStream’ has no member named ‘codec’
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp:508: error: ‘struct AVStream’ has no member named ‘codec’
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp:509: error: ‘struct AVStream’ has no member named ‘codec’
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp:517: error: ‘struct AVStream’ has no member named ‘codec’
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp:518: error: ‘struct AVStream’ has no member named ‘codec’
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp:519: error: ‘struct AVStream’ has no member named ‘codec’
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp:520: error: ‘struct AVStream’ has no member named ‘codec’
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp: In member function ‘void KRender::setSceneList(QDomDocument, int)’:
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp:615: warning: deprecated conversion from string constant to ‘char*’
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp:659: warning: deprecated conversion from string constant to ‘char*’
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp: In member function ‘const GenTime& KRender::seekPosition() const’:
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp:901: warning: returning reference to temporary
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp:902: warning: returning reference to temporary
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp: At global scope:
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp:931: warning: unused parameter ‘srcFileName’
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp:931: warning: unused parameter ‘port’
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp:931: warning: unused parameter ‘startTime’
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp:931: warning: unused parameter ‘endTime’
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp: In member function ‘void KRender::exportCurrentFrame(KURL, bool)’:
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp:947: warning: deprecated conversion from string constant to ‘char*’
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp: In member function ‘void KRender::mltCheckLength()’:
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp:995: warning: passing ‘double’ for argument 2 to ‘int Mlt::Playlist::remove_region(int, int)’
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp:997: warning: converting to ‘int’ from ‘double’
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp: In member function ‘void KRender::mltInsertClip(int, GenTime, QString)’:
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp:1030: warning: deprecated conversion from string constant to ‘char*’
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp:1034: warning: passing ‘double’ for argument 1 to ‘int Mlt::Playlist::insert_at(int, Mlt::Producer&, int)’
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp: In member function ‘void KRender::mltCutClip(int, GenTime)’:
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp:1052: warning: passing ‘double’ for argument 1 to ‘int Mlt::Playlist::split_at(int, bool)’
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp: In member function ‘void KRender::mltRemoveClip(int, GenTime)’:
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp:1066: warning: passing ‘double’ for argument 1 to ‘int Mlt::Playlist::get_clip_index_at(int)’
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp: In member function ‘void KRender::mltRemoveEffect(int, GenTime, QString, QString, int)’:
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp:1082: warning: passing ‘double’ for argument 1 to ‘Mlt::Producer* Mlt::Playlist::get_clip_at(int)’
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp: In member function ‘void KRender::mltAddEffect(int, GenTime, QString, QString, QMap)’:
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp:1122: warning: passing ‘double’ for argument 1 to ‘Mlt::Producer* Mlt::Playlist::get_clip_at(int)’
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp: In member function ‘void KRender::mltEditEffect(int, GenTime, int, QString, QString, QMap)’:
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp:1186: warning: passing ‘double’ for argument 1 to ‘Mlt::Producer* Mlt::Playlist::get_clip_at(int)’
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp: In member function ‘void KRender::mltResizeClipEnd(int, GenTime, GenTime, GenTime)’:
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp:1228: warning: passing ‘double’ for argument 1 to ‘bool Mlt::Playlist::is_blank_at(int)’
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp:1230: warning: passing ‘double’ for argument 1 to ‘int Mlt::Playlist::get_clip_index_at(int)’
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp:1233: warning: converting to ‘int’ from ‘double’
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp:1236: warning: passing ‘double’ for argument 2 to ‘int Mlt::Playlist::resize_clip(int, int, int)’
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp: In member function ‘void KRender::mltResizeClipStart(int, GenTime, GenTime, GenTime, GenTime, GenTime)’:
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp:1284: warning: converting to ‘int’ from ‘double’
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp:1289: warning: passing ‘double’ for argument 1 to ‘bool Mlt::Playlist::is_blank_at(int)’
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp:1291: warning: passing ‘double’ for argument 1 to ‘int Mlt::Playlist::get_clip_index_at(int)’
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp:1294: warning: passing ‘double’ for argument 2 to ‘int Mlt::Playlist::resize_clip(int, int, int)’
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp:1294: warning: passing ‘double’ for argument 3 to ‘int Mlt::Playlist::resize_clip(int, int, int)’
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp:1297: warning: converting to ‘int’ from ‘double’
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp: In member function ‘void KRender::mltMoveClip(int, int, int, int)’:
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp:1337: warning: unused variable ‘multiprod’
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp: In member function ‘void KRender::mltMoveTransition(QString, int, int, GenTime, GenTime, GenTime, GenTime)’:
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp:1374: warning: converting to ‘int’ from ‘double’
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp:1376: warning: converting to ‘int’ from ‘double’
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp:1377: warning: converting to ‘int’ from ‘double’
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp: In member function ‘void KRender::mltSavePlaylist()’:
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp:1437: warning: deprecated conversion from string constant to ‘char*’
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp: At global scope:
/home/jmpoure/logiciels/kdenlive/kdenlive/kdenlive/krender.cpp:171: warning: ‘void consumer_stopped(mlt_consumer_s*, KRender*, mlt_frame_s*)’ defined but not used
make[2]: *** [kdenlive/CMakeFiles/kdenlive.dir/krender.o] Erreur 1
make[1]: *** [kdenlive/CMakeFiles/kdenlive.dir/all] Erreur 2
make: *** [all] Erreur 2

Any idea how to fix this problem?

You probably need to update the include path in the file krender.cpp and then re-compile Kdenlive.

I had the same problem with Open Movie Editor and here's how I fixed it:

http://stream0.org/2008/05/new-ffmpeg-c ... s-loc.html

The later versions of FFmpeg broke quite a few pieces of software. OME has released a new version that now works with recent FFmpeg SVN snapshots, but for Kdenlive in the meantime you might need to make these manual edits.