Hallo,
ich versuche auf Ubuntu Trusty armhf (14.04) das vdr-plugin-markad aus dem vdr-developer git zu bauen. Leider schlägt das bei der Datei decoder.cpp fehl - sieh spoiler, wohl weil die Version der von Ubuntu mitgelieferten libav-9.18/libavcodec54 nicht sauber erkannt wird und deswegen die "#if LIBAVCODEC_VERSION_INT" nicht greifen. Libavcodec.so ist Version 54.53.0 - sollte also passen und nicht im else-Zweig enden - siehe Code. Klappt die Versionsberechnung unter armhf so nicht?
#if LIBAVCODEC_VERSION_INT >= ((54<<16)+(51<<8)+100)
video_context = avcodec_alloc_context3(NULL);
#else
video_context = avcodec_alloc_context();
#endif
make[1]: Entering directory `/home/tom/vdr/PLUGINS/src/vdr-plugin-markad/command'
g++ -g -rdynamic -O3 -funroll-loops -Wall -Wextra -Woverloaded-virtual -Wno-parentheses -c -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D__STDC_CONSTANT_MACROS -D__USE_XOPEN_EXTENDED markad-standalone.cpp
markad-standalone.cpp: In static member function ‘static void* cOSDMessage::send(void*)’:
markad-standalone.cpp:161:53: warning: argument to ‘sizeof’ in ‘void* memcpy(void*, const void*, size_t)’ call is the same expression as the source; did you mean to provide an explicit length? [-Wsizeof-pointer-memaccess]
memcpy(&name.sin_addr.s_addr,host->h_addr,sizeof(host->h_addr));
^
g++ -g -rdynamic -O3 -funroll-loops -Wall -Wextra -Woverloaded-virtual -Wno-parentheses -c -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D__STDC_CONSTANT_MACROS -D__USE_XOPEN_EXTENDED decoder.cpp
decoder.cpp: In constructor ‘cMarkAdDecoder::cMarkAdDecoder(bool, int)’:
decoder.cpp:265:38: error: ‘av_free’ was not declared in this scope
av_free(video_context);
^
decoder.cpp:288:42: error: ‘av_free’ was not declared in this scope
av_free(video_context);
^
decoder.cpp: In destructor ‘cMarkAdDecoder::~cMarkAdDecoder()’:
decoder.cpp:336:30: error: ‘av_free’ was not declared in this scope
av_free(video_context);
^
decoder.cpp: In member function ‘bool cMarkAdDecoder::Clear()’:
decoder.cpp:351:36: error: ‘avcodec_alloc_context’ was not declared in this scope
dest=avcodec_alloc_context();
^
decoder.cpp:362:30: error: ‘av_free’ was not declared in this scope
av_free(video_context);
^
make[1]: *** [decoder.o] Error 1
make[1]: Leaving directory `/home/tom/vdr/PLUGINS/src/vdr-plugin-markad/command'
make[1]: Entering directory `/home/tom/vdr/PLUGINS/src/vdr-plugin-markad/plugin'
g++ -g -O3 -Wall -march=native -mtune=native -Werror=overloaded-virtual -Wno-parentheses -fPIC -c -D_GNU_SOURCE -DPLUGIN_NAME_I18N='"markad"' -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -I../../../../include markad.cpp
g++ -g -O3 -Wall -march=native -mtune=native -Werror=overloaded-virtual -Wno-parentheses -fPIC -shared markad.o status.o menu.o setup.o -o libvdr-markad.so
cp --remove-destination libvdr-markad.so ../../../lib/libvdr-markad.so.2.2.0
cp: cannot create regular file ‘../../../lib/libvdr-markad.so.2.2.0’: No such file or directory
make[1]: *** [libvdr-markad.so] Error 1
make[1]: Leaving directory `/home/tom/vdr/PLUGINS/src/vdr-plugin-markad/plugin'
make: *** [all] Error 2
Danke & Gruß, ollo