kaffeine-1.0 and webcamd based DVB-T?

Juergen Lock nox at jelal.kn-bremen.de
Wed Sep 1 17:58:20 UTC 2010


On Tue, Aug 31, 2010 at 08:58:16PM +0200, Hans Petter Selasky wrote:
> On Tuesday 31 August 2010 20:48:15 Juergen Lock wrote:
> > On Mon, Aug 30, 2010 at 11:22:20PM +0200, Hans Petter Selasky wrote:
> > > Hi,
> > 
> > Hi!
> > 
> > > I've committed to the HAL stuff to webcamd in the I4B SVN as of r1628. To
> > > enable HAL support build like this:
> > > 
> > > make -j3 HAVE_HAL=YES LIBDIR=/usr/local/lib
> > > 
> > > Run like this:
> > > 
> > > ./webcamd -H
> > 
> >  There's an initialization missing so the code did nothing...
> > (works now for dvb, v4l untested due to lack of device.)
> > 
> >  Cheers,
> > 	Juergen
> > 
> > Index: webcamd_hal.c
> > ===================================================================
> > --- webcamd_hal.c	(revision 1628)
> > +++ webcamd_hal.c	(working copy)
> > @@ -69,6 +69,8 @@
> >  	char **ppdev;
> >  	int n;
> > 
> > +	if (!(hal_conn = dbus_bus_get(DBUS_BUS_SYSTEM, NULL)))
> > +		return;
> >  	hal_ctx = libhal_ctx_new();
> >  	if (hal_ctx == NULL)
> >  		return;
> 
> Committed to r1629.

Found out your version only works when specifying the usb device
with -d explicitly (read: I forgot to test the other case... :(
u_unit, u_addr, u_index were not set) - here's a possible fix,
also at:

	http://people.freebsd.org/~nox/tmp/webcamd-hal-r1629.patch

 Cheers,
	Juergen

Index: kernel/linux_usb.c
===================================================================
--- kernel/linux_usb.c	(revision 1629)
+++ kernel/linux_usb.c	(working copy)
@@ -266,7 +266,7 @@
  * This function is the FreeBSD probe and attach callback.
  *------------------------------------------------------------------------*/
 int
-usb_linux_probe(uint8_t bus, uint8_t addr, uint8_t index)
+usb_linux_probe_p(int *p_bus, int *p_addr, int *p_index)
 {
 	const struct usb_device_id *id;
 	struct usb_linux_softc *sc;
@@ -281,6 +281,9 @@
 	uint8_t match_bus_addr;
 	uint8_t index_copy;
 	uint8_t device_index;
+	uint8_t bus = *p_bus;
+	uint8_t addr = *p_addr;
+	uint8_t index = *p_index;
 
 	for (i = 0;; i++) {
 		if (i == ARRAY_SIZE(uls))
@@ -365,9 +368,11 @@
 	return (-ENXIO);
 
 found:
+	*p_bus = libusb20_dev_get_bus_number(pdev);
+	*p_addr = libusb20_dev_get_address(pdev);
+	*p_index = index_copy;
 #ifdef HAVE_WEBCAMD
-	if (pidfile_create(libusb20_dev_get_bus_number(pdev),
-	    libusb20_dev_get_address(pdev), index_copy)) {
+	if (pidfile_create(*p_bus, *p_addr, index_copy)) {
 		fprintf(stderr, "Webcamd is already running for "
 		    "ugen%d.%d.%d\n",
 		    libusb20_dev_get_bus_number(pdev),
Index: kernel/linux_usb.h
===================================================================
--- kernel/linux_usb.h	(revision 1629)
+++ kernel/linux_usb.h	(working copy)
@@ -583,7 +583,7 @@
 int	usb_deregister(struct usb_driver *drv);
 
 struct usb_linux_softc *usb_linux2usb(int fd);
-int	usb_linux_probe(uint8_t bus, uint8_t addr, uint8_t index);
+int	usb_linux_probe_p(int *pbus, int *paddr, int *pindex);
 int	usb_linux_detach(int fd);
 int	usb_linux_suspend(int fd);
 int	usb_linux_resume(int fd);
Index: webcamd.c
===================================================================
--- webcamd.c	(revision 1629)
+++ webcamd.c	(working copy)
@@ -462,7 +462,7 @@
 	}
 	linux_init();
 
-	f_usb = usb_linux_probe(u_unit, u_addr, u_index);
+	f_usb = usb_linux_probe_p(&u_unit, &u_addr, &u_index);
 	if (f_usb < 0)
 		v4b_errx(1, "Cannot find USB device");
 


More information about the freebsd-multimedia mailing list