summaryrefslogtreecommitdiff
path: root/graphics
diff options
context:
space:
mode:
authorAde Lovett <ade@FreeBSD.org>2000-09-19 16:18:15 +0000
committerAde Lovett <ade@FreeBSD.org>2000-09-19 16:18:15 +0000
commit10e47807a1d038e4b0f7e9e1f46393da665b9147 (patch)
tree9470f49512ab8f02f69961dfa064e28db7df9228 /graphics
parentAdd p5-Crypt-Blowfish, a perl module for Blowfish encryption, (diff)
Add avifile, an MPEG-4 (aka DivX) player
PR: 21347 Submitted by: Holger Lamm <holger@eit.uni-kl.de>
Notes
Notes: svn path=/head/; revision=32866
Diffstat (limited to 'graphics')
-rw-r--r--graphics/Makefile1
-rw-r--r--graphics/avifile/Makefile38
-rw-r--r--graphics/avifile/distinfo2
-rw-r--r--graphics/avifile/files/patch-aa42
-rw-r--r--graphics/avifile/files/patch-ab82
-rw-r--r--graphics/avifile/files/patch-ac11
-rw-r--r--graphics/avifile/files/patch-ad235
-rw-r--r--graphics/avifile/pkg-comment1
-rw-r--r--graphics/avifile/pkg-descr3
-rw-r--r--graphics/avifile/pkg-plist66
-rw-r--r--graphics/win32-codecs/Makefile38
-rw-r--r--graphics/win32-codecs/distinfo2
-rw-r--r--graphics/win32-codecs/files/patch-aa42
-rw-r--r--graphics/win32-codecs/files/patch-ab82
-rw-r--r--graphics/win32-codecs/files/patch-ac11
-rw-r--r--graphics/win32-codecs/files/patch-ad235
-rw-r--r--graphics/win32-codecs/pkg-comment1
-rw-r--r--graphics/win32-codecs/pkg-descr3
-rw-r--r--graphics/win32-codecs/pkg-plist66
19 files changed, 961 insertions, 0 deletions
diff --git a/graphics/Makefile b/graphics/Makefile
index 5fa1237e463c..416340c01e3c 100644
--- a/graphics/Makefile
+++ b/graphics/Makefile
@@ -11,6 +11,7 @@
SUBDIR += aalib
SUBDIR += aero
SUBDIR += aview
+ SUBDIR += avifile
SUBDIR += backfract
SUBDIR += camediaplay
SUBDIR += camserv
diff --git a/graphics/avifile/Makefile b/graphics/avifile/Makefile
new file mode 100644
index 000000000000..e217d78c8ded
--- /dev/null
+++ b/graphics/avifile/Makefile
@@ -0,0 +1,38 @@
+# New ports collection makefile for: avifile
+# Date created: 16 September 2000
+# Whom: Holger Lamm
+#
+# $FreeBSD$
+#
+
+PORTNAME= avifile
+PORTVERSION= 0.47.1
+CATEGORIES= graphics
+MASTER_SITES= http://divx.euro.ru/
+DISTFILES= avifile-${PORTVERSION}${EXTRACT_SUFX} binaries.zip
+EXTRACT_ONLY= avifile-${PORTVERSION}${EXTRACT_SUFX}
+
+MAINTAINER= holger@eit.uni-kl.de
+
+LIB_DEPENDS= qt2.4:${PORTSDIR}/x11-toolkits/qt22 \
+ SDL-1.1.2:${PORTSDIR}/devel/sdl-devel
+BUILD_DEPENDS= unzip:${PORTSDIR}/archivers/unzip
+
+ONLY_FOR_ARCHS= i386
+USE_GMAKE= yes
+USE_XLIB= yes
+HAS_CONFIGURE= yes
+
+SDL_CONFIG?= ${LOCALBASE}/bin/sdl11-config
+MOC?= ${X11BASE}/bin/moc2
+
+CONFIGURE_ENV= SDL_CONFIG="${SDL_CONFIG}" \
+ MOC="${MOC}"
+CONFIGURE_ARGS= --enable-mmx \
+ --with-qt-includes=${X11BASE}/include/qt2 \
+ --with-win32-path=${LOCALBASE}/lib/win32
+
+pre-install:
+ unzip ${DISTDIR}/binaries.zip -d ${LOCALBASE}/lib/win32
+ strip ${WRKSRC}/bin/aviplay ${WRKSRC}/bin/benchmark
+.include <bsd.port.mk>
diff --git a/graphics/avifile/distinfo b/graphics/avifile/distinfo
new file mode 100644
index 000000000000..d74c72f4693f
--- /dev/null
+++ b/graphics/avifile/distinfo
@@ -0,0 +1,2 @@
+MD5 (avifile-0.47.1.tar.gz) = edbad85f6c72d61f3a66d99c61620f39
+MD5 (binaries.zip) = 6df7c0a266ba6e8c022160605791644b
diff --git a/graphics/avifile/files/patch-aa b/graphics/avifile/files/patch-aa
new file mode 100644
index 000000000000..460f424d5068
--- /dev/null
+++ b/graphics/avifile/files/patch-aa
@@ -0,0 +1,42 @@
+--- configure.orig Sat Sep 16 11:33:30 2000
++++ configure Sat Sep 16 11:43:00 2000
+@@ -2302,7 +2302,7 @@
+
+
+ USE_QT=1
+-USE_VIDCAP=1
++USE_VIDCAP=0
+
+ # Check whether --enable-qt or --disable-qt was given.
+ if test "${enable_qt+set}" = set; then
+@@ -2631,7 +2631,7 @@
+
+ CXXFLAGS="$CXXFLAGS -I$qt_incdir"
+ LDFLAGS="-L$qt_libdir $X_LDFLAGS"
+-LIBS="$LIBS -lqt -lXext -lX11 $LIBSOCKET"
++LIBS="$LIBS -lqt2 -lXext -lX11 $LIBSOCKET"
+
+
+ ac_ext=C
+--- player/Makefile.in.orig Sat Sep 16 11:33:26 2000
++++ player/Makefile.in Sat Sep 16 11:43:46 2000
+@@ -7,7 +7,7 @@
+
+
+ MOC=@MOC@
+-LIBS=@LIBS@ -lX11 -lXext -lqt -laviplay @DGA_LDADD@ @SDL_LIBS@
++LIBS=@LIBS@ -lX11 -lXext -lqt2 -laviplay @DGA_LDADD@ @SDL_LIBS@
+ LIB_DIRS=-L../lib @QT_LDFLAGS@ -L/usr/X11R6/lib -L/usr/local/lib
+ CDOPT=@CD_OPT@
+ LDOPT=@LD_OPT@
+--- samples/benchmark/Makefile.in.orig Sat Sep 16 11:33:29 2000
++++ samples/benchmark/Makefile.in Sat Sep 16 11:43:27 2000
+@@ -5,7 +5,7 @@
+ CFLAGS=-I../../include -I/usr/X11R6/include @QT_INCLUDES@ @SDL_CFLAGS@
+
+
+-LIBS=@LIBS@ -lX11 -lXext -lqt -laviplay @DGA_LDADD@ @SDL_LIBS@
++LIBS=@LIBS@ -lX11 -lXext -lqt2 -laviplay @DGA_LDADD@ @SDL_LIBS@
+ LIB_DIRS=@QT_LDFLAGS@ -L/usr/X11R6/lib -L../../lib
+
+ MOC=@MOC@
diff --git a/graphics/avifile/files/patch-ab b/graphics/avifile/files/patch-ab
new file mode 100644
index 000000000000..e90a06661eba
--- /dev/null
+++ b/graphics/avifile/files/patch-ab
@@ -0,0 +1,82 @@
+--- lib/avifile/AviWrite.cpp.orig Mon Sep 11 15:40:31 2000
++++ lib/avifile/AviWrite.cpp Wed Sep 13 20:52:55 2000
+@@ -19,7 +19,11 @@
+ try
+ {
+ m_status=0;
++#ifdef O_LARGEFILE
+ m_fd=open(name, O_WRONLY | O_CREAT | O_TRUNC | O_LARGEFILE, mask);
++#else
++ m_fd=open(name, O_WRONLY | O_CREAT | O_TRUNC, mask);
++#endif
+ if(m_fd==-1)
+ throw FATAL("Can't open file for writing");
+
+@@ -203,7 +207,11 @@
+ }
+ long long AviWriteFile::FileSize()
+ {
++#ifdef __Linux__
+ return lseek64(m_fd, 0, SEEK_CUR);
++#else
++ return lseek(m_fd, 0, SEEK_CUR);
++#endif
+ }
+
+ AviWriteStream::AviWriteStream
+--- lib/videocodec/Module.h.orig Sat Sep 9 14:24:49 2000
++++ lib/videocodec/Module.h Wed Sep 13 20:20:25 2000
+@@ -4,6 +4,10 @@
+ #include <videoencoder.h>
+ #include <list>
+ #include <string>
++#ifdef __FreeBSD__
++#include <sys/time.h>
++#endif
++
+ using namespace std;
+
+ class VideoCodecControl;
+--- player/renderer.cpp.orig Mon Sep 11 08:38:07 2000
++++ player/renderer.cpp Fri Sep 15 20:22:55 2000
+@@ -11,6 +11,7 @@
+ #ifdef __FreeBSD__
+ #include <machine/param.h>
+ #include <sys/types.h>
++#include <unistd.h>
+ #endif
+ #include <sys/ipc.h>
+ #include <sys/shm.h>
+--- lib/aviplay/aviutil.cpp.orig Sat Sep 16 13:49:08 2000
++++ lib/aviplay/aviutil.cpp Sat Sep 16 13:54:06 2000
+@@ -28,16 +28,18 @@
+ }
+ CPU_Freq::CPU_Freq()
+ {
+- FILE *f = fopen ("/proc/cpuinfo", "r");
+ char line[200];
+ char model[200]="unknown";
+ char flags[500]="";
+ char *s,*value;
+
++#ifdef __FreeBSD__
++ freq=old_freq();
++ cerr<<freq/1000.<<" MHz processor detected"<<endl;
++#else
++ FILE *f = fopen ("/proc/cpuinfo", "r");
++
+ freq=-1;
+-// freq=old_freq();
+-// cerr<<freq/1000.<<" MHz processor detected"<<endl;
+-// return;
+ if (!f)
+ {
+ printf("Can't open /proc/cpuinfo for reading\n");
+@@ -86,6 +88,7 @@
+ }
+ #endif
+ fclose(f);
++#endif
+ }
+
+ CPU_Freq freq;
diff --git a/graphics/avifile/files/patch-ac b/graphics/avifile/files/patch-ac
new file mode 100644
index 000000000000..594573b8c671
--- /dev/null
+++ b/graphics/avifile/files/patch-ac
@@ -0,0 +1,11 @@
+--- xmps-avi-plugin/Makefile.in.orig Sat Sep 16 14:13:04 2000
++++ xmps-avi-plugin/Makefile.in Sat Sep 16 14:20:30 2000
+@@ -1,6 +1,6 @@
+-LIBS = -lstdc++ -L../lib -L@libdir@ -laviplay -lpthread @XMPS_LIBS@
++LIBS = -lstdc++ -L../lib -L@libdir@ -laviplay -pthread @XMPS_LIBS@
+
+-INCLUDES = -I. -I../include -I@includedir@/avifile @XMPS_CFLAGS@
++INCLUDES = -I. -I../include -I@includedir@/avifile @XMPS_CFLAGS@ @SDL_CFLAGS@
+
+ all: avi_configure.o avi_codec.o
+ $(CC) -shared avi_configure.o avi_codec.o $(LIBS) -o libavi.so
diff --git a/graphics/avifile/files/patch-ad b/graphics/avifile/files/patch-ad
new file mode 100644
index 000000000000..a8f54d45e145
--- /dev/null
+++ b/graphics/avifile/files/patch-ad
@@ -0,0 +1,235 @@
+--- lib/loader/ext.c.orig Sat Sep 16 17:02:10 2000
++++ lib/loader/ext.c Sat Sep 16 17:02:14 2000
+@@ -7,7 +7,7 @@
+ ********************************************************/
+ #include <config.h>
+
+-#include <malloc.h>
++#include <stdlib.h>
+ #include <unistd.h>
+ #include <sys/mman.h>
+ #include <errno.h>
+--- lib/loader/win32.c.orig Sat Sep 16 17:03:28 2000
++++ lib/loader/win32.c Sat Sep 16 17:03:30 2000
+@@ -13,7 +13,7 @@
+ #include "win32.h"
+ #include <stdio.h>
+ #include <pthread.h>
+-#include <malloc.h>
++#include <stdlib.h>
+ #include <time.h>
+ #include <sys/types.h>
+ #include <sys/time.h>
+--- lib/loader/driver.c.orig Sat Sep 16 17:04:30 2000
++++ lib/loader/driver.c Sat Sep 16 17:04:32 2000
+@@ -1,6 +1,6 @@
+ #include <config.h>
+ #include <stdio.h>
+-#include <malloc.h>
++#include <stdlib.h>
+ #include <wine/driver.h>
+ #include <wine/pe_image.h>
+ #include <wine/winreg.h>
+--- lib/loader/resource.c.orig Sat Sep 16 17:07:41 2000
++++ lib/loader/resource.c Sat Sep 16 17:08:00 2000
+@@ -253,6 +253,56 @@
+ return RES_SizeofResource( hModule, hRsrc );
+ }
+
++/**********************************************************************
++ * LoadStringW (USER32.376)
++ */
++INT WINAPI LoadStringW( HINSTANCE instance, UINT resource_id,
++ LPWSTR buffer, INT buflen )
++{
++ HGLOBAL hmem;
++ HRSRC hrsrc;
++ WCHAR *p;
++ int string_num;
++ int i;
++
++ if (HIWORD(resource_id)==0xFFFF) /* netscape 3 passes this */
++ resource_id = (UINT)(-((INT)resource_id));
++ TRACE("instance = %04x, id = %04x, buffer = %08x, "
++ "length = %d\n", instance, (int)resource_id, (int) buffer, buflen);
++
++ /* Use bits 4 - 19 (incremented by 1) as resourceid, mask out
++ * 20 - 31. */
++ hrsrc = FindResourceW( instance, (LPCWSTR)(((resource_id>>4)&0xffff)+1),
++ RT_STRINGW );
++ if (!hrsrc) return 0;
++ hmem = LoadResource( instance, hrsrc );
++ if (!hmem) return 0;
++
++ p = LockResource(hmem);
++ string_num = resource_id & 0x000f;
++ for (i = 0; i < string_num; i++)
++ p += *p + 1;
++
++ TRACE("strlen = %d\n", (int)*p );
++
++ if (buffer == NULL) return *p;
++ i = min(buflen - 1, *p);
++ if (i > 0) {
++ memcpy(buffer, p + 1, i * sizeof (WCHAR));
++ buffer[i] = (WCHAR) 0;
++ } else {
++ if (buflen > 1) {
++ buffer[0] = (WCHAR) 0;
++ return 0;
++ }
++#if 0
++ WARN("Dont know why caller give buflen=%d *p=%d trying to obtain string '%s'\n", buflen, *p, p + 1);
++#endif
++ }
++
++ TRACE("String loaded !\n");
++ return i;
++}
+
+
+ /**********************************************************************
+@@ -303,57 +353,6 @@
+ HeapFree( GetProcessHeap(), 0, wbuf );
+
+ return retval;
+-}
+-
+-/**********************************************************************
+- * LoadStringW (USER32.376)
+- */
+-INT WINAPI LoadStringW( HINSTANCE instance, UINT resource_id,
+- LPWSTR buffer, INT buflen )
+-{
+- HGLOBAL hmem;
+- HRSRC hrsrc;
+- WCHAR *p;
+- int string_num;
+- int i;
+-
+- if (HIWORD(resource_id)==0xFFFF) /* netscape 3 passes this */
+- resource_id = (UINT)(-((INT)resource_id));
+- TRACE("instance = %04x, id = %04x, buffer = %08x, "
+- "length = %d\n", instance, (int)resource_id, (int) buffer, buflen);
+-
+- /* Use bits 4 - 19 (incremented by 1) as resourceid, mask out
+- * 20 - 31. */
+- hrsrc = FindResourceW( instance, (LPCWSTR)(((resource_id>>4)&0xffff)+1),
+- RT_STRINGW );
+- if (!hrsrc) return 0;
+- hmem = LoadResource( instance, hrsrc );
+- if (!hmem) return 0;
+-
+- p = LockResource(hmem);
+- string_num = resource_id & 0x000f;
+- for (i = 0; i < string_num; i++)
+- p += *p + 1;
+-
+- TRACE("strlen = %d\n", (int)*p );
+-
+- if (buffer == NULL) return *p;
+- i = min(buflen - 1, *p);
+- if (i > 0) {
+- memcpy(buffer, p + 1, i * sizeof (WCHAR));
+- buffer[i] = (WCHAR) 0;
+- } else {
+- if (buflen > 1) {
+- buffer[0] = (WCHAR) 0;
+- return 0;
+- }
+-#if 0
+- WARN("Dont know why caller give buflen=%d *p=%d trying to obtain string '%s'\n", buflen, *p, p + 1);
+-#endif
+- }
+-
+- TRACE("String loaded !\n");
+- return i;
+ }
+
+ /* Messages...used by FormatMessage32* (KERNEL32.something)
+--- lib/videocodec/VideoDecoder.cpp.orig Sat Sep 16 17:11:41 2000
++++ lib/videocodec/VideoDecoder.cpp Sat Sep 16 17:16:25 2000
+@@ -20,7 +20,6 @@
+ #include <fcntl.h>
+ #include <sys/mman.h>
+ #include <sys/types.h>
+-#include <malloc.h>
+ #include <stdio.h>
+ #include <unistd.h>
+ #include <strstream>
+--- lib/avifile/Cache.h.orig Sat Sep 16 17:22:11 2000
++++ lib/avifile/Cache.h Sat Sep 16 17:22:14 2000
+@@ -2,7 +2,7 @@
+ #include <default.h>
+ #define _LARGEFILE64_SOURCE
+ #include <unistd.h>
+-#include <malloc.h>
++#include <stdlib.h>
+ #include <string.h>
+ #include <stdio.h>
+ #include <pthread.h>
+--- lib/avifile/FastReadStream.cpp.orig Sat Sep 16 17:23:45 2000
++++ lib/avifile/FastReadStream.cpp Sat Sep 16 17:23:47 2000
+@@ -8,7 +8,7 @@
+ #include <features.h>
+ #endif
+ #include <unistd.h>
+-#include <malloc.h>
++#include <stdlib.h>
+
+ #ifdef __FreeBSD__
+ #define lseek64 lseek
+--- lib/avifile/AviRead.h.orig Sat Sep 16 17:25:10 2000
++++ lib/avifile/AviRead.h Sat Sep 16 17:25:13 2000
+@@ -10,7 +10,7 @@
+ #include <avifmt.h>
+ #include <default.h>
+ #include <unistd.h>
+-#include <malloc.h>
++#include <stdlib.h>
+ #include <string.h>
+ #include <stdio.h>
+ #include <pthread.h>
+--- lib/avifile/AviWrite.h.orig Sat Sep 16 17:26:35 2000
++++ lib/avifile/AviWrite.h Sat Sep 16 17:26:37 2000
+@@ -11,7 +11,7 @@
+ #include <avifmt.h>
+ #include <default.h>
+ #include <unistd.h>
+-#include <malloc.h>
++#include <stdlib.h>
+ #include <string.h>
+ #include <stdio.h>
+ #include <pthread.h>
+--- samples/benchmark/main.cpp.orig Sat Sep 16 17:28:22 2000
++++ samples/benchmark/main.cpp Sat Sep 16 17:28:24 2000
+@@ -9,7 +9,6 @@
+ #include <config.h>
+
+ #include <stdio.h>
+-#include <malloc.h>
+ #include <signal.h>
+ #include <iostream.h>
+ #include <unistd.h>
+--- samples/benchmark/renderer.cpp.orig Sat Sep 16 17:29:28 2000
++++ samples/benchmark/renderer.cpp Sat Sep 16 17:29:29 2000
+@@ -14,7 +14,7 @@
+ #include <sys/ipc.h>
+ #include <sys/shm.h>
+
+-#include <malloc.h>
++#include <stdlib.h>
+ #include <pthread.h>
+ #include "renderer.h"
+ #include "RegAccess.h"
+--- player/renderer.cpp.orig Sat Sep 16 22:31:56 2000
++++ player/renderer.cpp Sat Sep 16 22:32:02 2000
+@@ -16,7 +16,7 @@
+ #include <sys/ipc.h>
+ #include <sys/shm.h>
+
+-#include <malloc.h>
++#include <stdlib.h>
+ #include <pthread.h>
+ #include "renderer.h"
+ #include "RegAccess.h"
diff --git a/graphics/avifile/pkg-comment b/graphics/avifile/pkg-comment
new file mode 100644
index 000000000000..ab338ddd7a65
--- /dev/null
+++ b/graphics/avifile/pkg-comment
@@ -0,0 +1 @@
+An MPEG-4 (DivX) video player
diff --git a/graphics/avifile/pkg-descr b/graphics/avifile/pkg-descr
new file mode 100644
index 000000000000..afc3e64bb62c
--- /dev/null
+++ b/graphics/avifile/pkg-descr
@@ -0,0 +1,3 @@
+An MPEG-4 (aka DivX) player built around the Windows binaries,
+but does not need Wine.
+There is also a xmps plugin you can build (manually).
diff --git a/graphics/avifile/pkg-plist b/graphics/avifile/pkg-plist
new file mode 100644
index 000000000000..3ab050fd46ee
--- /dev/null
+++ b/graphics/avifile/pkg-plist
@@ -0,0 +1,66 @@
+include/avifile/audiodecoder.h
+include/avifile/audioencoder.h
+include/avifile/avifile.h
+include/avifile/avifmt.h
+include/avifile/aviplay.h
+include/avifile/aviutil.h
+include/avifile/config.h
+include/avifile/default.h
+include/avifile/except.h
+include/avifile/loader.h
+include/avifile/registry.h
+include/avifile/videodecoder.h
+include/avifile/videoencoder.h
+include/avifile/wine/basetsd.h
+include/avifile/wine/config.h
+include/avifile/wine/debugtools.h
+include/avifile/wine/driver.h
+include/avifile/wine/elfdll.h
+include/avifile/wine/heap.h
+include/avifile/wine/ldt.h
+include/avifile/wine/mmreg.h
+include/avifile/wine/module.h
+include/avifile/wine/msacm.h
+include/avifile/wine/msacmdrv.h
+include/avifile/wine/ntdef.h
+include/avifile/wine/pe_image.h
+include/avifile/wine/poppack.h
+include/avifile/wine/pshpack1.h
+include/avifile/wine/pshpack2.h
+include/avifile/wine/pshpack4.h
+include/avifile/wine/pshpack8.h
+include/avifile/wine/vfw.h
+include/avifile/wine/winbase.h
+include/avifile/wine/windef.h
+include/avifile/wine/windows.h
+include/avifile/wine/winerror.h
+include/avifile/wine/winestring.h
+include/avifile/wine/winnt.h
+include/avifile/wine/winreg.h
+include/avifile/wine/winuser.h
+@dirrm include/avifile/wine
+@dirrm include/avifile
+bin/aviplay
+bin/benchmark
+share/avifile/open.ppm
+share/avifile/pause.ppm
+share/avifile/play.ppm
+share/avifile/stop.ppm
+share/avifile/test.png
+@dirrm share/avifile
+lib/win32/ativcr2.dll
+lib/win32/divxa32.acm
+lib/win32/divxc32.dll
+lib/win32/divxc32f.dll
+lib/win32/i263_32.drv
+lib/win32/iccvid.dll
+lib/win32/ir32_32.dll
+lib/win32/ir41_32.dll
+lib/win32/ir41_qc.dll
+lib/win32/ir50_32.dll
+lib/win32/ir50_qc.dll
+lib/win32/mpg4c32.dll
+@dirrm lib/win32
+lib/libaviplay.so
+@exec /sbin/ldconfig -m %D/lib
+@unexec /sbin/ldconfig -R
diff --git a/graphics/win32-codecs/Makefile b/graphics/win32-codecs/Makefile
new file mode 100644
index 000000000000..e217d78c8ded
--- /dev/null
+++ b/graphics/win32-codecs/Makefile
@@ -0,0 +1,38 @@
+# New ports collection makefile for: avifile
+# Date created: 16 September 2000
+# Whom: Holger Lamm
+#
+# $FreeBSD$
+#
+
+PORTNAME= avifile
+PORTVERSION= 0.47.1
+CATEGORIES= graphics
+MASTER_SITES= http://divx.euro.ru/
+DISTFILES= avifile-${PORTVERSION}${EXTRACT_SUFX} binaries.zip
+EXTRACT_ONLY= avifile-${PORTVERSION}${EXTRACT_SUFX}
+
+MAINTAINER= holger@eit.uni-kl.de
+
+LIB_DEPENDS= qt2.4:${PORTSDIR}/x11-toolkits/qt22 \
+ SDL-1.1.2:${PORTSDIR}/devel/sdl-devel
+BUILD_DEPENDS= unzip:${PORTSDIR}/archivers/unzip
+
+ONLY_FOR_ARCHS= i386
+USE_GMAKE= yes
+USE_XLIB= yes
+HAS_CONFIGURE= yes
+
+SDL_CONFIG?= ${LOCALBASE}/bin/sdl11-config
+MOC?= ${X11BASE}/bin/moc2
+
+CONFIGURE_ENV= SDL_CONFIG="${SDL_CONFIG}" \
+ MOC="${MOC}"
+CONFIGURE_ARGS= --enable-mmx \
+ --with-qt-includes=${X11BASE}/include/qt2 \
+ --with-win32-path=${LOCALBASE}/lib/win32
+
+pre-install:
+ unzip ${DISTDIR}/binaries.zip -d ${LOCALBASE}/lib/win32
+ strip ${WRKSRC}/bin/aviplay ${WRKSRC}/bin/benchmark
+.include <bsd.port.mk>
diff --git a/graphics/win32-codecs/distinfo b/graphics/win32-codecs/distinfo
new file mode 100644
index 000000000000..d74c72f4693f
--- /dev/null
+++ b/graphics/win32-codecs/distinfo
@@ -0,0 +1,2 @@
+MD5 (avifile-0.47.1.tar.gz) = edbad85f6c72d61f3a66d99c61620f39
+MD5 (binaries.zip) = 6df7c0a266ba6e8c022160605791644b
diff --git a/graphics/win32-codecs/files/patch-aa b/graphics/win32-codecs/files/patch-aa
new file mode 100644
index 000000000000..460f424d5068
--- /dev/null
+++ b/graphics/win32-codecs/files/patch-aa
@@ -0,0 +1,42 @@
+--- configure.orig Sat Sep 16 11:33:30 2000
++++ configure Sat Sep 16 11:43:00 2000
+@@ -2302,7 +2302,7 @@
+
+
+ USE_QT=1
+-USE_VIDCAP=1
++USE_VIDCAP=0
+
+ # Check whether --enable-qt or --disable-qt was given.
+ if test "${enable_qt+set}" = set; then
+@@ -2631,7 +2631,7 @@
+
+ CXXFLAGS="$CXXFLAGS -I$qt_incdir"
+ LDFLAGS="-L$qt_libdir $X_LDFLAGS"
+-LIBS="$LIBS -lqt -lXext -lX11 $LIBSOCKET"
++LIBS="$LIBS -lqt2 -lXext -lX11 $LIBSOCKET"
+
+
+ ac_ext=C
+--- player/Makefile.in.orig Sat Sep 16 11:33:26 2000
++++ player/Makefile.in Sat Sep 16 11:43:46 2000
+@@ -7,7 +7,7 @@
+
+
+ MOC=@MOC@
+-LIBS=@LIBS@ -lX11 -lXext -lqt -laviplay @DGA_LDADD@ @SDL_LIBS@
++LIBS=@LIBS@ -lX11 -lXext -lqt2 -laviplay @DGA_LDADD@ @SDL_LIBS@
+ LIB_DIRS=-L../lib @QT_LDFLAGS@ -L/usr/X11R6/lib -L/usr/local/lib
+ CDOPT=@CD_OPT@
+ LDOPT=@LD_OPT@
+--- samples/benchmark/Makefile.in.orig Sat Sep 16 11:33:29 2000
++++ samples/benchmark/Makefile.in Sat Sep 16 11:43:27 2000
+@@ -5,7 +5,7 @@
+ CFLAGS=-I../../include -I/usr/X11R6/include @QT_INCLUDES@ @SDL_CFLAGS@
+
+
+-LIBS=@LIBS@ -lX11 -lXext -lqt -laviplay @DGA_LDADD@ @SDL_LIBS@
++LIBS=@LIBS@ -lX11 -lXext -lqt2 -laviplay @DGA_LDADD@ @SDL_LIBS@
+ LIB_DIRS=@QT_LDFLAGS@ -L/usr/X11R6/lib -L../../lib
+
+ MOC=@MOC@
diff --git a/graphics/win32-codecs/files/patch-ab b/graphics/win32-codecs/files/patch-ab
new file mode 100644
index 000000000000..e90a06661eba
--- /dev/null
+++ b/graphics/win32-codecs/files/patch-ab
@@ -0,0 +1,82 @@
+--- lib/avifile/AviWrite.cpp.orig Mon Sep 11 15:40:31 2000
++++ lib/avifile/AviWrite.cpp Wed Sep 13 20:52:55 2000
+@@ -19,7 +19,11 @@
+ try
+ {
+ m_status=0;
++#ifdef O_LARGEFILE
+ m_fd=open(name, O_WRONLY | O_CREAT | O_TRUNC | O_LARGEFILE, mask);
++#else
++ m_fd=open(name, O_WRONLY | O_CREAT | O_TRUNC, mask);
++#endif
+ if(m_fd==-1)
+ throw FATAL("Can't open file for writing");
+
+@@ -203,7 +207,11 @@
+ }
+ long long AviWriteFile::FileSize()
+ {
++#ifdef __Linux__
+ return lseek64(m_fd, 0, SEEK_CUR);
++#else
++ return lseek(m_fd, 0, SEEK_CUR);
++#endif
+ }
+
+ AviWriteStream::AviWriteStream
+--- lib/videocodec/Module.h.orig Sat Sep 9 14:24:49 2000
++++ lib/videocodec/Module.h Wed Sep 13 20:20:25 2000
+@@ -4,6 +4,10 @@
+ #include <videoencoder.h>
+ #include <list>
+ #include <string>
++#ifdef __FreeBSD__
++#include <sys/time.h>
++#endif
++
+ using namespace std;
+
+ class VideoCodecControl;
+--- player/renderer.cpp.orig Mon Sep 11 08:38:07 2000
++++ player/renderer.cpp Fri Sep 15 20:22:55 2000
+@@ -11,6 +11,7 @@
+ #ifdef __FreeBSD__
+ #include <machine/param.h>
+ #include <sys/types.h>
++#include <unistd.h>
+ #endif
+ #include <sys/ipc.h>
+ #include <sys/shm.h>
+--- lib/aviplay/aviutil.cpp.orig Sat Sep 16 13:49:08 2000
++++ lib/aviplay/aviutil.cpp Sat Sep 16 13:54:06 2000
+@@ -28,16 +28,18 @@
+ }
+ CPU_Freq::CPU_Freq()
+ {
+- FILE *f = fopen ("/proc/cpuinfo", "r");
+ char line[200];
+ char model[200]="unknown";
+ char flags[500]="";
+ char *s,*value;
+
++#ifdef __FreeBSD__
++ freq=old_freq();
++ cerr<<freq/1000.<<" MHz processor detected"<<endl;
++#else
++ FILE *f = fopen ("/proc/cpuinfo", "r");
++
+ freq=-1;
+-// freq=old_freq();
+-// cerr<<freq/1000.<<" MHz processor detected"<<endl;
+-// return;
+ if (!f)
+ {
+ printf("Can't open /proc/cpuinfo for reading\n");
+@@ -86,6 +88,7 @@
+ }
+ #endif
+ fclose(f);
++#endif
+ }
+
+ CPU_Freq freq;
diff --git a/graphics/win32-codecs/files/patch-ac b/graphics/win32-codecs/files/patch-ac
new file mode 100644
index 000000000000..594573b8c671
--- /dev/null
+++ b/graphics/win32-codecs/files/patch-ac
@@ -0,0 +1,11 @@
+--- xmps-avi-plugin/Makefile.in.orig Sat Sep 16 14:13:04 2000
++++ xmps-avi-plugin/Makefile.in Sat Sep 16 14:20:30 2000
+@@ -1,6 +1,6 @@
+-LIBS = -lstdc++ -L../lib -L@libdir@ -laviplay -lpthread @XMPS_LIBS@
++LIBS = -lstdc++ -L../lib -L@libdir@ -laviplay -pthread @XMPS_LIBS@
+
+-INCLUDES = -I. -I../include -I@includedir@/avifile @XMPS_CFLAGS@
++INCLUDES = -I. -I../include -I@includedir@/avifile @XMPS_CFLAGS@ @SDL_CFLAGS@
+
+ all: avi_configure.o avi_codec.o
+ $(CC) -shared avi_configure.o avi_codec.o $(LIBS) -o libavi.so
diff --git a/graphics/win32-codecs/files/patch-ad b/graphics/win32-codecs/files/patch-ad
new file mode 100644
index 000000000000..a8f54d45e145
--- /dev/null
+++ b/graphics/win32-codecs/files/patch-ad
@@ -0,0 +1,235 @@
+--- lib/loader/ext.c.orig Sat Sep 16 17:02:10 2000
++++ lib/loader/ext.c Sat Sep 16 17:02:14 2000
+@@ -7,7 +7,7 @@
+ ********************************************************/
+ #include <config.h>
+
+-#include <malloc.h>
++#include <stdlib.h>
+ #include <unistd.h>
+ #include <sys/mman.h>
+ #include <errno.h>
+--- lib/loader/win32.c.orig Sat Sep 16 17:03:28 2000
++++ lib/loader/win32.c Sat Sep 16 17:03:30 2000
+@@ -13,7 +13,7 @@
+ #include "win32.h"
+ #include <stdio.h>
+ #include <pthread.h>
+-#include <malloc.h>
++#include <stdlib.h>
+ #include <time.h>
+ #include <sys/types.h>
+ #include <sys/time.h>
+--- lib/loader/driver.c.orig Sat Sep 16 17:04:30 2000
++++ lib/loader/driver.c Sat Sep 16 17:04:32 2000
+@@ -1,6 +1,6 @@
+ #include <config.h>
+ #include <stdio.h>
+-#include <malloc.h>
++#include <stdlib.h>
+ #include <wine/driver.h>
+ #include <wine/pe_image.h>
+ #include <wine/winreg.h>
+--- lib/loader/resource.c.orig Sat Sep 16 17:07:41 2000
++++ lib/loader/resource.c Sat Sep 16 17:08:00 2000
+@@ -253,6 +253,56 @@
+ return RES_SizeofResource( hModule, hRsrc );
+ }
+
++/**********************************************************************
++ * LoadStringW (USER32.376)
++ */
++INT WINAPI LoadStringW( HINSTANCE instance, UINT resource_id,
++ LPWSTR buffer, INT buflen )
++{
++ HGLOBAL hmem;
++ HRSRC hrsrc;
++ WCHAR *p;
++ int string_num;
++ int i;
++
++ if (HIWORD(resource_id)==0xFFFF) /* netscape 3 passes this */
++ resource_id = (UINT)(-((INT)resource_id));
++ TRACE("instance = %04x, id = %04x, buffer = %08x, "
++ "length = %d\n", instance, (int)resource_id, (int) buffer, buflen);
++
++ /* Use bits 4 - 19 (incremented by 1) as resourceid, mask out
++ * 20 - 31. */
++ hrsrc = FindResourceW( instance, (LPCWSTR)(((resource_id>>4)&0xffff)+1),
++ RT_STRINGW );
++ if (!hrsrc) return 0;
++ hmem = LoadResource( instance, hrsrc );
++ if (!hmem) return 0;
++
++ p = LockResource(hmem);
++ string_num = resource_id & 0x000f;
++ for (i = 0; i < string_num; i++)
++ p += *p + 1;
++
++ TRACE("strlen = %d\n", (int)*p );
++
++ if (buffer == NULL) return *p;
++ i = min(buflen - 1, *p);
++ if (i > 0) {
++ memcpy(buffer, p + 1, i * sizeof (WCHAR));
++ buffer[i] = (WCHAR) 0;
++ } else {
++ if (buflen > 1) {
++ buffer[0] = (WCHAR) 0;
++ return 0;
++ }
++#if 0
++ WARN("Dont know why caller give buflen=%d *p=%d trying to obtain string '%s'\n", buflen, *p, p + 1);
++#endif
++ }
++
++ TRACE("String loaded !\n");
++ return i;
++}
+
+
+ /**********************************************************************
+@@ -303,57 +353,6 @@
+ HeapFree( GetProcessHeap(), 0, wbuf );
+
+ return retval;
+-}
+-
+-/**********************************************************************
+- * LoadStringW (USER32.376)
+- */
+-INT WINAPI LoadStringW( HINSTANCE instance, UINT resource_id,
+- LPWSTR buffer, INT buflen )
+-{
+- HGLOBAL hmem;
+- HRSRC hrsrc;
+- WCHAR *p;
+- int string_num;
+- int i;
+-
+- if (HIWORD(resource_id)==0xFFFF) /* netscape 3 passes this */
+- resource_id = (UINT)(-((INT)resource_id));
+- TRACE("instance = %04x, id = %04x, buffer = %08x, "
+- "length = %d\n", instance, (int)resource_id, (int) buffer, buflen);
+-
+- /* Use bits 4 - 19 (incremented by 1) as resourceid, mask out
+- * 20 - 31. */
+- hrsrc = FindResourceW( instance, (LPCWSTR)(((resource_id>>4)&0xffff)+1),
+- RT_STRINGW );
+- if (!hrsrc) return 0;
+- hmem = LoadResource( instance, hrsrc );
+- if (!hmem) return 0;
+-
+- p = LockResource(hmem);
+- string_num = resource_id & 0x000f;
+- for (i = 0; i < string_num; i++)
+- p += *p + 1;
+-
+- TRACE("strlen = %d\n", (int)*p );
+-
+- if (buffer == NULL) return *p;
+- i = min(buflen - 1, *p);
+- if (i > 0) {
+- memcpy(buffer, p + 1, i * sizeof (WCHAR));
+- buffer[i] = (WCHAR) 0;
+- } else {
+- if (buflen > 1) {
+- buffer[0] = (WCHAR) 0;
+- return 0;
+- }
+-#if 0
+- WARN("Dont know why caller give buflen=%d *p=%d trying to obtain string '%s'\n", buflen, *p, p + 1);
+-#endif
+- }
+-
+- TRACE("String loaded !\n");
+- return i;
+ }
+
+ /* Messages...used by FormatMessage32* (KERNEL32.something)
+--- lib/videocodec/VideoDecoder.cpp.orig Sat Sep 16 17:11:41 2000
++++ lib/videocodec/VideoDecoder.cpp Sat Sep 16 17:16:25 2000
+@@ -20,7 +20,6 @@
+ #include <fcntl.h>
+ #include <sys/mman.h>
+ #include <sys/types.h>
+-#include <malloc.h>
+ #include <stdio.h>
+ #include <unistd.h>
+ #include <strstream>
+--- lib/avifile/Cache.h.orig Sat Sep 16 17:22:11 2000
++++ lib/avifile/Cache.h Sat Sep 16 17:22:14 2000
+@@ -2,7 +2,7 @@
+ #include <default.h>
+ #define _LARGEFILE64_SOURCE
+ #include <unistd.h>
+-#include <malloc.h>
++#include <stdlib.h>
+ #include <string.h>
+ #include <stdio.h>
+ #include <pthread.h>
+--- lib/avifile/FastReadStream.cpp.orig Sat Sep 16 17:23:45 2000
++++ lib/avifile/FastReadStream.cpp Sat Sep 16 17:23:47 2000
+@@ -8,7 +8,7 @@
+ #include <features.h>
+ #endif
+ #include <unistd.h>
+-#include <malloc.h>
++#include <stdlib.h>
+
+ #ifdef __FreeBSD__
+ #define lseek64 lseek
+--- lib/avifile/AviRead.h.orig Sat Sep 16 17:25:10 2000
++++ lib/avifile/AviRead.h Sat Sep 16 17:25:13 2000
+@@ -10,7 +10,7 @@
+ #include <avifmt.h>
+ #include <default.h>
+ #include <unistd.h>
+-#include <malloc.h>
++#include <stdlib.h>
+ #include <string.h>
+ #include <stdio.h>
+ #include <pthread.h>
+--- lib/avifile/AviWrite.h.orig Sat Sep 16 17:26:35 2000
++++ lib/avifile/AviWrite.h Sat Sep 16 17:26:37 2000
+@@ -11,7 +11,7 @@
+ #include <avifmt.h>
+ #include <default.h>
+ #include <unistd.h>
+-#include <malloc.h>
++#include <stdlib.h>
+ #include <string.h>
+ #include <stdio.h>
+ #include <pthread.h>
+--- samples/benchmark/main.cpp.orig Sat Sep 16 17:28:22 2000
++++ samples/benchmark/main.cpp Sat Sep 16 17:28:24 2000
+@@ -9,7 +9,6 @@
+ #include <config.h>
+
+ #include <stdio.h>
+-#include <malloc.h>
+ #include <signal.h>
+ #include <iostream.h>
+ #include <unistd.h>
+--- samples/benchmark/renderer.cpp.orig Sat Sep 16 17:29:28 2000
++++ samples/benchmark/renderer.cpp Sat Sep 16 17:29:29 2000
+@@ -14,7 +14,7 @@
+ #include <sys/ipc.h>
+ #include <sys/shm.h>
+
+-#include <malloc.h>
++#include <stdlib.h>
+ #include <pthread.h>
+ #include "renderer.h"
+ #include "RegAccess.h"
+--- player/renderer.cpp.orig Sat Sep 16 22:31:56 2000
++++ player/renderer.cpp Sat Sep 16 22:32:02 2000
+@@ -16,7 +16,7 @@
+ #include <sys/ipc.h>
+ #include <sys/shm.h>
+
+-#include <malloc.h>
++#include <stdlib.h>
+ #include <pthread.h>
+ #include "renderer.h"
+ #include "RegAccess.h"
diff --git a/graphics/win32-codecs/pkg-comment b/graphics/win32-codecs/pkg-comment
new file mode 100644
index 000000000000..ab338ddd7a65
--- /dev/null
+++ b/graphics/win32-codecs/pkg-comment
@@ -0,0 +1 @@
+An MPEG-4 (DivX) video player
diff --git a/graphics/win32-codecs/pkg-descr b/graphics/win32-codecs/pkg-descr
new file mode 100644
index 000000000000..afc3e64bb62c
--- /dev/null
+++ b/graphics/win32-codecs/pkg-descr
@@ -0,0 +1,3 @@
+An MPEG-4 (aka DivX) player built around the Windows binaries,
+but does not need Wine.
+There is also a xmps plugin you can build (manually).
diff --git a/graphics/win32-codecs/pkg-plist b/graphics/win32-codecs/pkg-plist
new file mode 100644
index 000000000000..3ab050fd46ee
--- /dev/null
+++ b/graphics/win32-codecs/pkg-plist
@@ -0,0 +1,66 @@
+include/avifile/audiodecoder.h
+include/avifile/audioencoder.h
+include/avifile/avifile.h
+include/avifile/avifmt.h
+include/avifile/aviplay.h
+include/avifile/aviutil.h
+include/avifile/config.h
+include/avifile/default.h
+include/avifile/except.h
+include/avifile/loader.h
+include/avifile/registry.h
+include/avifile/videodecoder.h
+include/avifile/videoencoder.h
+include/avifile/wine/basetsd.h
+include/avifile/wine/config.h
+include/avifile/wine/debugtools.h
+include/avifile/wine/driver.h
+include/avifile/wine/elfdll.h
+include/avifile/wine/heap.h
+include/avifile/wine/ldt.h
+include/avifile/wine/mmreg.h
+include/avifile/wine/module.h
+include/avifile/wine/msacm.h
+include/avifile/wine/msacmdrv.h
+include/avifile/wine/ntdef.h
+include/avifile/wine/pe_image.h
+include/avifile/wine/poppack.h
+include/avifile/wine/pshpack1.h
+include/avifile/wine/pshpack2.h
+include/avifile/wine/pshpack4.h
+include/avifile/wine/pshpack8.h
+include/avifile/wine/vfw.h
+include/avifile/wine/winbase.h
+include/avifile/wine/windef.h
+include/avifile/wine/windows.h
+include/avifile/wine/winerror.h
+include/avifile/wine/winestring.h
+include/avifile/wine/winnt.h
+include/avifile/wine/winreg.h
+include/avifile/wine/winuser.h
+@dirrm include/avifile/wine
+@dirrm include/avifile
+bin/aviplay
+bin/benchmark
+share/avifile/open.ppm
+share/avifile/pause.ppm
+share/avifile/play.ppm
+share/avifile/stop.ppm
+share/avifile/test.png
+@dirrm share/avifile
+lib/win32/ativcr2.dll
+lib/win32/divxa32.acm
+lib/win32/divxc32.dll
+lib/win32/divxc32f.dll
+lib/win32/i263_32.drv
+lib/win32/iccvid.dll
+lib/win32/ir32_32.dll
+lib/win32/ir41_32.dll
+lib/win32/ir41_qc.dll
+lib/win32/ir50_32.dll
+lib/win32/ir50_qc.dll
+lib/win32/mpg4c32.dll
+@dirrm lib/win32
+lib/libaviplay.so
+@exec /sbin/ldconfig -m %D/lib
+@unexec /sbin/ldconfig -R