Bug 150083 - [patch] sysutils/xvidcap: many fixes (to build and features)
Summary: [patch] sysutils/xvidcap: many fixes (to build and features)
Status: Closed FIXED
Alias: None
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s) (show other bugs)
Version: Latest
Hardware: Any Any
: Normal Affects Only Me
Assignee: Thierry Thomas
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2010-08-29 13:30 UTC by David Naylor
Modified: 2010-09-06 06:31 UTC (History)
0 users

See Also:


Attachments
xvidcap.diff (7.04 KB, patch)
2010-09-01 07:37 UTC, David Naylor
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description David Naylor 2010-08-29 13:30:02 UTC
The following problems exist with xvidcap:
 1) fails to build when ffmpeg is installed (see ports/126826)
 2) embedded ffmpeg fails to build due to:
   2.1) v4l
   2.2) using mmx on amd64
   2.3) using x86 instructions on amd64
   2.4) searching for FreeBSD include files in wrong location

Fix: 

Apply the attached patch.  I've tested with using mpeg and flv output on amd64.
How-To-Repeat: For 1:
 # make -C /usr/ports/multimedia/ffmpeg install
 # make -C /usr/ports/sysutils/xvidcap all (fails to link)
For 2:
 # make -C /usr/ports/sysutils/xvidcap configure
 (notice output of configure and ffmpeg failing to build)
 (2.1 requires recent -current)
 (2.[23] require building in amd64 environment)
Comment 1 Edwin Groothuis freebsd_committer freebsd_triage 2010-08-29 13:30:16 UTC
Responsible Changed
From-To: freebsd-ports-bugs->thierry

Over to maintainer (via the GNATS Auto Assign Tool)
Comment 2 David Naylor 2010-09-01 07:37:14 UTC
Hi,

It looks like chromium enjoys eating my attachments.  See attached for my 
patch.  

Yes, I also encountered that problem.  I suspect it will take a while to track 
down this problem.  Even longer for me as I know nothing about X programming.  
I was hoping to upgrade incrementally, to see where the break was introduced.  

I had a look at the code and it looks like the problem may have been 
introduced in r101 (or the next revision).  The repository I looked at was at 
sourceforge.  

multimedia/recordmydesktop also uses shmstr.h (which was patched to 
shmproto.h).  That port may work and know how to use shm...

I will not have time over the next month, could you commit the attached patch 
in the interim?  That way there is a working xvidcap in ports.  

Regards,

David
Comment 3 Thierry Thomas freebsd_committer freebsd_triage 2010-09-05 22:16:14 UTC
> Here it is.  I added ``--disable-muxer=v4l --disable-muxer=v4l2'' to the 
> configure options for ffmpeg and reordered LDFLAGS (two lines down) moving the 
> ffmpeg includes first (so it will build when ffmpeg installed).  


For some reason, it does not build on my machine when the external
ffmpeg is installed. To fix it, I had to modify your patches.

Hereunder is the version working here, with or without ffmpeg; could you
please check if it's still OK for you?

--- xvidcap.diff begins here ---
diff -urN sysutils/xvidcap.orig/Makefile sysutils/xvidcap/Makefile
--- sysutils/xvidcap.orig/Makefile	2010-06-15 21:02:41.000000000 +0200
+++ sysutils/xvidcap/Makefile	2010-09-05 17:11:51.000000000 +0200
@@ -7,7 +7,7 @@
 
 PORTNAME=		xvidcap
 DISTVERSION=		1.1.4p1
-PORTREVISION=	8
+PORTREVISION=		9
 PORTEPOCH=		1
 CATEGORIES=		sysutils multimedia
 MASTER_SITES=		SF/${PORTNAME}/OldFiles
@@ -25,10 +25,10 @@
 
 GNU_CONFIGURE=		yes
 # Remove MAKE="${GMAKE}" after ffmpeg-devel's upgrade
-CONFIGURE_ENV=		CFLAGS="${CFLAGS} -I${LOCALBASE}/include"	\
-			LDFLAGS="-L${LOCALBASE}/lib"	\
+CONFIGURE_ENV=		CPPFLAGS="-I${LOCALBASE}/include"	\
+			LOCALBASE="${LOCALBASE}"		\
 			MAKE="${GMAKE}"
-CONFIGURE_ARGS=		-with-forced-embedded-ffmpeg	# To be removed after ffmpeg-devel's upgrade
+CONFIGURE_ARGS=		--with-forced-embedded-ffmpeg	# To be removed after ffmpeg-devel's upgrade
 
 USE_GMAKE=		yes	# To be removed after ffmpeg-devel's upgrade
 USE_GNOME=		glib20 libglade2
diff -urN sysutils/xvidcap.orig/files/patch-configure sysutils/xvidcap/files/patch-configure
--- sysutils/xvidcap.orig/files/patch-configure	2006-11-01 00:51:16.000000000 +0100
+++ sysutils/xvidcap/files/patch-configure	2010-09-05 22:17:58.000000000 +0200
@@ -1,5 +1,5 @@
---- configure.orig	Mon Oct 30 09:11:11 2006
-+++ configure	Tue Oct 31 19:26:30 2006
+--- configure.orig	2006-11-16 18:50:24.000000000 +0100
++++ configure	2010-09-05 22:17:41.000000000 +0200
 @@ -9078,7 +9078,7 @@
    echo $ECHO_N "(cached) $ECHO_C" >&6
  else
@@ -18,12 +18,179 @@
  
  else
    unset ac_cv_lib_Xmu_XmuClientWindow; echo "Couldn't find libXmu in LD_LIBRARY_PATH, checking X11 paths"; echo "$as_me:$LINENO: checking for XmuClientWindow in -lXmu" >&5
-@@ -9513,7 +9513,7 @@
+@@ -9513,11 +9513,11 @@
  # if cache empty (not tested or failed) and want static avcodec (then it failed) ...
  if ( `test \( \( x${ac_cv_lib_avutil_av_rescale+set} = x \) -a \( x$static_avutil = xyes \) \)` ) ; then
  	# build embedded ffmpeg
 -	echo "${MAKE-make}-ing prerequisite ffmpeg libraries" && ( cd ./ffmpeg/ && ./configure --cc=${CC} --enable-gpl ${ac_my_ffmpeg_cfg_lame_switch} --enable-pthreads --enable-swscaler --disable-ffserver --disable-ffplay && ln -s libavcodec/avcodec.h && ln -s libavformat/avformat.h && ln -s libavformat/avio.h && ln -s libavformat/rt*.h ./ && ln -s libavutil/common.h ./ && ln -s libavutil/avutil.h ./ && ln -s libavutil/mathematics.h ./ && ln -s libavutil/int*.h ./ && ln -s libavutil/rational.h ./ && ln -s libswscale/swscale.h ./ && ln -s libswscale/rgb2rgb.h . && ${MAKE-make} )
-+	echo "${MAKE-make}-ing prerequisite ffmpeg libraries" && ( cd ./ffmpeg/ && ./configure --cc=${CC} --extra-libs=-lm --disable-opts --enable-gpl ${ac_my_ffmpeg_cfg_lame_switch} --enable-pthreads --enable-swscaler --disable-ffserver --disable-ffplay && ln -s libavcodec/avcodec.h && ln -s libavformat/avformat.h && ln -s libavformat/avio.h && ln -s libavformat/rt*.h ./ && ln -s libavutil/common.h ./ && ln -s libavutil/avutil.h ./ && ln -s libavutil/mathematics.h ./ && ln -s libavutil/int*.h ./ && ln -s libavutil/rational.h ./ && ln -s libswscale/swscale.h ./ && ln -s libswscale/rgb2rgb.h . && ${MAKE-make} )
++	echo "${MAKE-make}-ing prerequisite ffmpeg libraries" && ( cd ./ffmpeg/ && ./configure --cc=${CC} --extra-cflags=${CPPFLAGS} --extra-libs=-lm --disable-opts --disable-muxer=v4l --disable-muxer=v4l2 --enable-gpl ${ac_my_ffmpeg_cfg_lame_switch} --enable-pthreads --enable-swscaler --disable-ffserver --disable-ffplay && ln -s libavcodec/avcodec.h && ln -s libavformat/avformat.h && ln -s libavformat/avio.h && ln -s libavformat/rt*.h ./ && ln -s libavutil/common.h ./ && ln -s libavutil/avutil.h ./ && ln -s libavutil/mathematics.h ./ && ln -s libavutil/int*.h ./ && ln -s libavutil/rational.h ./ && ln -s libswscale/swscale.h ./ && ln -s libswscale/rgb2rgb.h . && ${MAKE-make} )
  	#echo "${MAKE-make}-ing prerequisite ffmpeg libraries" && ( cd ./ffmpeg/ && ./configure --cc=${CC} ${ac_my_ffmpeg_cfg_lame_switch} --enable-pthreads --disable-ffserver --disable-ffplay && ln -s libavcodec/avcodec.h && ln -s libavformat/avformat.h && ln -s libavformat/avio.h && ln -s libavformat/rt*.h ./ && ln -s libavutil/common.h ./ && ln -s libavutil/avutil.h ./ && ln -s libavutil/mathematics.h ./ && ln -s libavutil/int*.h ./ && ln -s libavutil/rational.h ./ && ${MAKE-make} )
  	# try to link it statically, or reset cache, set static_avcodec=no
  	top_srcdir=`pwd`
+-	ac_my_ldflags_save=${LDFLAGS} ; LDFLAGS="${LDFLAGS} -L$top_srcdir/ffmpeg/libavcodec -L$top_srcdir/ffmpeg/libavformat -L$top_srcdir/ffmpeg/libavutil -L$top_srcdir/ffmpeg/libswscale"
++	ac_my_ldflags_save=${LDFLAGS} ; LOCALLIBPATH="-L$top_srcdir/ffmpeg/libavcodec -L$top_srcdir/ffmpeg/libavformat -L$top_srcdir/ffmpeg/libavutil -L$top_srcdir/ffmpeg/libswscale"
+ 	ac_my_cflags_save=${CFLAGS} ; CFLAGS="${CFLAGS} -I $top_srcdir -I$top_srcdir/ffmpeg/libavcodec -I$top_srcdir/ffmpeg/libavformat -I$top_srcdir/ffmpeg/libavutil -I$top_srcdir/ffmpeg/libswscale"
+ 
+ 
+@@ -9532,7 +9532,7 @@
+ 
+ echo -n "(static?) ... "
+ ac_check_lib_save_LIBS=$LIBS
+-LIBS="-Wl,-Bstatic -lavutil -Wl,-Bdynamic  $LIBS"
++LIBS="-Wl,-Bstatic -L$top_srcdir/ffmpeg/libavutil -lavutil -Wl,-Bdynamic $LIBS"
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h.  */
+ _ACEOF
+@@ -9599,7 +9599,7 @@
+ #define HAVE_LIBAVUTIL 1
+ _ACEOF
+ 
+-		LIBS="-Wl,-Bstatic -lavutil -Wl,-Bdynamic $LIBS"
++		LIBS="-Wl,-Bstatic -L$top_srcdir/ffmpeg/libavutil -lavutil -Wl,-Bdynamic $LIBS"
+ 
+ else
+   unset ac_cv_lib_avutil_av_rescale ; static_avcodec=no ; LDFLAGS=$ac_my_ldflags_save ; CFLAGS=$ac_my_cflags_save
+@@ -9618,7 +9618,7 @@
+   echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+   ac_check_lib_save_LIBS=$LIBS
+-LIBS="-lavutil  $LIBS"
++LIBS="-L$top_srcdir/ffmpeg/libavutil -lavutil $LIBS"
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h.  */
+ _ACEOF
+@@ -9680,7 +9680,7 @@
+ #define HAVE_LIBAVUTIL 1
+ _ACEOF
+ 
+-  LIBS="-lavutil $LIBS"
++  LIBS="-L$top_srcdir/ffmpeg/libavutil -lavutil $LIBS"
+ 
+ fi
+ 
+@@ -9703,7 +9703,7 @@
+ 
+ echo -n "(static?) ... "
+ ac_check_lib_save_LIBS=$LIBS
+-LIBS="-Wl,-Bstatic -lswscale -Wl,-Bdynamic $ac_my_swscale_libs $LIBS"
++LIBS="-Wl,-Bstatic -L$top_srcdir/ffmpeg/libswscale -lswscale -Wl,-Bdynamic $ac_my_swscale_libs $LIBS"
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h.  */
+ _ACEOF
+@@ -9770,7 +9770,7 @@
+ #define HAVE_LIBSWSCALE 1
+ _ACEOF
+ 
+-		LIBS="-Wl,-Bstatic -lswscale -Wl,-Bdynamic $LIBS"
++		LIBS="-Wl,-Bstatic -L$top_srcdir/ffmpeg/libswscale -lswscale -Wl,-Bdynamic $LIBS"
+ 
+ else
+   unset ac_cv_lib_swscale_sws_scale ; static_swscale=no ;
+@@ -9780,7 +9780,7 @@
+   echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+   ac_check_lib_save_LIBS=$LIBS
+-LIBS="-lswscale $ac_my_swscale_libs $LIBS"
++LIBS="-L$top_srcdir/ffmpeg/libswscale -lswscale $ac_my_swscale_libs $LIBS"
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h.  */
+ _ACEOF
+@@ -9842,7 +9842,7 @@
+ #define HAVE_LIBSWSCALE 1
+ _ACEOF
+ 
+-  LIBS="-lswscale $LIBS"
++  LIBS="-L$top_srcdir/ffmpeg/libswscale -lswscale $LIBS"
+ 
+ fi
+ 
+@@ -9868,7 +9868,7 @@
+ 
+ echo -n "(static?) ... "
+ ac_check_lib_save_LIBS=$LIBS
+-LIBS="-Wl,-Bstatic -lavcodec -Wl,-Bdynamic $ac_my_avcodec_libs $LIBS"
++LIBS="-Wl,-Bstatic -L$top_srcdir/ffmpeg/libavcodec -lavcodec -Wl,-Bdynamic $ac_my_avcodec_libs $LIBS"
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h.  */
+ _ACEOF
+@@ -9935,7 +9935,7 @@
+ #define HAVE_LIBAVCODEC 1
+ _ACEOF
+ 
+-		LIBS="-Wl,-Bstatic -lavcodec -Wl,-Bdynamic $LIBS"
++		LIBS="-Wl,-Bstatic -L$top_srcdir/ffmpeg/libavcodec -lavcodec -Wl,-Bdynamic $LIBS"
+ 
+ else
+   unset ac_cv_lib_avcodec_avcodec_encode_video ; static_avcodec=no ;
+@@ -9945,7 +9945,7 @@
+   echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+   ac_check_lib_save_LIBS=$LIBS
+-LIBS="-lavcodec $ac_my_avcodec_libs $LIBS"
++LIBS="-L$top_srcdir/ffmpeg/libavcodec -lavcodec $ac_my_avcodec_libs $LIBS"
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h.  */
+ _ACEOF
+@@ -10007,7 +10007,7 @@
+ #define HAVE_LIBAVCODEC 1
+ _ACEOF
+ 
+-  LIBS="-lavcodec $LIBS"
++  LIBS="-L$top_srcdir/ffmpeg/libavcodec -lavcodec $LIBS"
+ 
+ fi
+ 
+@@ -10033,7 +10033,7 @@
+ 
+ echo -n "(static?) ... "
+ ac_check_lib_save_LIBS=$LIBS
+-LIBS="-Wl,-Bstatic -lavformat -Wl,-Bdynamic $ac_my_avformat_libs $LIBS"
++LIBS="-Wl,-Bstatic -L$top_srcdir/ffmpeg/libavformat -lavformat -Wl,-Bdynamic $ac_my_avformat_libs $LIBS"
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h.  */
+ _ACEOF
+@@ -10100,7 +10100,7 @@
+ #define HAVE_LIBAVFORMAT 1
+ _ACEOF
+ 
+-		LIBS="-Wl,-Bstatic -lavformat -Wl,-Bdynamic $LIBS"
++		LIBS="-Wl,-Bstatic -L$top_srcdir/ffmpeg/libavformat -lavformat -Wl,-Bdynamic $LIBS"
+ 
+ else
+   unset ac_cv_lib_avformat_av_write_header ; static_avformat=no ;
+@@ -10110,7 +10110,7 @@
+   echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+   ac_check_lib_save_LIBS=$LIBS
+-LIBS="-lavformat $ac_my_avformat_libs $LIBS"
++LIBS="-L$top_srcdir/ffmpeg/libavformat -lavformat $ac_my_avformat_libs $LIBS"
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h.  */
+ _ACEOF
+@@ -10172,7 +10172,7 @@
+ #define HAVE_LIBAVFORMAT 1
+ _ACEOF
+ 
+-  LIBS="-lavformat $LIBS"
++  LIBS="-L$top_srcdir/ffmpeg/libavformat -lavformat $LIBS"
+ 
+ fi
+ 
+@@ -10206,7 +10206,7 @@
+ 
+ echo -n "(static?) ... "
+ ac_check_lib_save_LIBS=$LIBS
+-LIBS="-Wl,-Bstatic -lavcodec -Wl,-Bdynamic $ac_my_avcodec_libs $LIBS"
++LIBS="-Wl,-Bstatic -L$top_srcdir/ffmpeg/libavcodec -lavcodec -Wl,-Bdynamic $ac_my_avcodec_libs $LIBS"
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h.  */
+ _ACEOF
+@@ -10277,7 +10277,7 @@
+   echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+   ac_check_lib_save_LIBS=$LIBS
+-LIBS="-lavcodec $ac_my_avcodec_libs $LIBS"
++LIBS="-L$top_srcdir/ffmpeg/libavcodec -lavcodec $ac_my_avcodec_libs $LIBS"
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h.  */
+ _ACEOF
diff -urN sysutils/xvidcap.orig/files/patch-ffmpeg_Makefile sysutils/xvidcap/files/patch-ffmpeg_Makefile
--- sysutils/xvidcap.orig/files/patch-ffmpeg_Makefile	1970-01-01 01:00:00.000000000 +0100
+++ sysutils/xvidcap/files/patch-ffmpeg_Makefile	2010-09-05 16:48:42.000000000 +0200
@@ -0,0 +1,25 @@
+--- ffmpeg/Makefile.orig	2006-10-25 21:31:11.000000000 +0200
++++ ffmpeg/Makefile	2010-09-05 16:47:52.000000000 +0200
+@@ -6,7 +6,7 @@
+ 
+ VPATH=$(SRC_PATH)
+ 
+-CFLAGS=$(OPTFLAGS) -I$(BUILD_ROOT) -I$(SRC_PATH) -I$(SRC_PATH)/libavutil \
++CFLAGS=-I$(BUILD_ROOT) -I$(SRC_PATH) $(OPTFLAGS) -I$(SRC_PATH)/libavutil \
+        -I$(SRC_PATH)/libavcodec -I$(SRC_PATH)/libavformat -I$(SRC_PATH)/libswscale \
+        -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_ISOC9X_SOURCE
+ LDFLAGS+= -g
+@@ -55,11 +55,11 @@
+ OBJS = ffmpeg.o ffserver.o cmdutils.o ffplay.o
+ SRCS = $(OBJS:.o=.c) $(ASM_OBJS:.o=.s)
+ LDFLAGS := -L$(BUILD_ROOT)/libavformat -L$(BUILD_ROOT)/libavcodec -L$(BUILD_ROOT)/libavutil $(LDFLAGS)
+-EXTRALIBS := -lavformat$(BUILDSUF) -lavcodec$(BUILDSUF) -lavutil$(BUILDSUF) $(EXTRALIBS)
++EXTRALIBS := -L$(BUILD_ROOT)/libavformat -lavformat$(BUILDSUF) -L$(BUILD_ROOT)/libavcodec -lavcodec$(BUILDSUF) -L$(BUILD_ROOT)/libavutil -lavutil$(BUILDSUF) $(EXTRALIBS)
+ 
+ ifeq ($(CONFIG_SWSCALER),yes)
+ LDFLAGS+=-L./libswscale
+-EXTRALIBS+=-lswscale$(BUILDSUF)
++EXTRALIBS+=-L$(BUILD_ROOT)/libswscale -lswscale$(BUILDSUF)
+ endif
+ 
+ all: lib $(PROGS_G) $(PROGS) $(PROGTEST) $(VHOOK) $(QTFASTSTART) $(DOC)
diff -urN sysutils/xvidcap.orig/files/patch-ffmpeg_configure sysutils/xvidcap/files/patch-ffmpeg_configure
--- sysutils/xvidcap.orig/files/patch-ffmpeg_configure	2006-11-01 00:51:16.000000000 +0100
+++ sysutils/xvidcap/files/patch-ffmpeg_configure	2010-09-05 17:13:22.000000000 +0200
@@ -1,5 +1,5 @@
---- ffmpeg/configure.orig	Wed Oct 25 21:31:11 2006
-+++ ffmpeg/configure	Mon Oct 30 23:32:55 2006
+--- ffmpeg/configure.orig	2006-10-25 21:31:11.000000000 +0200
++++ ffmpeg/configure	2010-09-05 17:13:00.000000000 +0200
 @@ -556,7 +556,7 @@
  audio_oss="yes"
  dv1394="no"
@@ -9,6 +9,24 @@
  ;;
  GNU/kFreeBSD)
  v4l="no"
+@@ -1001,7 +1001,7 @@
+ 
+ # compute MMX state
+ if test $mmx = "default"; then
+-    if test $arch = "x86" -o $arch = "x86_64"; then
++    if test $arch = "x86"; then
+         mmx="yes"
+     else
+         mmx="no"
+@@ -1304,7 +1304,7 @@
+ # these are off by default, so fail if requested and not available
+ enabled dts     && require libdts dts.h dts_init -ldts -lm
+ enabled libgsm  && require libgsm gsm.h gsm_create -lgsm
+-enabled mp3lame && require LAME lame/lame.h lame_init -lmp3lame -lm
++enabled mp3lame && require LAME lame/lame.h lame_init -L${LOCALBASE}/lib -lmp3lame -lm
+ enabled vorbis  && require libvorbis vorbis/vorbisenc.h vorbis_info_init -lvorbis -lvorbisenc -logg
+ enabled libogg  && require libogg ogg/ogg.h ogg_sync_init -logg
+ enabled xvid    && require XviD xvid.h xvid_global -lxvidcore
 @@ -1514,9 +1514,6 @@
  check_cflags -Wall
  check_cflags -Wno-switch
diff -urN sysutils/xvidcap.orig/files/patch-ffmpeg_libavcodec_cabac.h sysutils/xvidcap/files/patch-ffmpeg_libavcodec_cabac.h
--- sysutils/xvidcap.orig/files/patch-ffmpeg_libavcodec_cabac.h	1970-01-01 01:00:00.000000000 +0100
+++ sysutils/xvidcap/files/patch-ffmpeg_libavcodec_cabac.h	2010-09-02 23:10:27.000000000 +0200
@@ -0,0 +1,12 @@
+--- ffmpeg/libavcodec/cabac.h.orig	2010-08-29 11:27:54.000000000 +0000
++++ ffmpeg/libavcodec/cabac.h	2010-08-29 11:28:07.000000000 +0000
+@@ -28,9 +28,6 @@
+ 
+ //#undef NDEBUG
+ #include <assert.h>
+-#ifdef ARCH_X86_64
+-#define ARCH_X86
+-#endif
+ #ifdef ARCH_X86
+ #include "x86_cpu.h"
+ #endif
diff -urN sysutils/xvidcap.orig/files/patch-ffmpeg_libavformat_grab-bktr.c sysutils/xvidcap/files/patch-ffmpeg_libavformat_grab-bktr.c
--- sysutils/xvidcap.orig/files/patch-ffmpeg_libavformat_grab-bktr.c	1970-01-01 01:00:00.000000000 +0100
+++ sysutils/xvidcap/files/patch-ffmpeg_libavformat_grab-bktr.c	2010-09-02 23:10:27.000000000 +0200
@@ -0,0 +1,16 @@
+--- ffmpeg/libavformat/grab_bktr.c~	2010-08-29 11:31:58.000000000 +0000
++++ ffmpeg/libavformat/grab_bktr.c	2010-08-29 11:32:13.000000000 +0000
+@@ -25,13 +25,8 @@
+  */
+ #include "avformat.h"
+ #if defined(__FreeBSD__)
+-# if __FreeBSD__ >= 502100
+ #  include <dev/bktr/ioctl_meteor.h>
+ #  include <dev/bktr/ioctl_bt848.h>
+-# else
+-#  include <machine/ioctl_meteor.h>
+-#  include <machine/ioctl_bt848.h>
+-# endif
+ #elif defined(__FreeBSD_kernel__)
+ # include <dev/bktr/ioctl_meteor.h>
+ # include <dev/bktr/ioctl_bt848.h>
diff -urN sysutils/xvidcap.orig/files/patch-src_Makefile.in sysutils/xvidcap/files/patch-src_Makefile.in
--- sysutils/xvidcap.orig/files/patch-src_Makefile.in	1970-01-01 01:00:00.000000000 +0100
+++ sysutils/xvidcap/files/patch-src_Makefile.in	2010-09-05 22:21:03.000000000 +0200
@@ -0,0 +1,22 @@
+--- src/Makefile.in.orig	2006-11-16 18:50:23.000000000 +0100
++++ src/Makefile.in	2010-09-05 22:20:46.000000000 +0200
+@@ -62,8 +62,8 @@
+ DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
+ depcomp = $(SHELL) $(top_srcdir)/depcomp
+ am__depfiles_maybe = depfiles
+-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+-	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
++COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(AM_CPPFLAGS) \
++	$(AM_CFLAGS) $(CFLAGS) $(INCLUDES) $(CPPFLAGS)
+ CCLD = $(CC)
+ LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+ SOURCES = $(xvidcap_SOURCES)
+@@ -347,7 +347,7 @@
+ 	-test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
+ xvidcap$(EXEEXT): $(xvidcap_OBJECTS) $(xvidcap_DEPENDENCIES) 
+ 	@rm -f xvidcap$(EXEEXT)
+-	$(LINK) $(xvidcap_LDFLAGS) $(xvidcap_OBJECTS) $(xvidcap_LDADD) $(LIBS)
++	$(LINK) $(xvidcap_LDFLAGS) $(xvidcap_OBJECTS) $(LIBS) $(xvidcap_LDADD)
+ 
+ mostlyclean-compile:
+ 	-rm -f *.$(OBJEXT)
diff -urN sysutils/xvidcap.orig/pkg-plist sysutils/xvidcap/pkg-plist
--- sysutils/xvidcap.orig/pkg-plist	2008-11-22 19:34:47.000000000 +0100
+++ sysutils/xvidcap/pkg-plist	2010-09-05 22:31:31.000000000 +0200
@@ -125,10 +125,6 @@
 share/gnome/help/xvidcap/it/figures/xvidcap-main-ctrl.png
 share/gnome/help/xvidcap/it/figures/xvidcap-warning.png
 share/gnome/help/xvidcap/it/xvidcap.xml
-share/locale/de/LC_MESSAGES/xvidcap.mo
-share/locale/en/LC_MESSAGES/xvidcap.mo
-share/locale/es/LC_MESSAGES/xvidcap.mo
-share/locale/it/LC_MESSAGES/xvidcap.mo
 share/omf/xvidcap/xvidcap-C.omf
 share/omf/xvidcap/xvidcap-de.omf
 share/omf/xvidcap/xvidcap-es.omf
--- xvidcap.diff ends here ---

Regards,
-- 
Th. Thomas.
Comment 4 David Naylor 2010-09-05 22:54:14 UTC
On Sunday 05 September 2010 23:16:14 Thierry Thomas wrote:
> > Here it is.  I added ``--disable-muxer=v4l --disable-muxer=v4l2'' to the
> > configure options for ffmpeg and reordered LDFLAGS (two lines down)
> > moving the ffmpeg includes first (so it will build when ffmpeg
> > installed).
> 
> For some reason, it does not build on my machine when the external
> ffmpeg is installed. To fix it, I had to modify your patches.
> 
> Hereunder is the version working here, with or without ffmpeg; could you
> please check if it's still OK for you?


It builds fine on my end, with and without ffmpeg.  
Comment 5 dfilter service freebsd_committer freebsd_triage 2010-09-06 06:29:05 UTC
thierry     2010-09-06 05:28:51 UTC

  FreeBSD ports repository

  Modified files:
    sysutils/xvidcap     Makefile pkg-plist 
    sysutils/xvidcap/files patch-configure patch-ffmpeg_configure 
  Added files:
    sysutils/xvidcap/files patch-ffmpeg_Makefile 
                           patch-ffmpeg_libavcodec_cabac.h 
                           patch-ffmpeg_libavformat_grab-bktr.c 
                           patch-src_Makefile.in 
  Log:
  Fix installation when the external ffmeg is installed, and fix on amd64.
  
  PR:             ports/150083
  Submitted by:   David Naylor <naylor.b.david (at) gmail.com>
  
  Revision  Changes    Path
  1.33      +4 -4      ports/sysutils/xvidcap/Makefile
  1.4       +171 -4    ports/sysutils/xvidcap/files/patch-configure
  1.1       +25 -0     ports/sysutils/xvidcap/files/patch-ffmpeg_Makefile (new)
  1.2       +20 -2     ports/sysutils/xvidcap/files/patch-ffmpeg_configure
  1.1       +12 -0     ports/sysutils/xvidcap/files/patch-ffmpeg_libavcodec_cabac.h (new)
  1.1       +16 -0     ports/sysutils/xvidcap/files/patch-ffmpeg_libavformat_grab-bktr.c (new)
  1.1       +22 -0     ports/sysutils/xvidcap/files/patch-src_Makefile.in (new)
  1.5       +0 -4      ports/sysutils/xvidcap/pkg-plist
_______________________________________________
cvs-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/cvs-all
To unsubscribe, send any mail to "cvs-all-unsubscribe@freebsd.org"
Comment 6 Thierry Thomas freebsd_committer freebsd_triage 2010-09-06 06:30:33 UTC
State Changed
From-To: feedback->closed


Committed, thanks!
Comment 7 Thierry Thomas freebsd_committer freebsd_triage 2014-06-01 07:23:21 UTC
State Changed
From-To: open->feedback


Hello, 

The reported problems are not specific to FreeBSD. Unfortunately, 
xvidcap depends on ffmpeg, which often breaks its API, and upstream does 
not catches all these updates... 

You forgot to add your patch to this PR, or it has been eaten by GNATS! 

Anyway, I have a patch which upgrades the port to the latest version, 
and builds again the external ffmpeg: 

--- xvidcap.diff begins here --- 
diff -urN sysutils/xvidcap.orig/Makefile sysutils/xvidcap/Makefile 
--- sysutils/xvidcap.orig/Makefile	2010-06-15 21:02:41.000000000 +0200 
+++ sysutils/xvidcap/Makefile	2010-08-31 23:38:19.000000000 +0200 
@@ -6,47 +6,59 @@ 
# 

PORTNAME=		xvidcap 
-DISTVERSION=		1.1.4p1 
-PORTREVISION=	8 
+PORTVERSION=		1.1.7 
PORTEPOCH=		1 
CATEGORIES=		sysutils multimedia 
-MASTER_SITES=		SF/${PORTNAME}/OldFiles 
+MASTER_SITES=		SF 

MAINTAINER=		thierry@FreeBSD.org 
COMMENT=		Capture your X display to individual frames or MPEG video 

-BUILD_DEPENDS=		rarian-sk-config:${PORTSDIR}/textproc/rarian	 
+BUILD_DEPENDS=		scrollkeeper-config:${PORTSDIR}/textproc/rarian	 
+			docbook2man:${PORTSDIR}/textproc/docbook2X	 
xml2po:${PORTSDIR}/textproc/gnome-doc-utils	 
-			texi2html:${PORTSDIR}/textproc/texi2html 
-# To be reactivated when ffmpeg-devel will install libswscale. 
-#LIB_DEPENDS=		avutil.1:${PORTSDIR}/multimedia/ffmpeg-devel 
-LIB_DEPENDS=		mp3lame.0:${PORTSDIR}/audio/lame 
-RUN_DEPENDS=		animate:${PORTSDIR}/graphics/ImageMagick 
+			${LOCALBASE}/include/X11/extensions/shmproto.h:${PORTSDIR}/x11/xextproto 
+LIB_DEPENDS=		avutil.1:${PORTSDIR}/multimedia/ffmpeg		 
+			mp3lame.0:${PORTSDIR}/audio/lame 
+RUN_DEPENDS=		animate:${PORTSDIR}/graphics/ImageMagick	 
+			dbus-daemon:${PORTSDIR}/devel/dbus		 
+			docbook2man:${PORTSDIR}/textproc/docbook2X	 
+			xml2po:${PORTSDIR}/textproc/gnome-doc-utils 
+ 
+LICENSE=		GPLv3 

GNU_CONFIGURE=		yes 
-# Remove MAKE="${GMAKE}" after ffmpeg-devel's upgrade 
-CONFIGURE_ENV=		CFLAGS="${CFLAGS} -I${LOCALBASE}/include"	 
-			LDFLAGS="-L${LOCALBASE}/lib"	 
-			MAKE="${GMAKE}" 
-CONFIGURE_ARGS=		-with-forced-embedded-ffmpeg	# To be removed after ffmpeg-devel's upgrade 
+CONFIGURE_ENV=		CFLAGS="${CFLAGS} -I${LOCALBASE}/include ${DDEBUG}"	 
+			LDFLAGS="-L${LOCALBASE}/lib"				 
+			DOCBOOK2X_MAN=${LOCALBASE}/bin/docbook2man 
+CONFIGURE_ARGS=		--without-forced-embedded-ffmpeg 

-USE_GMAKE=		yes	# To be removed after ffmpeg-devel's upgrade 
-USE_GNOME=		glib20 libglade2 
+USE_GMAKE=		yes 
+USE_GNOME=		glib20 libglade2 pkgconfig 
USE_GETTEXT=		yes 
-USE_XORG=		x11 xmu 
+USE_XORG=		x11 xmu ice xfixes xdamage 
INSTALLS_OMF=		yes 

.if !defined(CFLAGS) || ${CFLAGS:M-fno-strict-aliasing*} == "" 
CFLAGS+=	-O2 -fno-strict-aliasing 
.endif 

+.if defined(WITH_DEBUG) 
+DDEBUG=		-DDEBUG 
+.endif 
+ 
PORTDOCS=		AUTHORS ChangeLog README 
NULLDOCS=		COPYING 

+MANLANG=		"" de es it 
MAN1=			xvidcap.1 
+MAN1_DE=		xvidcap-dbus-client.1 
+MAN1_EN=		xvidcap-dbus-client.1 

pre-configure: 
-	${REINPLACE_CMD} -e 's|-lpthread|${PTHREAD_LIBS}|g' ${WRKSRC}/configure 
+	${REINPLACE_CMD} -e 's|-lpthread|${PTHREAD_LIBS}|g'		 
+		-e 's|avcodec_decode_audio|avcodec_decode_audio2|g'	 
+		${WRKSRC}/configure 
.if defined(NOPORTDOCS) 
${REINPLACE_CMD} -e 's|pkgdataDATA install-xvidcapdocDATA|pkgdataDATA|'	 
${WRKSRC}/Makefile.in 
diff -urN sysutils/xvidcap.orig/distinfo sysutils/xvidcap/distinfo 
--- sysutils/xvidcap.orig/distinfo	2006-11-18 15:04:51.000000000 +0100 
+++ sysutils/xvidcap/distinfo	2010-08-29 22:49:22.000000000 +0200 
@@ -1,3 +1,3 @@ 
-MD5 (xvidcap-1.1.4p1.tar.gz) = 35a038dba807f6e09f1d9dd2bc0c5719 
-SHA256 (xvidcap-1.1.4p1.tar.gz) = 861fdb75e5f78de9f160f6c475a32389d825227292b33a976cbc12e0446324bf 
-SIZE (xvidcap-1.1.4p1.tar.gz) = 4006788 
+MD5 (xvidcap-1.1.7.tar.gz) = b39a682d3ef9fcbf424af771936780e2 
+SHA256 (xvidcap-1.1.7.tar.gz) = 154622801e8d5e91b834e7707e9e1cc65cf20d0161f6e0323bc3bf0efd85195d 
+SIZE (xvidcap-1.1.7.tar.gz) = 4789924 
diff -urN sysutils/xvidcap.orig/files/patch-configure sysutils/xvidcap/files/patch-configure 
--- sysutils/xvidcap.orig/files/patch-configure	2006-11-01 00:51:16.000000000 +0100 
+++ sysutils/xvidcap/files/patch-configure	2010-08-29 22:53:14.000000000 +0200 
@@ -1,6 +1,6 @@ 
---- configure.orig	Mon Oct 30 09:11:11 2006 
-+++ configure	Tue Oct 31 19:26:30 2006 
-@@ -9078,7 +9078,7 @@ 
+--- configure.orig	2008-07-09 09:28:25.000000000 +0200 
++++ configure	2010-08-29 22:49:50.000000000 +0200 
+@@ -9978,7 +9978,7 @@ 
echo $ECHO_N "(cached) $ECHO_C" >&6 
else 
ac_check_lib_save_LIBS=$LIBS 
@@ -9,7 +9,7 @@ 
cat >conftest.$ac_ext <<_ACEOF 
/* confdefs.h.  */ 
_ACEOF 
-@@ -9140,7 +9140,7 @@ 
+@@ -10038,7 +10038,7 @@ 
#define HAVE_LIBXMU 1 
_ACEOF 

@@ -17,13 +17,4 @@ 
+  LIBS="-L$x_libraries -lXmu $LIBS" 

else 
-   unset ac_cv_lib_Xmu_XmuClientWindow; echo "Couldn't find libXmu in LD_LIBRARY_PATH, checking X11 paths"; echo "$as_me:$LINENO: checking for XmuClientWindow in -lXmu" >&5 
-@@ -9513,7 +9513,7 @@ 
- # if cache empty (not tested or failed) and want static avcodec (then it failed) ... 
- if ( `test ( ( x${ac_cv_lib_avutil_av_rescale+set} = x ) -a ( x$static_avutil = xyes ) )` ) ; then 
- 	# build embedded ffmpeg 
--	echo "${MAKE-make}-ing prerequisite ffmpeg libraries" && ( cd ./ffmpeg/ && ./configure --cc=${CC} --enable-gpl ${ac_my_ffmpeg_cfg_lame_switch} --enable-pthreads --enable-swscaler --disable-ffserver --disable-ffplay && ln -s libavcodec/avcodec.h && ln -s libavformat/avformat.h && ln -s libavformat/avio.h && ln -s libavformat/rt*.h ./ && ln -s libavutil/common.h ./ && ln -s libavutil/avutil.h ./ && ln -s libavutil/mathematics.h ./ && ln -s libavutil/int*.h ./ && ln -s libavutil/rational.h ./ && ln -s libswscale/swscale.h ./ && ln -s libswscale/rgb2rgb.h . && ${MAKE-make} ) 
-+	echo "${MAKE-make}-ing prerequisite ffmpeg libraries" && ( cd ./ffmpeg/ && ./configure --cc=${CC} --extra-libs=-lm --disable-opts --enable-gpl ${ac_my_ffmpeg_cfg_lame_switch} --enable-pthreads --enable-swscaler --disable-ffserver --disable-ffplay && ln -s libavcodec/avcodec.h && ln -s libavformat/avformat.h && ln -s libavformat/avio.h && ln -s libavformat/rt*.h ./ && ln -s libavutil/common.h ./ && ln -s libavutil/avutil.h ./ && ln -s libavutil/mathematics.h ./ && ln -s libavutil/int*.h ./ && ln -s libavutil/rational.h ./ && ln -s libswscale/swscale.h ./ && ln -s libswscale/rgb2rgb.h . && ${MAKE-make} ) 
- 	#echo "${MAKE-make}-ing prerequisite ffmpeg libraries" && ( cd ./ffmpeg/ && ./configure --cc=${CC} ${ac_my_ffmpeg_cfg_lame_switch} --enable-pthreads --disable-ffserver --disable-ffplay && ln -s libavcodec/avcodec.h && ln -s libavformat/avformat.h && ln -s libavformat/avio.h && ln -s libavformat/rt*.h ./ && ln -s libavutil/common.h ./ && ln -s libavutil/avutil.h ./ && ln -s libavutil/mathematics.h ./ && ln -s libavutil/int*.h ./ && ln -s libavutil/rational.h ./ && ${MAKE-make} ) 
- 	# try to link it statically, or reset cache, set static_avcodec=no 
- 	top_srcdir=`pwd` 
+   unset ac_cv_lib_Xmu_XmuClientWindow; echo "Couldn't find libXmu in LD_LIBRARY_PATH, checking X11 paths"; { echo "$as_me:$LINENO: checking for XmuClientWindow in -lXmu" >&5 
diff -urN sysutils/xvidcap.orig/files/patch-ffmpeg_configure sysutils/xvidcap/files/patch-ffmpeg_configure 
--- sysutils/xvidcap.orig/files/patch-ffmpeg_configure	2006-11-01 00:51:16.000000000 +0100 
+++ sysutils/xvidcap/files/patch-ffmpeg_configure	2010-08-29 22:58:07.000000000 +0200 
@@ -1,21 +1,19 @@ 
---- ffmpeg/configure.orig	Wed Oct 25 21:31:11 2006 
-+++ ffmpeg/configure	Mon Oct 30 23:32:55 2006 
-@@ -556,7 +556,7 @@ 
- audio_oss="yes" 
- dv1394="no" 
- make="gmake" 
--add_cflags "-pthread" 
-+add_cflags "-fomit-frame-pointer" 
- ;; 
- GNU/kFreeBSD) 
- v4l="no" 
-@@ -1514,9 +1514,6 @@ 
+--- ffmpeg/configure.orig	2008-05-02 17:22:48.000000000 +0200 
++++ ffmpeg/configure	2010-08-29 22:57:45.000000000 +0200 
+@@ -1096,6 +1096,7 @@ 
+         ;; 
+     freebsd) 
+         disable need_memalign 
++        add_cflags "-DPIC -fomit-frame-pointer" 
+         ;; 
+     bsd/os) 
+         osextralibs="-lpoll -lgnugetopt" 
+@@ -1768,8 +1769,6 @@ 
check_cflags -Wall 
check_cflags -Wno-switch 
check_cflags -Wdisabled-optimization 
-check_cflags -Wpointer-arith 
-check_cflags -Wredundant-decls 
--check_cflags -Winline 
-  
- # add some linker flags 
- check_ldflags '-Wl,-rpath-link,$(BUILD_ROOT)/libavcodec' '-Wl,-rpath-link,$(BUILD_ROOT)/libavformat' '-Wl,-rpath-link,$(BUILD_ROOT)/libavutil' 
+ check_cflags -Wno-pointer-sign 
+ check_cflags -Wcast-qual 
+ check_cflags -Wwrite-strings 
diff -urN sysutils/xvidcap.orig/files/patch-src_capture.c sysutils/xvidcap/files/patch-src_capture.c 
--- sysutils/xvidcap.orig/files/patch-src_capture.c	1970-01-01 01:00:00.000000000 +0100 
+++ sysutils/xvidcap/files/patch-src_capture.c	2010-08-30 00:01:05.000000000 +0200 
@@ -0,0 +1,11 @@ 
+--- ./src/capture.c.orig	2008-05-26 00:01:53.000000000 +0200 
++++ ./src/capture.c	2010-08-30 00:00:37.000000000 +0200 
+@@ -65,7 +65,7 @@ 
+ #include <sys/ipc.h> 
+ #include <sys/shm.h> 
+ #include <X11/extensions/XShm.h> 
+-#include <X11/extensions/shmstr.h> 
++#include <X11/extensions/shmproto.h> 
+ #ifndef SOLARIS 
+ #include <X11/extensions/extutil.h> 
+ #endif     // SOLARIS 
diff -urN sysutils/xvidcap.orig/files/patch-src_gnome_options.c sysutils/xvidcap/files/patch-src_gnome_options.c 
--- sysutils/xvidcap.orig/files/patch-src_gnome_options.c	1970-01-01 01:00:00.000000000 +0100 
+++ sysutils/xvidcap/files/patch-src_gnome_options.c	2010-08-31 00:06:10.000000000 +0200 
@@ -0,0 +1,14 @@ 
+--- src/gnome_options.c.orig	2008-05-26 00:01:54.000000000 +0200 
++++ src/gnome_options.c	2010-08-31 00:05:54.000000000 +0200 
+@@ -1012,9 +1012,9 @@ 
+ #else 
+          0, 
+ #endif     // USE_FFMPEG 
+-         sf_t_au_codec 
+ #ifdef HAVE_FFMPEG_AUDIO 
+-         , mf_t_au_codec 
++         sf_t_au_codec, 
++         mf_t_au_codec 
+ #else 
+          , 0 
+ #endif     // HAVE_FFMPEG_AUDIO 
diff -urN sysutils/xvidcap.orig/files/patch-src_main.c sysutils/xvidcap/files/patch-src_main.c 
--- sysutils/xvidcap.orig/files/patch-src_main.c	1970-01-01 01:00:00.000000000 +0100 
+++ sysutils/xvidcap/files/patch-src_main.c	2010-08-30 22:15:28.000000000 +0200 
@@ -0,0 +1,12 @@ 
+--- src/main.c.orig	2008-05-26 00:01:54.000000000 +0200 
++++ src/main.c	2010-08-30 22:15:02.000000000 +0200 
+@@ -217,9 +217,6 @@ 
+  
+     if (app) 
+         xvc_appdata_free (app); 
+-#ifdef USE_FFMPEG 
+-    av_free_static (); 
+-#endif 
+ } 
+  
+ /** 
diff -urN sysutils/xvidcap.orig/files/patch-src_xtoffmpeg.c sysutils/xvidcap/files/patch-src_xtoffmpeg.c 
--- sysutils/xvidcap.orig/files/patch-src_xtoffmpeg.c	1970-01-01 01:00:00.000000000 +0100 
+++ sysutils/xvidcap/files/patch-src_xtoffmpeg.c	2010-08-31 22:51:48.000000000 +0200 
@@ -0,0 +1,81 @@ 
+--- src/xtoffmpeg.c.orig	2008-05-26 00:01:54.000000000 +0200 
++++ src/xtoffmpeg.c	2010-08-31 22:51:41.000000000 +0200 
+@@ -61,7 +61,7 @@ 
+ #include <ffmpeg/avdevice.h> 
+ //#include <ffmpeg/dsputil.h> 
+ #include <ffmpeg/swscale.h> 
+-#include <ffmpeg/rgb2rgb.h> 
++#include <ffmpeg/pixfmt.h> 
+ #include <ffmpeg/fifo.h> 
+ #define swscale_isRGB(x) ((x)==PIX_FMT_BGR32 || (x)==PIX_FMT_RGB24  
+                         || (x)==PIX_FMT_RGB565 || (x)==PIX_FMT_RGB555  
+@@ -96,7 +96,7 @@ 
+                         || (x)==PIX_FMT_YUVJ420P || (x)==PIX_FMT_YUVJ422P  
+                         || (x)==PIX_FMT_YUVJ444P) 
+  
+-#define PIX_FMT_ARGB32 PIX_FMT_RGBA32  /* this is just my personal 
++#define PIX_FMT_ARGB32 PIX_FMT_RGB32  /* this is just my personal 
+                                         * convenience */ 
+  
+ /* 
+@@ -391,7 +391,7 @@ 
+     } 
+     au_out_st->st->codec = au_c; 
+  
+-    if (av_fifo_init (&au_out_st->fifo, 2 * MAX_AUDIO_PACKET_SIZE)) { 
++    if (av_fifo_alloc (2 * MAX_AUDIO_PACKET_SIZE)) { 
+         fprintf (stderr, 
+                  _("%s %s: Can't initialize fifo for audio recordingn"), 
+                  DEBUGFILE, DEBUGFUNCTION); 
+@@ -549,10 +549,10 @@ 
+     // now encode as many frames as possible 
+     if (enc->frame_size > 1) { 
+         // output resampled raw samples 
+-        av_fifo_write (&ost->fifo, buftmp, size_out); 
++        av_fifo_generic_write (&ost->fifo, buftmp, size_out, NULL); 
+         frame_bytes = enc->frame_size * 2 * enc->channels; 
+  
+-        while (av_fifo_read (&ost->fifo, audio_buf, frame_bytes) == 0) { 
++        while (av_fifo_generic_read (&ost->fifo, frame_bytes, NULL, audio_buf) == 0) { 
+             AVPacket pkt; 
+  
+             // initialize audio output packet 
+@@ -670,7 +670,7 @@ 
+         int fs_tmp = enc->frame_size; 
+  
+         enc->frame_size = fifo_bytes / (2 * enc->channels); 
+-        if (av_fifo_read (&au_out_st->fifo, (uint8_t *) samples, fifo_bytes) == 
++        if (av_fifo_generic_read (&au_out_st->fifo, fifo_bytes, NULL, (uint8_t *) samples) == 
+             0) { 
+             ret = 
+                 avcodec_encode_audio (enc, bit_buffer, bit_buffer_size, 
+@@ -1248,7 +1248,7 @@ 
+     st->codec->flags |= CODEC_FLAG2_FAST; 
+     // there is no trellis quantiser in libav* for mjpeg 
+     if (st->codec->codec_id != CODEC_ID_MJPEG) 
+-        st->codec->flags |= CODEC_FLAG_TRELLIS_QUANT; 
++        st->codec->trellis = 1; 
+     st->codec->flags &= ~CODEC_FLAG_OBMC; 
+     // some formats want stream headers to be seperate 
+     if (oc->oformat->flags & AVFMT_GLOBALHEADER) 
+@@ -1339,7 +1339,9 @@ 
+         } 
+         break; 
+     case 32: 
+-        if (c_info->alpha_mask == 0xFF000000 && image->green_mask == 0xFF00) { 
++        if ((c_info->alpha_mask == 0xFF000000 || c_info->alpha_mask == 0) &&  
++                (image->red_mask == 0xFF0000 || image->red_mask == 0xFF) && 
++                image->green_mask == 0xFF00) { 
+             // byte order is relevant here, not endianness endianness is 
+             // handled by avcodec, but atm no such thing as having ABGR, 
+             // instead of ARGB in a word. Since we need this for 
+@@ -1707,7 +1709,8 @@ 
+  
+     /** todo test if the special image conversion for Solaris is still 
+      *      necessary */ 
+-    if (input_pixfmt == PIX_FMT_ARGB32 && job->c_info->alpha_mask == 0xFF000000 
++    if (input_pixfmt == PIX_FMT_ARGB32 &&  
++        (job->c_info->alpha_mask == 0xFF000000 || job->c_info->alpha_mask == 0) 
+         && image->red_mask == 0xFF && image->green_mask == 0xFF00 
+         && image->blue_mask == 0xFF0000) { 
+         myABGR32toARGB32 (image); 
diff -urN sysutils/xvidcap.orig/pkg-plist sysutils/xvidcap/pkg-plist 
--- sysutils/xvidcap.orig/pkg-plist	2008-11-22 19:34:47.000000000 +0100 
+++ sysutils/xvidcap/pkg-plist	2010-08-31 07:14:49.000000000 +0200 
@@ -1,5 +1,6 @@ 
bin/xvidcap 
share/applications/xvidcap.desktop 
+share/dbus-1/services/net.jarre_de_the.Xvidcap.service 
share/gnome/help/xvidcap/C/figures/back-button.png 
share/gnome/help/xvidcap/C/figures/edit-button.png 
share/gnome/help/xvidcap/C/figures/filename-button.png 
@@ -16,6 +17,7 @@ 
share/gnome/help/xvidcap/C/figures/menu-quit.png 
share/gnome/help/xvidcap/C/figures/menu-save-prefs.png 
share/gnome/help/xvidcap/C/figures/menu-sf.png 
+share/gnome/help/xvidcap/C/figures/menu-show-frame.png 
share/gnome/help/xvidcap/C/figures/menu.png 
share/gnome/help/xvidcap/C/figures/pause-toggle.png 
share/gnome/help/xvidcap/C/figures/prefs-commands.png 
@@ -47,6 +49,7 @@ 
share/gnome/help/xvidcap/de/figures/menu-quit.png 
share/gnome/help/xvidcap/de/figures/menu-save-prefs.png 
share/gnome/help/xvidcap/de/figures/menu-sf.png 
+share/gnome/help/xvidcap/de/figures/menu-show-frame.png 
share/gnome/help/xvidcap/de/figures/menu.png 
share/gnome/help/xvidcap/de/figures/pause-toggle.png 
share/gnome/help/xvidcap/de/figures/prefs-commands.png 
--- xvidcap.diff ends here --- 

Unfortunately, I cannot commit it as-is, because recording fails on my 
machine with the following error: 

capture.c captureFrameToImageSHM(): Entering 
The program 'xvidcap' received an X Window System error. 
This probably reflects a bug in the program. 
The error was 'BadAccess (attempt to access private resource denied)'. 
(Details: serial 6073 error_code 10 request_code 138 minor_code 1) 
(Note to programmers: normally, X errors are reported asynchronously; 
that is, you will receive the error a while after causing it. 
To debug your program, run it with the --sync command line 
option to change this behavior. You can then get a meaningful 
backtrace from your debugger if you break on the gdk_x_error() 
function.) 

Could you please test it yourself, to check if you get the same error? 

Hints: 
- it fails in XShmGetImage; 
- it can be built WITH_DEBUG=yes and gdb + break at capture.c:957 
- also test with LIBXCB_ALLOW_SLOPPY_LOCK=1 

Regards, 
--  
Th. Thomas