summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuli Suominen <ssuominen@gentoo.org>2010-04-08 16:29:48 +0000
committerSamuli Suominen <ssuominen@gentoo.org>2010-04-08 16:29:48 +0000
commitc5a1ee41cff5d822b0911b7bb9e245758f4b8833 (patch)
treede22ecda0e74455aff1386615b6304780f8840d0 /media-video/camorama
parentRemoving raw-ldflags() stops the QA notice about ignored LDFLAGS. The user LD... (diff)
downloadgentoo-2-c5a1ee41cff5d822b0911b7bb9e245758f4b8833.tar.gz
gentoo-2-c5a1ee41cff5d822b0911b7bb9e245758f4b8833.tar.bz2
gentoo-2-c5a1ee41cff5d822b0911b7bb9e245758f4b8833.zip
Port to libv4l using patch from Fedora.
(Portage version: 2.2_rc67/cvs/Linux x86_64)
Diffstat (limited to 'media-video/camorama')
-rw-r--r--media-video/camorama/ChangeLog11
-rw-r--r--media-video/camorama/camorama-0.19-r2.ebuild39
-rw-r--r--media-video/camorama/files/camorama-0.19-fixes.patch107
-rw-r--r--media-video/camorama/files/camorama-0.19-libv4l.patch198
4 files changed, 353 insertions, 2 deletions
diff --git a/media-video/camorama/ChangeLog b/media-video/camorama/ChangeLog
index b18cf5492efd..0bdb735dd0ac 100644
--- a/media-video/camorama/ChangeLog
+++ b/media-video/camorama/ChangeLog
@@ -1,6 +1,13 @@
# ChangeLog for media-video/camorama
-# Copyright 1999-2009 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/media-video/camorama/ChangeLog,v 1.19 2009/05/14 20:06:08 maekke Exp $
+# Copyright 1999-2010 Gentoo Foundation; Distributed under the GPL v2
+# $Header: /var/cvsroot/gentoo-x86/media-video/camorama/ChangeLog,v 1.20 2010/04/08 16:29:48 ssuominen Exp $
+
+*camorama-0.19-r2 (08 Apr 2010)
+
+ 08 Apr 2010; Samuli Suominen <ssuominen@gentoo.org>
+ +camorama-0.19-r2.ebuild, +files/camorama-0.19-fixes.patch,
+ +files/camorama-0.19-libv4l.patch:
+ Port to libv4l using patch from Fedora.
14 May 2009; Markus Meier <maekke@gentoo.org> camorama-0.19-r1.ebuild:
amd64/x86 stable, bug #269465
diff --git a/media-video/camorama/camorama-0.19-r2.ebuild b/media-video/camorama/camorama-0.19-r2.ebuild
new file mode 100644
index 000000000000..3ee64e247d26
--- /dev/null
+++ b/media-video/camorama/camorama-0.19-r2.ebuild
@@ -0,0 +1,39 @@
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/media-video/camorama/camorama-0.19-r2.ebuild,v 1.1 2010/04/08 16:29:48 ssuominen Exp $
+
+EAPI=2
+inherit eutils gnome2
+
+DESCRIPTION="a webcam application featuring various image filters."
+HOMEPAGE="http://camorama.fixedgear.org"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~ppc ~x86"
+IUSE=""
+
+RDEPEND=">=x11-libs/gtk+-2.10:2
+ >=gnome-base/libgnomeui-2
+ >=gnome-base/libgnome-2
+ >=gnome-base/gconf-2
+ >=gnome-base/libglade-2
+ media-libs/libv4l"
+DEPEND="${RDEPEND}
+ sys-devel/gettext
+ dev-util/pkgconfig
+ dev-util/intltool"
+
+SCROLLKEEPER_UPDATE="0"
+
+pkg_setup() {
+ G2CONF="${G2CONF} --disable-schemas-install"
+}
+
+src_prepare() {
+ epatch "${FILESDIR}"/${P}-gconf.patch \
+ "${FILESDIR}"/${P}-fixes.patch \
+ "${FILESDIR}"/${P}-libv4l.patch
+
+ gnome2_src_prepare
+}
diff --git a/media-video/camorama/files/camorama-0.19-fixes.patch b/media-video/camorama/files/camorama-0.19-fixes.patch
new file mode 100644
index 000000000000..949c19d66741
--- /dev/null
+++ b/media-video/camorama/files/camorama-0.19-fixes.patch
@@ -0,0 +1,107 @@
+http://cvs.fedoraproject.org/viewvc/rpms/camorama/devel/
+
+--- camorama-0.19/src/callbacks.c 2007-09-16 15:36:55.000000000 +0200
++++ camorama-0.19.new/src/callbacks.c 2008-06-29 22:22:44.000000000 +0200
+@@ -387,9 +387,6 @@
+ }
+ }
+
+- cam->pixmap = gdk_pixmap_new (NULL, cam->x, cam->y, cam->desk_depth);
+- gtk_widget_set_size_request (glade_xml_get_widget (cam->xml, "da"),
+- cam->x, cam->y);
+
+ /*
+ * if(cam->read == FALSE) {
+@@ -441,6 +438,11 @@
+ * * }
+ */
+ get_win_info (cam);
++
++ cam->pixmap = gdk_pixmap_new (NULL, cam->x, cam->y, cam->desk_depth);
++ gtk_widget_set_size_request (glade_xml_get_widget (cam->xml, "da"),
++ cam->x, cam->y);
++
+ frame = 0;
+ gtk_window_resize (GTK_WINDOW
+ (glade_xml_get_widget (cam->xml, "main_window")), 320,
+@@ -520,8 +522,14 @@
+ gtk_widget_show (about);
+ }
+
++void
++camorama_filter_color_filter(void* filter, guchar *image, int x, int y, int depth);
++
+ static void
+ apply_filters(cam* cam) {
++ /* v4l has reverse rgb order from what camora expect so call the color
++ filter to fix things up before running the user selected filters */
++ camorama_filter_color_filter(NULL, cam->pic_buf, cam->x, cam->y, cam->depth);
+ camorama_filter_chain_apply(cam->filter_chain, cam->pic_buf, cam->x, cam->y, cam->depth);
+ #warning "FIXME: enable the threshold channel filter"
+ // if((effect_mask & CAMORAMA_FILTER_THRESHOLD_CHANNEL) != 0)
+--- camorama-0.19/src/filter.c 2007-09-16 14:48:50.000000000 +0200
++++ camorama-0.19.new/src/filter.c 2008-06-29 22:11:42.000000000 +0200
+@@ -151,12 +151,12 @@
+ static void
+ camorama_filter_color_init(CamoramaFilterColor* self) {}
+
+-static void
++void
+ camorama_filter_color_filter(CamoramaFilterColor* filter, guchar *image, int x, int y, int depth) {
+ int i;
+ char tmp;
+ i = x * y;
+- while (--i) {
++ while (i--) {
+ tmp = image[0];
+ image[0] = image[2];
+ image[2] = tmp;
+--- camorama-0.19/src/main.c 2007-09-16 15:36:55.000000000 +0200
++++ camorama-0.19.new/src/main.c 2008-06-29 22:20:04.000000000 +0200
+@@ -224,8 +224,7 @@
+
+ /* get picture attributes */
+ get_pic_info (cam);
+-// set_pic_info(cam);
+- /* set_pic_info(cam); */
++ set_pic_info (cam);
+ cam->contrast = cam->vid_pic.contrast;
+ cam->brightness = cam->vid_pic.brightness;
+ cam->colour = cam->vid_pic.colour;
+--- camorama-0.19/src/v4l.c 2007-09-16 14:48:05.000000000 +0200
++++ camorama-0.19.new/src/v4l.c 2008-06-29 22:20:23.000000000 +0200
+@@ -158,8 +158,8 @@
+ if(cam->debug) {
+ g_message("SET PIC");
+ }
+- //cam->vid_pic.palette = VIDEO_PALETTE_RGB24;
+- //cam->vid_pic.depth = 24;
++ cam->vid_pic.palette = VIDEO_PALETTE_RGB24;
++ cam->vid_pic.depth = 24;
+ //cam->vid_pic.palette = VIDEO_PALETTE_YUV420P;
+ if(ioctl(cam->dev, VIDIOCSPICT, &cam->vid_pic) == -1) {
+ if(cam->debug) {
+@@ -232,6 +232,8 @@
+ exit(0);
+ }
+
++ cam->x = cam->vid_win.width;
++ cam->y = cam->vid_win.height;
+ }
+
+ void set_buffer(cam * cam)
+--- camorama-0.19/src/camorama-window.c~ 2007-09-16 15:36:55.000000000 +0200
++++ camorama-0.19/src/camorama-window.c 2009-06-23 20:19:16.000000000 +0200
+@@ -209,11 +209,7 @@ load_interface(cam* cam) {
+
+ logo = gtk_icon_theme_load_icon(gtk_icon_theme_get_for_screen(gtk_widget_get_screen(glade_xml_get_widget(cam->xml, "main_window"))), CAMORAMA_STOCK_WEBCAM, 24, 0, NULL);
+ gtk_window_set_default_icon(logo);
+- logo = (GdkPixbuf *) create_pixbuf (PACKAGE_DATA_DIR "/pixmaps/camorama.png");
+- if (logo == NULL) {
+- printf ("\n\nLOGO NO GO\n\n");
+- }
+-
++ logo = gtk_icon_theme_load_icon(gtk_icon_theme_get_for_screen(gtk_widget_get_screen(glade_xml_get_widget(cam->xml, "main_window"))), "camorama", 48, 0, NULL);
+ if (cam->show_adjustments == FALSE) {
+ gtk_widget_hide (glade_xml_get_widget
+ (cam->xml, "adjustments_table"));
diff --git a/media-video/camorama/files/camorama-0.19-libv4l.patch b/media-video/camorama/files/camorama-0.19-libv4l.patch
new file mode 100644
index 000000000000..ada58fe7dd2f
--- /dev/null
+++ b/media-video/camorama/files/camorama-0.19-libv4l.patch
@@ -0,0 +1,198 @@
+http://cvs.fedoraproject.org/viewvc/rpms/camorama/devel/
+
+--- camorama-0.19/src/Makefile.am 2007-09-16 14:48:05.000000000 +0200
++++ camorama-0.19.new/src/Makefile.am 2009-06-24 15:01:37.000000000 +0200
+@@ -36,7 +36,7 @@
+ filter.h \
+ $(BUILT_SOURCES)\
+ $(NULL)
+-camorama_LDADD = $(PACKAGE_LIBS)
++camorama_LDADD = $(PACKAGE_LIBS) -lv4l1
+
+ DISTCLEANFILES=$(BUILT_SOURCES)
+
+--- camorama-0.19/src/Makefile.in 2007-10-06 21:06:28.000000000 +0200
++++ camorama-0.19.new/src/Makefile.in 2009-06-24 15:01:50.000000000 +0200
+@@ -248,7 +248,7 @@
+ $(BUILT_SOURCES)\
+ $(NULL)
+
+-camorama_LDADD = $(PACKAGE_LIBS)
++camorama_LDADD = $(PACKAGE_LIBS) -lv4l1
+ DISTCLEANFILES = $(BUILT_SOURCES)
+ all: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) all-am
+--- camorama-0.19/src/callbacks.c 2009-06-24 15:01:55.000000000 +0200
++++ camorama-0.19.new/src/callbacks.c 2009-06-24 14:55:42.000000000 +0200
+@@ -9,6 +9,7 @@
+ #include <libgnomeui/gnome-propertybox.h>
+ #include <libgnomeui/gnome-window-icon.h>
+ #include <pthread.h>
++#include <libv4l1.h>
+
+ extern GtkWidget *main_window, *prefswindow;
+ //extern state func_state;
+@@ -390,7 +391,7 @@
+
+ /*
+ * if(cam->read == FALSE) {
+- * cam->pic = mmap(0, cam->vid_buf.size, PROT_READ | PROT_WRITE, MAP_SHARED, cam->dev, 0);
++ * cam->pic = v4l1_mmap(0, cam->vid_buf.size, PROT_READ | PROT_WRITE, MAP_SHARED, cam->dev, 0);
+ *
+ * if((unsigned char *) -1 == (unsigned char *) cam->pic) {
+ * if(cam->debug == TRUE) {
+@@ -401,7 +402,7 @@
+ * }
+ * }else{
+ * cam->pic_buf = malloc(cam->x * cam->y * cam->depth);
+- * read(cam->dev,cam->pic,(cam->x * cam->y * 3));
++ * v4l1_read(cam->dev,cam->pic,(cam->x * cam->y * 3));
+ * }
+ */
+
+@@ -427,7 +428,7 @@
+ * if(cam->read == FALSE) {
+ * * for(frame = 0; frame < cam->vid_buf.frames; frame++) {
+ * * cam->vid_map.frame = frame;
+- * * if(ioctl(cam->dev, VIDIOCMCAPTURE, &cam->vid_map) < 0) {
++ * * if(v4l1_ioctl(cam->dev, VIDIOCMCAPTURE, &cam->vid_map) < 0) {
+ * * if(cam->debug == TRUE) {
+ * * fprintf(stderr, "Unable to capture image (VIDIOCMCAPTURE) during resize.\n");
+ * * }
+@@ -547,7 +548,7 @@
+ int i, count = 0;
+ GdkGC *gc;
+
+- read (cam->dev, cam->pic, (cam->x * cam->y * 3));
++ v4l1_read (cam->dev, cam->pic, (cam->x * cam->y * 3));
+ frames2++;
+ /*
+ * update_rec.x = 0;
+@@ -588,7 +589,7 @@
+
+ i = -1;
+ while (i < 0) {
+- i = ioctl (cam->dev, VIDIOCSYNC, &frame);
++ i = v4l1_ioctl (cam->dev, VIDIOCSYNC, &frame);
+
+ if (i < 0 && errno == EINTR) {
+ if (cam->debug == TRUE) {
+@@ -630,7 +631,7 @@
+ 0, cam->x, cam->y);
+
+ cam->vid_map.frame = frame;
+- if (ioctl (cam->dev, VIDIOCMCAPTURE, &cam->vid_map) < 0) {
++ if (v4l1_ioctl (cam->dev, VIDIOCMCAPTURE, &cam->vid_map) < 0) {
+ if (cam->debug == TRUE) {
+ fprintf (stderr, "Unable to capture image (VIDIOCMCAPTURE)\n");
+ }
+@@ -677,7 +678,7 @@
+ void init_cam (GtkWidget * capture, cam * cam)
+ {
+ cam->pic =
+- mmap (0, cam->vid_buf.size, PROT_READ | PROT_WRITE,
++ v4l1_mmap (0, cam->vid_buf.size, PROT_READ | PROT_WRITE,
+ MAP_SHARED, cam->dev, 0);
+
+ if ((unsigned char *) -1 == (unsigned char *) cam->pic) {
+@@ -692,7 +693,7 @@
+ cam->vid_map.format = cam->vid_pic.palette;
+ for (frame = 0; frame < cam->vid_buf.frames; frame++) {
+ cam->vid_map.frame = frame;
+- if (ioctl (cam->dev, VIDIOCMCAPTURE, &cam->vid_map) < 0) {
++ if (v4l1_ioctl (cam->dev, VIDIOCMCAPTURE, &cam->vid_map) < 0) {
+ if (cam->debug == TRUE) {
+ fprintf (stderr,
+ "Unable to capture image (VIDIOCMCAPTURE).\n");
+--- camorama-0.19/src/main.c 2009-06-24 15:01:55.000000000 +0200
++++ camorama-0.19.new/src/main.c 2009-06-24 14:59:35.000000000 +0200
+@@ -9,6 +9,7 @@
+ #include <gdk-pixbuf-xlib/gdk-pixbuf-xlib.h>
+ #include <gdk-pixbuf-xlib/gdk-pixbuf-xlibrgb.h>
+ #include <locale.h>
++#include <libv4l1.h>
+
+ #include "camorama-display.h"
+ #include "camorama-stock-items.h"
+@@ -206,7 +207,7 @@
+ gdk_pixbuf_xlib_init (display, 0);
+ cam->desk_depth = xlib_rgb_get_depth ();
+
+- cam->dev = open (cam->video_dev, O_RDWR);
++ cam->dev = v4l1_open (cam->video_dev, O_RDWR);
+
+ camera_cap (cam);
+ get_win_info (cam);
+@@ -284,5 +285,8 @@
+
+ gtk_timeout_add (2000, (GSourceFunc) fps, cam->status);
+ gtk_main ();
++ v4l1_munmap(cam->pic, cam->vid_buf.size);
++ v4l1_close(cam->dev);
++
+ return 0;
+ }
+--- camorama-0.19/src/v4l.c 2009-06-24 15:01:55.000000000 +0200
++++ camorama-0.19.new/src/v4l.c 2009-06-24 14:54:09.000000000 +0200
+@@ -2,6 +2,7 @@
+ #include<time.h>
+ #include<errno.h>
+ #include<gnome.h>
++#include <libv4l1.h>
+ #include "support.h"
+
+ extern int frame_number;
+@@ -87,7 +88,7 @@
+ void camera_cap(cam * cam)
+ {
+ char *msg;
+- if(ioctl(cam->dev, VIDIOCGCAP, &cam->vid_cap) == -1) {
++ if(v4l1_ioctl(cam->dev, VIDIOCGCAP, &cam->vid_cap) == -1) {
+ if(cam->debug == TRUE) {
+ fprintf(stderr, "VIDIOCGCAP -- could not get camera capabilities, exiting.....\n");
+ }
+@@ -161,7 +162,7 @@
+ cam->vid_pic.palette = VIDEO_PALETTE_RGB24;
+ cam->vid_pic.depth = 24;
+ //cam->vid_pic.palette = VIDEO_PALETTE_YUV420P;
+- if(ioctl(cam->dev, VIDIOCSPICT, &cam->vid_pic) == -1) {
++ if(v4l1_ioctl(cam->dev, VIDIOCSPICT, &cam->vid_pic) == -1) {
+ if(cam->debug) {
+ g_message("VIDIOCSPICT -- could not set picture info, exiting....");
+ }
+@@ -176,7 +177,7 @@
+ //set_pic_info(cam);
+ char *msg;
+
+- if(ioctl(cam->dev, VIDIOCGPICT, &cam->vid_pic) == -1) {
++ if(v4l1_ioctl(cam->dev, VIDIOCGPICT, &cam->vid_pic) == -1) {
+ msg = g_strdup_printf(_("Could not connect to video device (%s).\nPlease check connection."), cam->video_dev);
+ error_dialog(msg);
+ if(cam->debug == TRUE) {
+@@ -201,7 +202,7 @@
+ void get_win_info(cam * cam)
+ {
+ gchar *msg;
+- if(ioctl(cam->dev, VIDIOCGWIN, &cam->vid_win) == -1) {
++ if(v4l1_ioctl(cam->dev, VIDIOCGWIN, &cam->vid_win) == -1) {
+ msg = g_strdup_printf(_("Could not connect to video device (%s).\nPlease check connection."), cam->video_dev);
+ error_dialog(msg);
+ if(cam->debug == TRUE) {
+@@ -222,7 +223,7 @@
+ void set_win_info(cam * cam)
+ {
+ gchar *msg;
+- if(ioctl(cam->dev, VIDIOCSWIN, &cam->vid_win) == -1) {
++ if(v4l1_ioctl(cam->dev, VIDIOCSWIN, &cam->vid_win) == -1) {
+ msg = g_strdup_printf(_("Could not connect to video device (%s).\nPlease check connection."), cam->video_dev);
+ error_dialog(msg);
+ if(cam->debug == TRUE) {
+@@ -239,7 +240,7 @@
+ void set_buffer(cam * cam)
+ {
+ char *msg;
+- if(ioctl(cam->dev, VIDIOCGMBUF, &cam->vid_buf) == -1) {
++ if(v4l1_ioctl(cam->dev, VIDIOCGMBUF, &cam->vid_buf) == -1) {
+ msg = g_strdup_printf(_("Could not connect to video device (%s).\nPlease check connection."), cam->video_dev);
+ error_dialog(msg);
+ if(cam->debug == TRUE) {