aboutsummaryrefslogtreecommitdiff
path: root/multimedia/ffmpeg
diff options
context:
space:
mode:
authorMario Sergio Fujikawa Ferreira <lioux@FreeBSD.org>2005-06-06 02:05:01 +0000
committerMario Sergio Fujikawa Ferreira <lioux@FreeBSD.org>2005-06-06 02:05:01 +0000
commit74ca587a9e593f461527465a489bd63c186f1847 (patch)
treec5c099911c3e57ee78e318ad37b3b3ec9c013c8d /multimedia/ffmpeg
parentc7a6f12d72438292339d1995109b26461c806e84 (diff)
downloadports-74ca587a9e593f461527465a489bd63c186f1847.tar.gz
ports-74ca587a9e593f461527465a489bd63c186f1847.zip
Notes
Diffstat (limited to 'multimedia/ffmpeg')
-rw-r--r--multimedia/ffmpeg/Makefile48
-rw-r--r--multimedia/ffmpeg/files/grab_bsdbktr.c38
2 files changed, 59 insertions, 27 deletions
diff --git a/multimedia/ffmpeg/Makefile b/multimedia/ffmpeg/Makefile
index 936b901d48fd..fd008329a32a 100644
--- a/multimedia/ffmpeg/Makefile
+++ b/multimedia/ffmpeg/Makefile
@@ -7,7 +7,7 @@
PORTNAME= ffmpeg
DISTVERSION= 0.4.9-pre1
-PORTREVISION= 2
+PORTREVISION= 3
CATEGORIES= multimedia audio net
MASTER_SITES= ${MASTER_SITE_SOURCEFORGE_EXTENDED}
MASTER_SITE_SUBDIR= ffmpeg
@@ -22,8 +22,9 @@ USE_REINPLACE= yes
WANT_SDL= yes
CONFIGURE_ARGS= --cc="${CC}" --prefix="${PREFIX}" \
--make="${GMAKE}" --enable-shared \
- --extra-ldflags="-L${LOCALBASE}/lib -L${X11BASE}/lib" \
- --extra-libs"-lm" \
+ --extra-ldflags="-L${WRKSRC}/libavcodec -L${WRKSRC}/libavcodec/libpostproc \
+ -L${LOCALBASE}/lib -L${X11BASE}/lib " \
+ --extra-libs="-lm" \
--disable-debug
PLIST_SUB= SHLIB_VERSION=${SHLIB_VERSION}
@@ -154,28 +155,29 @@ LIB_DEPENDS+= mp3lame.0:${PORTSDIR}/audio/lame
CONFIGURE_ARGS+= --enable-mp3lame
.endif
## optimization
+# breaks ffmpeg build if defined
+CFLAGS+= -fno-force-addr
.if ${OSVERSION} > 502124
. ifdef(WITH_OPTIMIZED_CFLAGS)
CONFIGURE_ARGS+= --extra-cflags="-fPIC -DPIC -I${LOCALBASE}/include \
+ ${CFLAGS} \
-I${X11BASE}/include \
- -ffast-math -fomit-frame-pointer -fno-unit-at-a-time" \
- --extra-ldflags="-L${LOCALBASE}/lib -L${X11BASE}/lib -lm"
+ -ffast-math -fomit-frame-pointer -fno-unit-at-a-time"
. else
CONFIGURE_ARGS+= --extra-cflags="-fPIC -DPIC -I${LOCALBASE}/include \
-I${X11BASE}/include \
- -fomit-frame-pointer -fno-unit-at-a-time" \
- --extra-ldflags="-L${LOCALBASE}/lib -L${X11BASE}/lib -lm "
-# --disable-opts
+ -fomit-frame-pointer -fno-unit-at-a-time"
. endif
.else
+. ifdef(WITH_OPTIMIZED_CFLAGS)
CONFIGURE_ARGS+= --extra-cflags="-fPIC -DPIC -I${LOCALBASE}/include \
+ ${CFLAGS} \
-I${X11BASE}/include \
- -ffast-math -fomit-frame-pointer" \
- --extra-ldflags="-L${LOCALBASE}/lib -L${X11BASE}/lib -lm"
+ -ffast-math -fomit-frame-pointer"
. else
CONFIGURE_ARGS+= --extra-cflags="-fPIC -DPIC -I${LOCALBASE}/include \
- -I${X11BASE}/include" \
- --extra-ldflags="-L${WRKSRC}/libavcodec -L${LOCALBASE}/lib -L${X11BASE}/lib -lm "
+ -I${X11BASE}/include"
+. endif
.endif
## vhook
@@ -214,6 +216,15 @@ CONFIGURE_ARGS+= --enable-gpl
CONFIGURE_ARGS+= --enable-shared-pp
PLIST_FILES+= include/ffmpeg/postproc/postprocess.h
PLIST_DIRS+= include/ffmpeg/postproc
+. ifdef(GPLLIBS)
+CONFIGURE_ARGS+= --enable-pp
+
+LIB_POSTPROC= lib/libpostproc.a \
+ lib/libpostproc.so \
+ lib/libpostproc.so.0 \
+ lib/libpostproc.so.${SHLIB_VERSION}
+PLIST_FILES+= ${LIB_POSTPROC}
+. endif
.endif
## ffserver
.ifdef(WITHOUT_FFMPEG_FFSERVER)
@@ -349,6 +360,11 @@ post-patch:
-e 's|#include <SDL|#include <SDL11/SDL|'
.endif
+pre-build:
+.ifndef(WITHOUT_POSTPROCESS)
+ @cd ${WRKSRC}/libavcodec/libpostproc && ${GMAKE}
+.endif
+
post-install:
.ifndef(NOPORTDOCS)
@${MKDIR} ${DOCSDIR}
@@ -383,6 +399,14 @@ post-install:
@${MKDIR} ${PREFIX}/include/ffmpeg/postproc
@${INSTALL_DATA} ${WRKSRC}/libavcodec/libpostproc/postprocess.h \
${PREFIX}/include/ffmpeg/postproc/postprocess.h
+. ifdef(GPLLIBS)
+. for lib in libpostproc.a libpostproc.so
+ @${INSTALL_DATA} ${WRKSRC}/libavcodec/libpostproc/${lib} \
+ ${PREFIX}/lib
+. endfor
+ @${LN} -sf libpostproc.so ${PREFIX}/lib/libpostproc.so.0
+ @${LN} -sf libpostproc.so ${PREFIX}/lib/libpostproc.so.${SHLIB_VERSION}
+. endif
.endif
.include <bsd.port.post.mk>
diff --git a/multimedia/ffmpeg/files/grab_bsdbktr.c b/multimedia/ffmpeg/files/grab_bsdbktr.c
index 853cf55221f4..21111c827e44 100644
--- a/multimedia/ffmpeg/files/grab_bsdbktr.c
+++ b/multimedia/ffmpeg/files/grab_bsdbktr.c
@@ -1,6 +1,6 @@
/*
* FreeBSD video grab interface
- * Copyright (c) 2002 Steve O'Hara-Smith
+ * Copyright (c) 2002,2003,2004,2005 Steve O'Hara-Smith
* based on
* Linux video grab interface
* Copyright (c) 2000,2001 Gerard Lantau.
@@ -24,6 +24,10 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include "avformat.h"
+#if defined __DragonFly__
+#include <dev/video/meteor/ioctl_meteor.h>
+#include <dev/video/bktr/ioctl_bt848.h>
+#else
#if __FreeBSD__ >= 502100
#include <dev/bktr/ioctl_meteor.h>
#include <dev/bktr/ioctl_bt848.h>
@@ -31,6 +35,7 @@
#include <machine/ioctl_meteor.h>
#include <machine/ioctl_bt848.h>
#endif
+#endif
#include <unistd.h>
#include <fcntl.h>
#include <sys/ioctl.h>
@@ -136,7 +141,6 @@ static int bktr_init (const char *video_device, int width, int height,
geo.rows = height;
geo.columns = width;
geo.frames = 1;
-// geo.oformat = METEOR_GEO_YUV_422 | METEOR_GEO_YUV_12;
geo.oformat = METEOR_GEO_YUV_PACKED;
switch (format) {
@@ -167,7 +171,7 @@ static int bktr_init (const char *video_device, int width, int height,
perror ("METEORSINPUT");
return -1;
}
- *video_buf = (u_int8_t *) mmap((caddr_t)0, width*height*2,
+ *video_buf = (u_int8_t *) mmap((void *) 0, width*height*2,
PROT_READ, MAP_SHARED, *video_fd, (off_t) 0);
if (*video_buf == MAP_FAILED) {
perror ("mmap");
@@ -175,8 +179,11 @@ static int bktr_init (const char *video_device, int width, int height,
}
if (frequency != 0.0) {
ioctl_frequency = (unsigned long)(frequency*16);
- if (ioctl(*tuner_fd, TVTUNER_SETFREQ, &ioctl_frequency)<0)
- perror("TVTUNER_SETFREQ");
+ if (*tuner_fd > 0)
+ {
+ if (ioctl(*tuner_fd, TVTUNER_SETFREQ, &ioctl_frequency)<0)
+ perror("TVTUNER_SETFREQ");
+ }
}
c = METEOR_CAP_CONTINOUS;
ioctl(*video_fd, METEORCAPTUR, &c);
@@ -191,9 +198,12 @@ static void bktr_getframe(u_int64_t per_frame)
static u_int64_t last_frame_time = 0;
curtime = av_gettime();
+ if (!last_frame_time)
+ last_frame_time = curtime;
+
if (!last_frame_time
|| ((last_frame_time + per_frame) > curtime)) {
- if (!usleep (last_frame_time + per_frame + per_frame/8 - curtime)) {
+ if (!usleep (last_frame_time + per_frame + per_frame/2 + per_frame/4 - curtime)) {
if (!nsignals)
printf ("\nSLEPT NO signals - %d microseconds late\n",
(int) (av_gettime() - last_frame_time - per_frame));
@@ -224,16 +234,13 @@ static int grab_read_packet(AVFormatContext *s1, AVPacket *pkt)
size = s->width * s->height;
halfsize = size << 1;
-// if (av_new_packet(pkt, size + halfsize) < 0)
if (av_new_packet(pkt, size + size) < 0)
- return -EIO;
+ return -AVERROR_IO;
bktr_getframe (s->per_frame);
pkt->pts = av_gettime() & ((1LL << 48) - 1);
bf_memcpy (pkt->data, video_buf, size + size);
-// bf_memcpy (pkt->data, video_buf, size + halfsize);
-// return size + halfsize;
return size + size;
}
@@ -265,7 +272,6 @@ static int grab_read_header (AVFormatContext *s1, AVFormatParameters *ap)
s->per_frame = ((int64_t)1000000 * s->frame_rate_base) / s->frame_rate;
st->codec.codec_type = CODEC_TYPE_VIDEO;
-// st->codec.pix_fmt = PIX_FMT_YUV420P;
st->codec.pix_fmt = PIX_FMT_YUV422;
st->codec.codec_id = CODEC_ID_RAWVIDEO;
st->codec.width = width;
@@ -273,9 +279,9 @@ static int grab_read_header (AVFormatContext *s1, AVFormatParameters *ap)
st->codec.frame_rate = frame_rate;
st->codec.frame_rate_base = frame_rate_base;
- av_set_pts_info(s1, 48, 1, 1000000); /* 48 bits pts in use */
+ av_set_pts_info(st, 48, 1, 1000000); /* 48 bits pts in use */
- if (ap->standard) {
+ if (ap->standard) {
if (!strcasecmp(ap->standard, "pal"))
format = PAL;
if (!strcasecmp(ap->standard, "secam"))
@@ -286,7 +292,7 @@ static int grab_read_header (AVFormatContext *s1, AVFormatParameters *ap)
if (bktr_init (video_device, width, height, format, &video_buf,
&(s->fd), &(s->tuner_fd), -1, 0.0) < 0)
- return -EIO;
+ return -AVERROR_IO;
return 0;
}
@@ -296,9 +302,11 @@ static int grab_read_close (AVFormatContext *s1)
int c = METEOR_CAP_STOP_CONT;
ioctl(s->fd, METEORCAPTUR, &c);
+ c = METEOR_SIG_MODE_MASK;
+ ioctl(s->fd, METEORSSIGNAL, &c);
close(s->fd);
close(s->tuner_fd);
- av_free(s);
+ munmap((void *)video_buf, sizeof(video_buf));
return 0;
}