aboutsummaryrefslogtreecommitdiffstats
path: root/multimedia/ffmpeg045/files
diff options
context:
space:
mode:
authorlioux <lioux@FreeBSD.org>2002-10-12 03:28:30 +0800
committerlioux <lioux@FreeBSD.org>2002-10-12 03:28:30 +0800
commit360b2dc1a40ea3071627ed3a0717e071e5b6c6dd (patch)
tree2c49729f6416f72b31452bacf8febeb30053164d /multimedia/ffmpeg045/files
parentc3438118e8f83e77aecfdc74a4a38ecab98ee857 (diff)
downloadfreebsd-ports-graphics-360b2dc1a40ea3071627ed3a0717e071e5b6c6dd.tar.gz
freebsd-ports-graphics-360b2dc1a40ea3071627ed3a0717e071e5b6c6dd.tar.zst
freebsd-ports-graphics-360b2dc1a40ea3071627ed3a0717e071e5b6c6dd.zip
o Update ffmpeg to CVS snapshot dated Aug 20, 2002. Bump PORTREVISION
since this is unversioned. o Add booktree capture support with patches kindly supplied by "Steve O'Hara-Smith" <steve@sohara.org>. Work is in progress to get these merged back into ffmpeg's CVS repo o Add WITH_MP3 for lame mp3 support o Add WITH_VORBIS for vorbis support o Install shared library for the first time, begin versioning at 0 Reviewed by: freebsd-multimedia mailing list, "Steve O'Hara-Smith" <steve@sohara.org>, Anish Mistry <mistry.7@osu.edu>
Diffstat (limited to 'multimedia/ffmpeg045/files')
-rw-r--r--multimedia/ffmpeg045/files/grab_bsdbktr.c248
-rw-r--r--multimedia/ffmpeg045/files/patch-Makefile50
-rw-r--r--multimedia/ffmpeg045/files/patch-ffmpeg.c35
-rw-r--r--multimedia/ffmpeg045/files/patch-ffserver.c16
-rw-r--r--multimedia/ffmpeg045/files/patch-libav::Makefile29
-rw-r--r--multimedia/ffmpeg045/files/patch-libav::avformat.h9
-rw-r--r--multimedia/ffmpeg045/files/patch-libavcodec::Makefile27
7 files changed, 358 insertions, 56 deletions
diff --git a/multimedia/ffmpeg045/files/grab_bsdbktr.c b/multimedia/ffmpeg045/files/grab_bsdbktr.c
new file mode 100644
index 00000000000..6f171ea7b3a
--- /dev/null
+++ b/multimedia/ffmpeg045/files/grab_bsdbktr.c
@@ -0,0 +1,248 @@
+/*
+ * FreeBSD video grab interface
+ * Copyright (c) 2002 Steve O'Hara-Smith
+ * based on
+ * Linux video grab interface
+ * Copyright (c) 2000,2001 Gerard Lantau.
+ * and
+ * simple_grab.c Copyright (c) 1999 Roger Hardiman
+ *
+ * GPL virus inherited:
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+#include "avformat.h"
+#include <machine/ioctl_meteor.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <sys/ioctl.h>
+#include <sys/mman.h>
+#include <sys/time.h>
+#include <signal.h>
+
+typedef struct {
+ int fd;
+ int tuner_fd;
+ int frame_format; /* see VIDEO_PALETTE_xxx */
+ int width, height;
+ int frame_rate;
+ int frame_size;
+} VideoData;
+
+const char *video_device = "/dev/bktr0";
+
+#define GRABBER_SETTLE_TIME 3
+#define PAL 1
+#define NTSC 2
+/* PAL is 768 x 576. NTSC is 640 x 480 */
+#define PAL_HEIGHT 576
+#define NTSC_HEIGHT 480
+
+#ifndef VIDEO_FORMAT
+#define VIDEO_FORMAT NTSC
+#endif
+
+#ifndef VIDEO_INPUT
+#define VIDEO_INPUT METEOR_INPUT_DEV0;
+#endif
+
+static UINT8 *video_buf;
+
+static void catchsignal(int signal)
+{
+ return;
+}
+
+static int bktr_init(AVFormatContext *s1, AVFormatParameters *ap)
+{
+ VideoData *s = s1->priv_data;
+ int width, height;
+ int video_fd;
+ int format = VIDEO_FORMAT;
+ struct meteor_geomet geo;
+ int c;
+ struct sigaction act,old;
+
+ memset(&act,0,sizeof(act));
+ sigemptyset(&act.sa_mask);
+ act.sa_handler = catchsignal;
+ sigaction(SIGUSR1,&act,&old);
+ sigaction(SIGALRM,&act,&old);
+
+ width = s->width;
+ height = s->height;
+
+ s->tuner_fd = open ("/dev/tuner0", O_RDWR);
+
+ video_fd = open(video_device, O_RDWR);
+ if (video_fd < 0) {
+ perror(video_device);
+ return -EIO;
+ }
+ s->fd=video_fd;
+ geo.rows = height;
+ geo.columns = width;
+ geo.frames = 1;
+ geo.oformat = METEOR_GEO_YUV_PACKED; // RGB
+ if ((format == PAL) && (height <= (PAL_HEIGHT/2)))
+ geo.oformat |= METEOR_GEO_ODD_ONLY;
+ if ((format == NTSC) && (height <= (NTSC_HEIGHT/2)))
+ geo.oformat |= METEOR_GEO_ODD_ONLY;
+
+ if (ioctl(video_fd, METEORSETGEO, &geo) < 0) {
+ perror ("METEORSETGEO");
+ return -EIO;
+ }
+
+ switch (format) {
+ case PAL: c = METEOR_FMT_PAL; break;
+ case NTSC: c = METEOR_FMT_NTSC; break;
+ default: c = METEOR_FMT_PAL; break;
+ }
+
+ if (ioctl(video_fd, METEORSFMT, &c) < 0) {
+ perror ("METEORSFMT");
+ return -EIO;
+ }
+
+ c = VIDEO_INPUT;
+ if (ioctl(video_fd, METEORSINPUT, &c) < 0) {
+ perror ("METEORSINPUT");
+ return -EIO;
+ }
+ video_buf = mmap((caddr_t)0, width*height*2, PROT_READ, MAP_SHARED, // RGB
+ video_fd, (off_t) 0);
+ if (video_buf == MAP_FAILED) {
+ perror ("mmap");
+ return -EIO;
+ }
+ c = METEOR_CAP_CONTINOUS;
+ ioctl(s->fd, METEORCAPTUR, &c);
+ c = SIGUSR1;
+ ioctl (s->fd, METEORSSIGNAL, &c);
+ return 0;
+}
+
+static void bf_yuv422_to_yuv420p(UINT8 *lum, UINT8 *cb, UINT8 *cr,
+ UINT8 *src, int width, int height)
+{
+ int x, y;
+ UINT8 *p = src;
+ for(y=0;y<height;y+=2) {
+ for(x=0;x<width;x+=2) {
+ lum[0] = p[1];
+ cb[0] = p[0];
+ lum[1] = p[3];
+ cr[0] = p[2];
+ p += 4;
+ lum += 2;
+ cb++;
+ cr++;
+ }
+ for(x=0;x<width;x+=2) {
+ lum[0] = p[1];
+ lum[1] = p[3];
+ p += 4;
+ lum += 2;
+ }
+ }
+}
+
+/* note: we support only one picture read at a time */
+static int grab_read_packet(AVFormatContext *s1, AVPacket *pkt)
+{
+ VideoData *s = s1->priv_data;
+ int size, halfsize;
+ sigset_t msig;
+ UINT8 *lum, *cb, *cr;
+
+ size = s->width * s->height;
+ halfsize = size << 1;
+ if (av_new_packet(pkt, size + halfsize) < 0)
+ return -EIO;
+
+ sigemptyset (&msig);
+ sigsuspend (&msig);
+
+ lum = pkt->data;
+ cb = lum + size;
+ cr = cb + size/4;
+
+ bf_yuv422_to_yuv420p (lum, cb, cr, video_buf, s->width, s->height);
+
+ return size + halfsize;
+}
+
+static int grab_read_header (AVFormatContext *s1, AVFormatParameters *ap)
+{
+ VideoData *s = s1->priv_data;
+ AVStream *st;
+ int width, height;
+ int frame_rate;
+
+ if (!ap || ap->width <= 0 || ap->height <= 0 || ap->frame_rate <= 0)
+ return -1;
+
+ width = ap->width;
+ height = ap->height;
+ frame_rate = ap->frame_rate;
+ st = av_new_stream(s1, 0);
+ if (!st)
+ return -ENOMEM;
+ s1->priv_data = s;
+ s1->nb_streams = 1;
+ s1->streams[0] = st;
+
+ s->width = width;
+ s->height = height;
+ s->frame_rate = frame_rate;
+ s->frame_size = width*height*2; /*RGB*/
+ st->codec.pix_fmt = PIX_FMT_YUV420P;
+ st->codec.codec_id = CODEC_ID_RAWVIDEO;
+ st->codec.width = width;
+ st->codec.height = height;
+ st->codec.frame_rate = frame_rate;
+
+ return bktr_init(s1, ap);
+}
+
+static int grab_read_close (AVFormatContext *s1)
+{
+ VideoData *s = s1->priv_data;
+
+ int c = METEOR_CAP_STOP_CONT;
+ ioctl(s->fd, METEORCAPTUR, &c);
+ close(s->fd);
+ close(s->tuner_fd);
+ free(s);
+ return 0;
+}
+
+AVInputFormat video_grab_device_format = {
+ "video_grab_device",
+ "video grab",
+ sizeof(VideoData),
+ NULL,
+ grab_read_header,
+ grab_read_packet,
+ grab_read_close,
+ flags: AVFMT_NOFILE,
+};
+
+int video_grab_init(void)
+{
+ av_register_input_format(&video_grab_device_format);
+ return 0;
+}
diff --git a/multimedia/ffmpeg045/files/patch-Makefile b/multimedia/ffmpeg045/files/patch-Makefile
index 2aaebddaa06..eebc45c2755 100644
--- a/multimedia/ffmpeg045/files/patch-Makefile
+++ b/multimedia/ffmpeg045/files/patch-Makefile
@@ -1,30 +1,26 @@
---- Makefile.orig Wed Aug 15 10:11:45 2001
-+++ Makefile Tue Sep 25 15:10:12 2001
-@@ -3,8 +3,8 @@
- #
- include config.mak
+--- Makefile.orig Sun Sep 1 15:07:34 2002
++++ Makefile Tue Oct 8 13:51:49 2002
+@@ -6,12 +6,12 @@
--CFLAGS= $(OPTFLAGS) -Wall -g -I./libavcodec -I./libav
--LDFLAGS= -g
-+CFLAGS= $(OPTFLAGS) -Wall -I./libavcodec -I./libav -I$(LOCALBASE)/include
-+LDFLAGS= -L$(LOCALBASE)/lib
- ifeq ($(TARGET_GPROF),yes)
- CFLAGS+=-p
- LDFLAGS+=-p
-@@ -19,13 +19,13 @@
- $(MAKE) -C libav all
+ VPATH=$(SRC_PATH)
- ffmpeg: ffmpeg.o libav/libav.a libavcodec/libavcodec.a
-- gcc $(LDFLAGS) -o $@ $^ -lm
-+ $(CC) $(LDFLAGS) -o $@ $^ -lm
+-CFLAGS= $(OPTFLAGS) -Wall -g -I. -I$(SRC_PATH) -I$(SRC_PATH)/libavcodec -I$(SRC_PATH)/libav -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_GNU_SOURCE
++CFLAGS= $(OPTFLAGS) -Wall -I. -I$(SRC_PATH) -I$(SRC_PATH)/libavcodec -I$(SRC_PATH)/libav -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_GNU_SOURCE
+ ifeq ($(CONFIG_DARWIN),yes)
+ LDFLAGS+= -g -d
+ FFSLDFLAGS= -Wl,-bind_at_load
+ else
+-LDFLAGS+= -g -Wl,--warn-common
++LDFLAGS+= -Wl,--warn-common
+ FFSLDFLAGS= -Wl,-E
+ endif
+
+@@ -60,7 +60,7 @@
+ ffserver$(EXE): ffserver.o $(DEP_LIBS)
+ $(CC) $(LDFLAGS) $(FFSLDFLAGS) \
+ -o $@ ffserver.o -L./libavcodec -L./libav \
+- -lavformat -lavcodec -ldl $(EXTRALIBS)
++ -lavformat -lavcodec $(EXTRALIBS)
- ffserver: ffserver.o libav/libav.a libavcodec/libavcodec.a
-- gcc $(LDFLAGS) -o $@ $^ -lm
-+ $(CC) $(LDFLAGS) -o $@ $^ -lm -lgnugetopt
-
- %.o: %.c
-- gcc $(CFLAGS) -c -o $@ $<
-+ $(CC) $(CFLAGS) -c -o $@ $<
-
- install: all
- install -s -m 755 $(PROG) $(prefix)/bin
+ ffplay: ffmpeg$(EXE)
+ ln -sf $< $@
diff --git a/multimedia/ffmpeg045/files/patch-ffmpeg.c b/multimedia/ffmpeg045/files/patch-ffmpeg.c
index 093e99aed89..2242cdb60be 100644
--- a/multimedia/ffmpeg045/files/patch-ffmpeg.c
+++ b/multimedia/ffmpeg045/files/patch-ffmpeg.c
@@ -1,10 +1,37 @@
---- ffmpeg.c.orig Mon Aug 13 18:23:57 2001
-+++ ffmpeg.c Tue Sep 25 14:47:58 2001
-@@ -35,6 +35,7 @@
+--- ffmpeg.c.orig Thu Oct 10 20:13:52 2002
++++ ffmpeg.c Thu Oct 10 20:14:03 2002
+@@ -36,6 +36,7 @@
+ #include <ctype.h>
- #include "avformat.h"
+#define INT64_C(x) x##LL
#define MAXINT64 INT64_C(0x7fffffffffffffff)
typedef struct {
+@@ -146,7 +147,7 @@
+ const char *audio_device = "none";
+ #endif
+ #ifndef CONFIG_VIDEO4LINUX
+-const char *v4l_device = "none";
++const char *video_device = "none";
+ #endif
+
+ typedef struct AVOutputStream {
+@@ -1601,7 +1602,7 @@
+
+ void opt_video_device(const char *arg)
+ {
+- v4l_device = strdup(arg);
++ video_device = strdup(arg);
+ }
+
+ void opt_audio_device(const char *arg)
+@@ -2099,7 +2100,7 @@
+ /* by now video grab has one stream */
+ ic->streams[0]->r_frame_rate = ap->frame_rate;
+ input_files[nb_input_files] = ic;
+- dump_format(ic, nb_input_files, v4l_device, 0);
++ dump_format(ic, nb_input_files, video_device, 0);
+ nb_input_files++;
+ }
+ if (has_audio) {
diff --git a/multimedia/ffmpeg045/files/patch-ffserver.c b/multimedia/ffmpeg045/files/patch-ffserver.c
index b0b444a8405..93bd700c513 100644
--- a/multimedia/ffmpeg045/files/patch-ffserver.c
+++ b/multimedia/ffmpeg045/files/patch-ffserver.c
@@ -1,18 +1,18 @@
---- ffserver.c.orig Tue Sep 25 14:53:44 2001
-+++ ffserver.c Tue Sep 25 14:55:12 2001
+--- ffserver.c.orig Tue Oct 8 13:45:36 2002
++++ ffserver.c Tue Oct 8 13:46:10 2002
@@ -20,7 +20,6 @@
- #include <stdlib.h>
- #include <stdio.h>
- #include <string.h>
+ #include "avformat.h"
+
+ #include <stdarg.h>
-#include <netinet/in.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/ioctl.h>
-@@ -31,6 +30,7 @@
- #include <getopt.h>
+@@ -30,6 +29,7 @@
+ #include <time.h>
#include <sys/types.h>
#include <sys/socket.h>
+#include <netinet/in.h>
+ #include <sys/wait.h>
#include <arpa/inet.h>
#include <netdb.h>
- #include <ctype.h>
diff --git a/multimedia/ffmpeg045/files/patch-libav::Makefile b/multimedia/ffmpeg045/files/patch-libav::Makefile
index 34bf5410ed7..bc4294226b2 100644
--- a/multimedia/ffmpeg045/files/patch-libav::Makefile
+++ b/multimedia/ffmpeg045/files/patch-libav::Makefile
@@ -1,9 +1,20 @@
---- libav/Makefile.orig Tue Aug 14 19:32:28 2001
-+++ libav/Makefile Tue Sep 25 15:05:38 2001
-@@ -1,5 +1,5 @@
- include ../config.mak
--CFLAGS= $(OPTFLAGS) -Wall -g -I../libavcodec -DHAVE_AV_CONFIG_H
-+CFLAGS= $(OPTFLAGS) -Wall -I../libavcodec -I$(LOCALBASE)/include -DHAVE_AV_CONFIG_H
-
- OBJS= rm.o mpeg.o asf.o avienc.o jpeg.o swf.o wav.o raw.o \
- avidec.o ffm.o \
+--- libav/Makefile.orig Tue Oct 8 13:54:16 2002
++++ libav/Makefile Tue Oct 8 13:54:30 2002
+@@ -6,7 +6,7 @@
+
+ VPATH=$(SRC_PATH)/libav
+
+-CFLAGS= $(OPTFLAGS) -Wall -g -I.. -I$(SRC_PATH) -I$(SRC_PATH)/libavcodec -DHAVE_AV_CONFIG_H -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_GNU_SOURCE
++CFLAGS= $(OPTFLAGS) -Wall -I.. -I$(SRC_PATH) -I$(SRC_PATH)/libavcodec -DHAVE_AV_CONFIG_H -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_GNU_SOURCE
+
+ OBJS= utils.o cutils.o allformats.o
+
+@@ -17,7 +17,7 @@
+ OBJS+= avio.o aviobuf.o file.o
+
+ ifeq ($(CONFIG_VIDEO4LINUX),yes)
+-OBJS+= grab.o
++OBJS+= grab_bsdbktr.o
+ endif
+
+ ifeq ($(CONFIG_AUDIO_OSS),yes)
diff --git a/multimedia/ffmpeg045/files/patch-libav::avformat.h b/multimedia/ffmpeg045/files/patch-libav::avformat.h
new file mode 100644
index 00000000000..3199bc4a0bb
--- /dev/null
+++ b/multimedia/ffmpeg045/files/patch-libav::avformat.h
@@ -0,0 +1,9 @@
+--- libav/avformat.h Mon Jul 8 04:38:40 2002
++++ libav/avformat.h Sun Jul 14 15:22:58 2002
+@@ -284,5 +284,5 @@
+ int video_grab_init(void);
+ int audio_init(void);
+
+-extern const char *v4l_device;
++extern const char *video_device;
+ extern const char *audio_device;
diff --git a/multimedia/ffmpeg045/files/patch-libavcodec::Makefile b/multimedia/ffmpeg045/files/patch-libavcodec::Makefile
index 383195e6f30..d760d0cee04 100644
--- a/multimedia/ffmpeg045/files/patch-libavcodec::Makefile
+++ b/multimedia/ffmpeg045/files/patch-libavcodec::Makefile
@@ -1,11 +1,22 @@
---- libavcodec/Makefile.orig Tue Sep 25 15:05:58 2001
-+++ libavcodec/Makefile Tue Sep 25 15:06:08 2001
-@@ -1,7 +1,6 @@
- include ../config.mak
+--- libavcodec/Makefile.orig Sun Oct 6 12:26:38 2002
++++ libavcodec/Makefile Wed Oct 9 14:24:34 2002
+@@ -7,8 +7,7 @@
+ VPATH=$(SRC_PATH)/libavcodec
--CFLAGS= $(OPTFLAGS) -Wall -g -DHAVE_AV_CONFIG_H
+ # NOTE: -I.. is needed to include config.h
+-CFLAGS= $(OPTFLAGS) -Wall -g -DHAVE_AV_CONFIG_H -I.. -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_GNU_SOURCE
-LDFLAGS= -g
-+CFLAGS= $(OPTFLAGS) -Wall -DHAVE_AV_CONFIG_H
++CFLAGS= $(OPTFLAGS) -Wall -DHAVE_AV_CONFIG_H -I.. -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_GNU_SOURCE
- OBJS= common.o utils.o mpegvideo.o h263.o jrevdct.o jfdctfst.o \
- mpegaudio.o ac3enc.o mjpeg.o resample.o dsputil.o \
+ OBJS= common.o utils.o mem.o allcodecs.o \
+ mpegvideo.o h263.o jrevdct.o jfdctfst.o jfdctint.o\
+@@ -167,8 +166,7 @@
+ install: all
+ ifeq ($(BUILD_SHARED),yes)
+ install -d $(prefix)/lib
+- install -s -m 755 $(SLIB) $(prefix)/lib/libavcodec-$(VERSION).so
+- ln -sf libavcodec-$(VERSION).so $(prefix)/lib/libavcodec.so
++ install -s -m 755 $(SLIB) $(prefix)/lib/libavcodec.so
+ ldconfig || true
+ mkdir -p $(prefix)/include/ffmpeg
+ install -m 644 $(VPATH)/avcodec.h $(prefix)/include/ffmpeg/avcodec.h