Compile error

Forum for questions and support relating to the 1.24.x releases only.
Locked
majost
Posts: 14
Joined: Sun Oct 12, 2008 9:36 pm

co

Post by majost »

zoneminder wrote:Updated. Slights tweaks to RTSP streaming and other minor web and script issues.
I have a compile time error which appears to be related to the changes to RTSP streaming.

Code: Select all

i486-linux-gnu-g++ -DHAVE_CONFIG_H -I. -I..  -I/usr/include -I/usr/include -Wall -Wno-sign-compare -fno-inline  -frepo -DZM_FFMPEG_CVS -DHAVE_LIBCRYPTO -MT zm_regexp.o -MD -MP -MF .deps/zm_regexp.Tpo -c -o zm_regexp.o zm_regexp.cpp
zm_regexp.cpp: In constructor ‘RegExpr::RegExpr(const char*, int, int)’:
zm_regexp.cpp:42: warning: suggest parentheses around assignment used as truth value
mv -f .deps/zm_regexp.Tpo .deps/zm_regexp.Po
i486-linux-gnu-g++ -DHAVE_CONFIG_H -I. -I..  -I/usr/include -I/usr/include -Wall -Wno-sign-compare -fno-inline  -frepo -DZM_FFMPEG_CVS -DHAVE_LIBCRYPTO -MT zm_remote_camera.o -MD -MP -MF .deps/zm_remote_camera.Tpo -c -o zm_remote_camera.o zm_remote_camera.cpp
mv -f .deps/zm_remote_camera.Tpo .deps/zm_remote_camera.Po
i486-linux-gnu-g++ -DHAVE_CONFIG_H -I. -I..  -I/usr/include -I/usr/include -Wall -Wno-sign-compare -fno-inline  -frepo -DZM_FFMPEG_CVS -DHAVE_LIBCRYPTO -MT zm_remote_camera_http.o -MD -MP -MF .deps/zm_remote_camera_http.Tpo -c -o zm_remote_camera_http.o zm_remote_camera_http.cpp
zm_remote_camera_http.cpp: In member function ‘int RemoteCameraHttp::GetResponse()’:
zm_remote_camera_http.cpp:613: warning: format not a string literal and no format arguments
mv -f .deps/zm_remote_camera_http.Tpo .deps/zm_remote_camera_http.Po
i486-linux-gnu-g++ -DHAVE_CONFIG_H -I. -I..  -I/usr/include -I/usr/include -Wall -Wno-sign-compare -fno-inline  -frepo -DZM_FFMPEG_CVS -DHAVE_LIBCRYPTO -MT zm_remote_camera_rtsp.o -MD -MP -MF .deps/zm_remote_camera_rtsp.Tpo -c -o zm_remote_camera_rtsp.o zm_remote_camera_rtsp.cpp
zm_remote_camera_rtsp.cpp: In member function ‘virtual int RemoteCameraRtsp::PostCapture(Image&)’:
zm_remote_camera_rtsp.cpp:233: error: ‘SWS_BICUBIC’ was not declared in this scope
zm_remote_camera_rtsp.cpp:233: error: ‘sws_getContext’ was not declared in this scope
zm_remote_camera_rtsp.cpp:238: error: ‘sws_scale’ was not declared in this scope
make[3]: *** [zm_remote_camera_rtsp.o] Error 1
make[3]: Leaving directory `/home/majost/src/zoneminder-1.24.0/src'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/home/majost/src/zoneminder-1.24.0'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/home/majost/src/zoneminder-1.24.0'
make: *** [build-stamp] Error 2
dpkg-buildpackage: failure: debian/rules build gave error exit status 2
User avatar
cordel
Posts: 5210
Joined: Fri Mar 05, 2004 4:47 pm
Location: /USA/Washington/Seattle

Post by cordel »

Correct, ffmpeg is required with swscale option.
majost
Posts: 14
Joined: Sun Oct 12, 2008 9:36 pm

Post by majost »

cordel wrote:Correct, ffmpeg is required.
Ah.. Fixed that much, but now have an issue where zoneminder is trying to use call the function ff_dynarray_add.

Code: Select all

zm_sdp.o: In function `sdp_parse_line':
/home/majost/src/zoneminder-1.24.0/src/zm_sdp.c:418: undefined reference to `ff_dynarray_add'
Unfortunately the version of ffmpeg included with Ubuntu Intrepid (current beta scheduled for final release this month) uses an ffmpeg from back in Febuary. It appears the ffmpeg maintainers re-factored this function in late April. http://lists.mplayerhq.hu/pipermail/ffm ... 13443.html

For now, I am just making a distribution/package specific patch to revert the function name to __dynarray_add. Unfortunately, I don't currently possess the skills to make a smarter patch for all. =(


EDIT: For those interested in the patch that cures the undefined reference to `ff_dynarray_add` on Ubuntu (or any other distribution), the patch is as follows:

Code: Select all

diff -rN -u old-zoneminder-1.24.0/src/zm_sdp.c new-zoneminder-1.24.0/src/zm_sdp.c
--- old-zoneminder-1.24.0/src/zm_sdp.c  2008-10-12 15:39:46.000000000 -0700
+++ new-zoneminder-1.24.0/src/zm_sdp.c  2008-10-12 15:39:46.000000000 -0700
@@ -25,7 +25,7 @@
 // Part of libavformat/avformat.h that is usually obscured
 //
 
-void ff_dynarray_add(unsigned long **tab_ptr, int *nb_ptr, unsigned long elem);
+void __dynarray_add(unsigned long **tab_ptr, int *nb_ptr, unsigned long elem);
 
 #ifdef __GNUC__
 #define dynarray_add(tab, nb_ptr, elem)\
@@ -33,12 +33,12 @@
     typeof(tab) _tab = (tab);\
     typeof(elem) _elem = (elem);\
     (void)sizeof(**_tab == _elem); /* check that types are compatible */\
-    ff_dynarray_add((unsigned long **)_tab, nb_ptr, (unsigned long)_elem);\
+    __dynarray_add((unsigned long **)_tab, nb_ptr, (unsigned long)_elem);\
 } while(0)
 #else
 #define dynarray_add(tab, nb_ptr, elem)\
 do {\
-    ff_dynarray_add((unsigned long **)(tab), nb_ptr, (unsigned long)(elem));\
+    __dynarray_add((unsigned long **)(tab), nb_ptr, (unsigned long)(elem));\
 } while(0)
 #endif
User avatar
cordel
Posts: 5210
Joined: Fri Mar 05, 2004 4:47 pm
Location: /USA/Washington/Seattle

Post by cordel »

Or you could build a more current ffmpeg from source :wink:
Tanks for the time and patch, I'm sure it will help others how have an older package version of ffmpeg.
kylejohnson
Posts: 260
Joined: Tue Aug 21, 2007 1:42 pm
Location: Baltimore, MD

Post by kylejohnson »

cordel wrote:Or you could build a more current ffmpeg from source :wink:
Tanks for the time and patch, I'm sure it will help others how have an older package version of ffmpeg.
I did just that, using svn from ffmpeg.:

Code: Select all

root@cosmos:~/ffmpeg# cat version.h
#define FFMPEG_VERSION "SVN-r16286"
and still receive the same error.
nuck
Posts: 148
Joined: Tue Nov 11, 2008 1:43 am
Location: Canada

Post by nuck »

kylejohnson wrote: I did just that, using svn from ffmpeg.:

Code: Select all

root@cosmos:~/ffmpeg# cat version.h
#define FFMPEG_VERSION "SVN-r16286"
and still receive the same error.
Just a thought, but did you clean out the older version of ffmpeg before installing the newer version? If so (or not), did you then do a make clean and then another configure run... ?
Locked