* working on webcam driver
@ 2009-05-11 14:45 MK
2009-05-11 18:50 ` Erik Andrén
0 siblings, 1 reply; 15+ messages in thread
From: MK @ 2009-05-11 14:45 UTC (permalink / raw)
To: video4linux-list
Hi. I'm a fledgling C programmer who just started work on a usb webcam
driver in order to learn about kernel programming. So far, all I have
done is gotten the device to register, and iterated through the
available interfaces (there are nine with three endpoints each, an iso,
an interrupt, and a bulk in).
Anyway, before I proceed, I thought I should clarify for myself "the
big picture" of what I am doing. I do not have a webcam that works
under linux, so the whole apparatus is fuzzy; I am under the impression
that the kernel modules work with the (seperate) video4linux subsystem?
I have the USB Video Class Specifications and am busy reading that to
find out how the camera itself operates, but vis. the linux end of
things, can you point me to any technical documentation that might
clarify what the driver will be expected to do? At this point, I am
assuming I will have to deliver a device node, but I don't know what
calls will be made to it etc.
Help and advice is much appreciated. Of course, best of all would be a
few general pointers from someone who has actually done this before...
Sincerely, Mark Eriksen
--
video4linux-list mailing list
Unsubscribe mailto:video4linux-list-request@redhat.com?subject=unsubscribe
https://www.redhat.com/mailman/listinfo/video4linux-list
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: working on webcam driver
2009-05-11 14:45 working on webcam driver MK
@ 2009-05-11 18:50 ` Erik Andrén
2009-05-14 16:00 ` MK
0 siblings, 1 reply; 15+ messages in thread
From: Erik Andrén @ 2009-05-11 18:50 UTC (permalink / raw)
To: MK; +Cc: video4linux-list
2009/5/11 MK <halfcountplus@intergate.com>:
>
> Hi. I'm a fledgling C programmer who just started work on a usb webcam
> driver in order to learn about kernel programming. So far, all I have
> done is gotten the device to register, and iterated through the
> available interfaces (there are nine with three endpoints each, an iso,
> an interrupt, and a bulk in).
>
> Anyway, before I proceed, I thought I should clarify for myself "the
> big picture" of what I am doing. I do not have a webcam that works
> under linux, so the whole apparatus is fuzzy; I am under the impression
> that the kernel modules work with the (seperate) video4linux subsystem?
> I have the USB Video Class Specifications and am busy reading that to
> find out how the camera itself operates, but vis. the linux end of
> things, can you point me to any technical documentation that might
> clarify what the driver will be expected to do? At this point, I am
> assuming I will have to deliver a device node, but I don't know what
> calls will be made to it etc.
>
> Help and advice is much appreciated. Of course, best of all would be a
> few general pointers from someone who has actually done this before...
>
Hi Mark,
First of all, this list is deprecated. Send mails to
linux-media@vger.kernel.org if you want to reach the kernel community.
Secondly, have you researched that there is no existing driver for
your camera? A good way to start would perhaps to search for the usb
id and linux in google to see if it generates some hits.
If you don't find any existing driver, you should base your new one on
the gspca framework as it does a lot of the webcam groundwork for you.
Hope this helps,
Erik
> Sincerely, Mark Eriksen
>
> --
> video4linux-list mailing list
> Unsubscribe mailto:video4linux-list-request@redhat.com?subject=unsubscribe
> https://www.redhat.com/mailman/listinfo/video4linux-list
>
--
video4linux-list mailing list
Unsubscribe mailto:video4linux-list-request@redhat.com?subject=unsubscribe
https://www.redhat.com/mailman/listinfo/video4linux-list
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: working on webcam driver
2009-05-11 18:50 ` Erik Andrén
@ 2009-05-14 16:00 ` MK
2009-05-14 17:26 ` Hans de Goede
0 siblings, 1 reply; 15+ messages in thread
From: MK @ 2009-05-14 16:00 UTC (permalink / raw)
To: Erik Andrén; +Cc: video4linux-list, linux-media
Since I'm cross-posting this (as advised) I should introduce myself by
saying I am a neophyte C programmer getting into kernel programming by
trying to write a driver for an unsupported webcam. So far I've gotten
the device to register and have enumerated the various interfaces.
On 05/11/2009 02:50:00 PM, Erik Andrén wrote:
>First of all, this list is deprecated. Send mails to
>linux-media@vger.kernel.org if you want to reach the kernel community.
>
> Secondly, have you researched that there is no existing driver for
> your camera? A good way to start would perhaps to search for the usb
> id and linux in google to see if it generates some hits.
I've done this last bit already, and I just checked out gspca. There
is a lot of listing for the vendor id, but not the product id, so I
imagine there is no point in trying any of the drivers (unless I hack
the source to accept the id string).
However, a rather unhelpful person at the linux driver backport group
informs me "not all USB video drivers are under
drivers/media/video/usbvideo/ In fact, the majority of them are not."
but then tells me I should take off and go find them myself "with a web
browser" (very nice).
Does anyone know where these drivers are located? The same person also
claims that the kernel now has support "for all devices that
follow the USB video class specification, and [sic] that the additional
23 device specific drivers in the tree* are just for non-conforming
devices". This kind of flies in the face of everything else I have
read about linux and usb webcams. I also notice that it is impossible
to select anything other than the v4l layer with "xconfig", ie. the
individual drivers cannot be selected.
Is it normal to include module sources in the tree without making it
possible to configure them into a regular build?
Sincerely, Mark Eriksen
*I can only find the six under drivers/media, and nothing in
documentation/ is of assistance
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: working on webcam driver
2009-05-14 16:00 ` MK
@ 2009-05-14 17:26 ` Hans de Goede
2009-05-14 19:57 ` Theodore Kilgore
0 siblings, 1 reply; 15+ messages in thread
From: Hans de Goede @ 2009-05-14 17:26 UTC (permalink / raw)
To: MK; +Cc: Erik Andrén, video4linux-list, linux-media
On 05/14/2009 06:00 PM, MK wrote:
> Since I'm cross-posting this (as advised) I should introduce myself by
> saying I am a neophyte C programmer getting into kernel programming by
> trying to write a driver for an unsupported webcam. So far I've gotten
> the device to register and have enumerated the various interfaces.
>
> On 05/11/2009 02:50:00 PM, Erik Andrén wrote:
>> First of all, this list is deprecated. Send mails to
>> linux-media@vger.kernel.org if you want to reach the kernel community.
>>
>> Secondly, have you researched that there is no existing driver for
>> your camera? A good way to start would perhaps to search for the usb
>> id and linux in google to see if it generates some hits.
>
> I've done this last bit already, and I just checked out gspca. There
> is a lot of listing for the vendor id, but not the product id, so I
> imagine there is no point in trying any of the drivers (unless I hack
> the source to accept the id string).
>
> However, a rather unhelpful person at the linux driver backport group
> informs me "not all USB video drivers are under
> drivers/media/video/usbvideo/ In fact, the majority of them are not."
> but then tells me I should take off and go find them myself "with a web
> browser" (very nice).
>
> Does anyone know where these drivers are located?
Most non yvc (see below) usb webcams are driven through the gspca usb
webcam driver framework. This is a v4l driver which consists of gspca-core
+ various subdrivers for a lot of bridges, see drivers/media/video/gspca
The same person also
> claims that the kernel now has support "for all devices that
> follow the USB video class specification, and [sic] that the additional
> 23 device specific drivers in the tree* are just for non-conforming
> devices".
This is correct recently the USB consortium (or whatever they are called)
have created a new spec called UVC, this is one standard protocol for all
webcams to follow. All *newer* webcams use this, but a lot of cams still
in the stores predate UVC (which stands for USB Video Class).
The first thing to find out to get your webcam supported is what kind of
bridge chip it is using, try looking at the windows driver .inf file,
typical bridges are the sonix series (often refenced to as sn9c10x or
sn9c20x), spca5xx series, zc3xx, vc032x, etc. If you see a reference
to anything like this in the windows driver .inf file (or inside dll's)
that would be good to know. Also it would be very helpful to have the usb
id of your camera.
Regards,
Hans
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: working on webcam driver
2009-05-14 17:26 ` Hans de Goede
@ 2009-05-14 19:57 ` Theodore Kilgore
2009-05-17 16:08 ` MK
2009-05-19 20:35 ` What is libv4lconvert/sn9c202x.c for? Theodore Kilgore
0 siblings, 2 replies; 15+ messages in thread
From: Theodore Kilgore @ 2009-05-14 19:57 UTC (permalink / raw)
To: Hans de Goede; +Cc: MK, Erik Andrén, video4linux-list, linux-media
[-- Attachment #1: Type: TEXT/PLAIN, Size: 3858 bytes --]
On Thu, 14 May 2009, Hans de Goede wrote:
> On 05/14/2009 06:00 PM, MK wrote:
>> Since I'm cross-posting this (as advised) I should introduce myself by
>> saying I am a neophyte C programmer getting into kernel programming by
>> trying to write a driver for an unsupported webcam. So far I've gotten
>> the device to register and have enumerated the various interfaces.
>>
>> On 05/11/2009 02:50:00 PM, Erik Andrén wrote:
>>> First of all, this list is deprecated. Send mails to
>>> linux-media@vger.kernel.org if you want to reach the kernel community.
>>>
>>> Secondly, have you researched that there is no existing driver for
>>> your camera? A good way to start would perhaps to search for the usb
>>> id and linux in google to see if it generates some hits.
>>
>> I've done this last bit already, and I just checked out gspca. There
>> is a loit of listing for the vendor id, but not the product id, so I
>> imagine there is no point in trying any of the drivers (unless I hack
>> the source to accept the id string).
>>
>> However, a rather unhelpful person at the linux driver backport group
>> informs me "not all USB video drivers are under
>> drivers/media/video/usbvideo/ In fact, the majority of them are not."
>> but then tells me I should take off and go find them myself "with a web
>> browser" (very nice).
>>
>> Does anyone know where these drivers are located?
>
> Most non yvc (see below) usb webcams are driven through the gspca usb
> webcam driver framework. This is a v4l driver which consists of gspca-core
> + various subdrivers for a lot of bridges, see drivers/media/video/gspca
>
>
> The same person also
>> claims that the kernel now has support "for all devices that
>> follow the USB video class specification, and [sic] that the additional
>> 23 device specific drivers in the tree* are just for non-conforming
>> devices".
>
> This is correct recently the USB consortium (or whatever they are called)
> have created a new spec called UVC, this is one standard protocol for all
> webcams to follow. All *newer* webcams use this, but a lot of cams still
> in the stores predate UVC (which stands for USB Video Class).
>
> The first thing to find out to get your webcam supported is what kind of
> bridge chip it is using, try looking at the windows driver .inf file,
> typical bridges are the sonix series (often refenced to as sn9c10x or
> sn9c20x), spca5xx series, zc3xx, vc032x, etc. If you see a reference
> to anything like this in the windows driver .inf file (or inside dll's)
> that would be good to know. Also it would be very helpful to have the usb
> id of your camera.
>
> Regards,
>
> Hans
All of the above is excellent advice, especially in view of the fact that
you say, "There is a lot of listing for the vendor id, but not the product
id, so I imagine there is no point in trying any of the drivers (unless I
hack the source to accept the id string)," apparently with reference to
the cameras supported by gspca.
>From there, things could go in several directions. First, it might
possibly be the case that it suffices only to add the camera's Vendor and
Product ID to an existing driver. Or, it might be a completely different
one. Or, it might be that everything can be solved but for the fact that
the camera is using an undocumented and unsolved compression algorithm,
which is the ultimate obstacle to overcome and also the most difficult.
Perhaps in addition to the list from Hans, above, an output of lsusb or
the content of the /proc/bus/usb/devices file (available if your kernel
supports usbfs, otherwise not) would help.
Finally, since you say that the Vendor ID appears, it could possibly be
the case that someone is already working on support for your particular
camera. The matter would be more clear if the Vendor and Product ID
numbers are known.
Theodore Kilgore
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: working on webcam driver
2009-05-14 19:57 ` Theodore Kilgore
@ 2009-05-17 16:08 ` MK
2009-05-17 22:31 ` leandro Costantino
2009-05-19 20:35 ` What is libv4lconvert/sn9c202x.c for? Theodore Kilgore
1 sibling, 1 reply; 15+ messages in thread
From: MK @ 2009-05-17 16:08 UTC (permalink / raw)
To: Theodore Kilgore
Cc: Hans de Goede, Erik Andrén, video4linux-list, linux-media
Thanks much for the feedback! Here's what happened:
Because the vendor id (0c45) is listed by the gspca website but not
the product (612a), I decided to try inserting the id into one of the
drivers/media/video/gspca. When I actually grepped (had not grepped
the tree itself yet), low and behold 612a is in sonixj. The module
compiles and responds to the camera, although the results in gstreamer,
et. al, are disappointing -- the camera is not really usable, I suspect
from the output it is the kernel driver, but I am not sure. Since I
didn't write this stuff, I think working alone it will be more trouble
than it is worth to track the problem down, esp. if this is mostly a
problem with an (obscure) inexpensive item that few linux users
actually possess.
So, I am going to cut my "loses" early on this project and cop out.
I've learned a bunch about the kernel and in the process written some
nifty little char drivers that are probably more useful to me than a
webcam anyway. I think my time would be better spent on other things,
eg, I might become useful in someone else's (more significant) linux
kernel/driver project. I will have a look around.
But thanks again! You were much nicer than mr Greg Kroah-Hartman ;) :0
Sincerely, Mark Eriksen (getting his feet wet)
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: working on webcam driver
2009-05-17 16:08 ` MK
@ 2009-05-17 22:31 ` leandro Costantino
0 siblings, 0 replies; 15+ messages in thread
From: leandro Costantino @ 2009-05-17 22:31 UTC (permalink / raw)
To: video4linux-list; +Cc: linux-media
Hi Mark,
just searching "0c45:612a gspca" could save you lot of time.
I suppose you were looking at the old gspca homepage, because it
listed on Jean F. Moine site
http://moinejf.free.fr/webcam.html ( it dont know even it that page if
still updated )
About the "gstreamer", what kind of troubles are you having?. It's the
webcam streaming?
Did you follow the steps using libv4lconvert?.
I wrote that patch a year ago, so , if there's any problem let me know.
If you need help, about the lib4vlconvert thing, look at deaglecito.blogspot.com
Best Regards
Costantino Leandro
On Sun, May 17, 2009 at 12:08 PM, MK <halfcountplus@intergate.com> wrote:
> Thanks much for the feedback! Here's what happened:
>
> Because the vendor id (0c45) is listed by the gspca website but not
> the product (612a), I decided to try inserting the id into one of the
> drivers/media/video/gspca. When I actually grepped (had not grepped
> the tree itself yet), low and behold 612a is in sonixj. The module
> compiles and responds to the camera, although the results in gstreamer,
> et. al, are disappointing -- the camera is not really usable, I suspect
> from the output it is the kernel driver, but I am not sure. Since I
> didn't write this stuff, I think working alone it will be more trouble
> than it is worth to track the problem down, esp. if this is mostly a
> problem with an (obscure) inexpensive item that few linux users
> actually possess.
>
> So, I am going to cut my "loses" early on this project and cop out.
> I've learned a bunch about the kernel and in the process written some
> nifty little char drivers that are probably more useful to me than a
> webcam anyway. I think my time would be better spent on other things,
> eg, I might become useful in someone else's (more significant) linux
> kernel/driver project. I will have a look around.
>
> But thanks again! You were much nicer than mr Greg Kroah-Hartman ;) :0
>
> Sincerely, Mark Eriksen (getting his feet wet)
>
>
>
> --
> video4linux-list mailing list
> Unsubscribe mailto:video4linux-list-request@redhat.com?subject=unsubscribe
> https://www.redhat.com/mailman/listinfo/video4linux-list
>
^ permalink raw reply [flat|nested] 15+ messages in thread
* What is libv4lconvert/sn9c202x.c for?
2009-05-14 19:57 ` Theodore Kilgore
2009-05-17 16:08 ` MK
@ 2009-05-19 20:35 ` Theodore Kilgore
2009-05-20 18:38 ` Hans de Goede
1 sibling, 1 reply; 15+ messages in thread
From: Theodore Kilgore @ 2009-05-19 20:35 UTC (permalink / raw)
To: Hans de Goede; +Cc: linux-media
I can not seem to be able to find any such devices which use this. So
perhaps I am not looking in the right place and someone could point me
there.
In any event, it appears to me to have absolutely nothing at all to do
with the decompression algorithm required by the SN9C2028 cameras. Those
require a differential Huffman encoding scheme similar to what is in use
for the MR97310a cameras, but with a few crucial differencew which make it
pretty much impossible to write one routine for both. But the code in the
file libv4lconvert/sn9c202x.c appears to me to be no differential Huffman
scheme at all but something entirely different.
Hence my question.
Theodore Kilgore
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: What is libv4lconvert/sn9c202x.c for?
2009-05-19 20:35 ` What is libv4lconvert/sn9c202x.c for? Theodore Kilgore
@ 2009-05-20 18:38 ` Hans de Goede
2009-05-20 19:53 ` Theodore Kilgore
2009-05-23 22:12 ` [PATCH] to libv4lconvert, to do decompression for sn9c2028 cameras Theodore Kilgore
0 siblings, 2 replies; 15+ messages in thread
From: Hans de Goede @ 2009-05-20 18:38 UTC (permalink / raw)
To: Theodore Kilgore; +Cc: Hans de Goede, linux-media
On 05/19/2009 10:35 PM, Theodore Kilgore wrote:
>
> I can not seem to be able to find any such devices which use this. So
> perhaps I am not looking in the right place and someone could point me
> there.
>
> In any event, it appears to me to have absolutely nothing at all to do
> with the decompression algorithm required by the SN9C2028 cameras. Those
> require a differential Huffman encoding scheme similar to what is in use
> for the MR97310a cameras, but with a few crucial differencew which make
> it pretty much impossible to write one routine for both. But the code in
> the file libv4lconvert/sn9c202x.c appears to me to be no differential
> Huffman scheme at all but something entirely different.
>
> Hence my question.
This is for the (not yet in the mainline kernel) sn9c20x driver, just like
there is a series of sn9c10x webcam bridges from sonix there also is a serie
of 2n9c20x, these can do jpeg compression, but also their own custom
(less CPU the decompress) YUV based compression, which is supported by libv4l,
and that is what is in the sn9c20x.c file, also note the file is called
sn9c20x.c not sn9c202x.c, iow this is completely unrelated to the sn9c2028
cameras, as this is not for sn9c202x but for sn9c20x .
Hope this helps to clarify things.
Regards,
Hans
p.s.
The sn9c20x driver can be found here:
https://groups.google.com/group/microdia
Its developers are quite active I wish they would get it merged into the
mainline (and preferably first converted to a gspca subdriver, I'm not saying
gspca is perfect, but it does safe a lot of code duplication).
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: What is libv4lconvert/sn9c202x.c for?
2009-05-20 18:38 ` Hans de Goede
@ 2009-05-20 19:53 ` Theodore Kilgore
2009-05-23 22:12 ` [PATCH] to libv4lconvert, to do decompression for sn9c2028 cameras Theodore Kilgore
1 sibling, 0 replies; 15+ messages in thread
From: Theodore Kilgore @ 2009-05-20 19:53 UTC (permalink / raw)
To: Hans de Goede; +Cc: Hans de Goede, linux-media
On Wed, 20 May 2009, Hans de Goede wrote:
>
>
> On 05/19/2009 10:35 PM, Theodore Kilgore wrote:
>>
>> I can not seem to be able to find any such devices which use this. So
>> perhaps I am not looking in the right place and someone could point me
>> there.
>>
>> In any event, it appears to me to have absolutely nothing at all to do
>> with the decompression algorithm required by the SN9C2028 cameras. Those
>> require a differential Huffman encoding scheme similar to what is in use
>> for the MR97310a cameras, but with a few crucial differencew which make
>> it pretty much impossible to write one routine for both. But the code in
>> the file libv4lconvert/sn9c202x.c appears to me to be no differential
>> Huffman scheme at all but something entirely different.
>>
>> Hence my question.
>
> This is for the (not yet in the mainline kernel) sn9c20x driver, just like
> there is a series of sn9c10x webcam bridges from sonix there also is a serie
> of 2n9c20x, these can do jpeg compression, but also their own custom
> (less CPU the decompress) YUV based compression, which is supported by
> libv4l,
> and that is what is in the sn9c20x.c file, also note the file is called
> sn9c20x.c not sn9c202x.c, iow this is completely unrelated to the sn9c2028
> cameras, as this is not for sn9c202x but for sn9c20x .
>
> Hope this helps to clarify things.
>
> Regards,
>
> Hans
>
>
> p.s.
>
> The sn9c20x driver can be found here:
> https://groups.google.com/group/microdia
>
> Its developers are quite active I wish they would get it merged into the
> mainline (and preferably first converted to a gspca subdriver, I'm not saying
> gspca is perfect, but it does safe a lot of code duplication).
>
Yes, that does help. I called the new libv4lconvert file by the name
sn9c2028-decomp.c and that should avoid any possible name collision. But
it was indeed rather strange to see that the sn9c20x is in libv4lconvert
and it seems not to be in the drivers/media tree anywhere. Thanks again
for explaining.
Theodore Kilgore
^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH] to libv4lconvert, to do decompression for sn9c2028 cameras
2009-05-20 18:38 ` Hans de Goede
2009-05-20 19:53 ` Theodore Kilgore
@ 2009-05-23 22:12 ` Theodore Kilgore
2009-05-24 9:49 ` Hans de Goede
1 sibling, 1 reply; 15+ messages in thread
From: Theodore Kilgore @ 2009-05-23 22:12 UTC (permalink / raw)
To: Hans de Goede; +Cc: Hans de Goede, linux-media
The purpose of the following patch is to do the decompression for the
Sonix SN9C2028 cameras, which are already supported as still cameras in
libgphoto2/camlibs/sonix. The decompression code is essentially identical
to that which is used in the libgphoto2 driver, with minor changes to
adapt it for libv4lconvert.
The history and antecedents of this algorithm are described in
libgphoto2/camlibs/sonix/README.sonix, which was Copyright (C) 2005
Theodore Kilgore <kilgota@auburn.edu>, as follows:
"The decompression algorithm originates, I understand, in the work of
Bertrik Sikkens for the sn9c102 cameras. In the macam project for MacOS-X
camera support (webcam-osx project on Sourceforge), the decompression
algorithm for the sn9c2028 cameras was developed by Mattias Krauss and
adapted for use with the Vivitar Vivicam 3350B in particular by Harald
Ruda <hrx at users.sourceforge.net>. Harald brought to my attention the
work already done in the macam project, pointed out that it is GPL code,
and invited me to have a look. Thanks, Harald. The decompression algorithm
used here is similar to what is used in the macam driver, but is
considerably streamlined and improved."
Signed-off-by Theodore Kilgore <kilgota@auburn.edu>
-----------------------------------------------------------------------
diff -r 276a90c8ac40 v4l2-apps/libv4l/libv4lconvert/Makefile
--- a/v4l2-apps/libv4l/libv4lconvert/Makefile Wed May 20 07:23:00 2009 +0200
+++ b/v4l2-apps/libv4l/libv4lconvert/Makefile Wed May 20 13:10:53 2009 -0500
@@ -14,7 +14,7 @@
CONVERT_OBJS = libv4lconvert.o tinyjpeg.o sn9c10x.o sn9c20x.o pac207.o \
mr97310a.o flip.o crop.o jidctflt.o spca561-decompress.o \
- rgbyuv.o spca501.o sq905c.o bayer.o hm12.o \
+ rgbyuv.o sn9c2028-decomp.o spca501.o sq905c.o bayer.o hm12.o \
control/libv4lcontrol.o processing/libv4lprocessing.o \
processing/rgbprocessing.o processing/bayerprocessing.o
TARGETS = $(CONVERT_LIB) libv4lconvert.pc
diff -r 276a90c8ac40 v4l2-apps/libv4l/libv4lconvert/libv4lconvert-priv.h
--- a/v4l2-apps/libv4l/libv4lconvert/libv4lconvert-priv.h Wed May 20 07:23:00 2009 +0200
+++ b/v4l2-apps/libv4l/libv4lconvert/libv4lconvert-priv.h Wed May 20 13:10:53 2009 -0500
@@ -51,6 +51,10 @@
#define V4L2_PIX_FMT_MR97310A v4l2_fourcc('M','3','1','0')
#endif
+#ifndef V4L2_PIX_FMT_SN9C2028
+#define V4L2_PIX_FMT_SN9C2028 v4l2_fourcc('S', 'O', 'N', 'X')
+#endif
+
#ifndef V4L2_PIX_FMT_SQ905C
#define V4L2_PIX_FMT_SQ905C v4l2_fourcc('9', '0', '5', 'C')
#endif
@@ -193,6 +197,9 @@
void v4lconvert_decode_mr97310a(const unsigned char *src, unsigned char *dst,
int width, int height);
+void v4lconvert_decode_sn9c2028(const unsigned char *src, unsigned char *dst,
+ int width, int height);
+
void v4lconvert_decode_sq905c(const unsigned char *src, unsigned char *dst,
int width, int height);
diff -r 276a90c8ac40 v4l2-apps/libv4l/libv4lconvert/libv4lconvert.c
--- a/v4l2-apps/libv4l/libv4lconvert/libv4lconvert.c Wed May 20 07:23:00 2009 +0200
+++ b/v4l2-apps/libv4l/libv4lconvert/libv4lconvert.c Wed May 20 13:10:53 2009 -0500
@@ -60,6 +60,7 @@
{ V4L2_PIX_FMT_JPEG, V4LCONVERT_COMPRESSED },
{ V4L2_PIX_FMT_SPCA561, V4LCONVERT_COMPRESSED },
{ V4L2_PIX_FMT_SN9C10X, V4LCONVERT_COMPRESSED },
+ { V4L2_PIX_FMT_SN9C2028, V4LCONVERT_COMPRESSED },
{ V4L2_PIX_FMT_PAC207, V4LCONVERT_COMPRESSED },
{ V4L2_PIX_FMT_MR97310A, V4LCONVERT_COMPRESSED },
{ V4L2_PIX_FMT_SQ905C, V4LCONVERT_COMPRESSED },
@@ -460,6 +461,7 @@
case V4L2_PIX_FMT_SN9C10X:
case V4L2_PIX_FMT_PAC207:
case V4L2_PIX_FMT_MR97310A:
+ case V4L2_PIX_FMT_SN9C2028:
case V4L2_PIX_FMT_SQ905C:
case V4L2_PIX_FMT_SBGGR8:
case V4L2_PIX_FMT_SGBRG8:
@@ -672,6 +674,7 @@
case V4L2_PIX_FMT_SN9C10X:
case V4L2_PIX_FMT_PAC207:
case V4L2_PIX_FMT_MR97310A:
+ case V4L2_PIX_FMT_SN9C2028:
case V4L2_PIX_FMT_SQ905C:
{
unsigned char *tmpbuf;
@@ -699,6 +702,10 @@
v4lconvert_decode_mr97310a(src, tmpbuf, width, height);
tmpfmt.fmt.pix.pixelformat = V4L2_PIX_FMT_SBGGR8;
break;
+ case V4L2_PIX_FMT_SN9C2028:
+ v4lconvert_decode_sn9c2028(src, tmpbuf, width, height);
+ src_pix_fmt = V4L2_PIX_FMT_SBGGR8;
+ break;
case V4L2_PIX_FMT_SQ905C:
v4lconvert_decode_sq905c(src, tmpbuf, width, height);
tmpfmt.fmt.pix.pixelformat = V4L2_PIX_FMT_SRGGB8;
diff -r 276a90c8ac40 v4l2-apps/libv4l/libv4lconvert/sn9c2028-decomp.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/v4l2-apps/libv4l/libv4lconvert/sn9c2028-decomp.c Wed May 20 13:10:53 2009 -0500
@@ -0,0 +1,158 @@
+/*
+ * sn9c2028-decomp.c
+ *
+ * Decompression function for the Sonix SN9C2028 dual-mode cameras.
+ *
+ * Code adapted from libgphoto2/camlibs/sonix, original version of which was
+ * Copyright (c) 2005 Theodore Kilgore <kilgota@auburn.edu>
+ *
+ * History:
+ *
+ * This decoding algorithm originates from the work of Bertrik Sikken for the
+ * SN9C102 cameras. This version is an adaptation of work done by Mattias
+ * Krauss for the webcam-osx (macam) project. There, it was further adapted
+ * for use with the Vivitar Vivicam 3350B (an SN9C2028 camera) by
+ * Harald Ruda <hrx@users.sourceforge.net>. Harald brought to my attention the
+ * work done in the macam project and suggested that I use it. The
+ * macam project is also licensed under the GPL. One improvement of my own
+ * was to notice that the even and odd columns of the image have been reversed
+ * by the decompression algorithm, and this needs to be corrected during the
+ * decompression.
+ *
+ *
+ * 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
+ * Lesser 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., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#include "libv4lconvert-priv.h"
+
+/* Four defines for bitstream operations, used in the decode function */
+
+#define PEEK_BITS(num,to) {\
+ if (bitBufCount < num) {\
+ do {\
+ bitBuf = (bitBuf << 8)|(*(src++));\
+ bitBufCount += 8; \
+ } \
+ while\
+ (bitBufCount < 24);\
+ } \
+ to = bitBuf >> (bitBufCount-num);\
+}
+
+/*
+ * PEEK_BITS puts the next <num> bits into the low bits of <to>.
+ * when the buffer is empty, it is completely refilled.
+ * This strategy tries to reduce memory access. Note that the high bits
+ * are NOT set to zero!
+ */
+
+#define EAT_BITS(num) { bitBufCount -= num; bits_eaten += num; }
+
+/*
+ * EAT_BITS consumes <num> bits (PEEK_BITS does not consume anything,
+ * it just peeks)
+ */
+
+#define PARSE_PIXEL(val) {\
+ PEEK_BITS(10, bits);\
+ if ((bits&0x200) == 0) {\
+ EAT_BITS(1);\
+ } \
+ else if ((bits&0x380) == 0x280) {\
+ EAT_BITS(3);\
+ val += 3;\
+ if (val > 255)\
+ val = 255;\
+ } \
+ else if ((bits&0x380) == 0x300) {\
+ EAT_BITS(3);\
+ val -= 3;\
+ if (val < 0)\
+ val = 0;\
+ } \
+ else if ((bits&0x3c0) == 0x200) {\
+ EAT_BITS(4);\
+ val += 8;\
+ if (val > 255)\
+ val = 255;\
+ } \
+ else if ((bits&0x3c0) == 0x240) {\
+ EAT_BITS(4);\
+ val -= 8;\
+ if (val < 0)\
+ val = 0;\
+ } \
+ else if ((bits&0x3c0) == 0x3c0) {\
+ EAT_BITS(4);\
+ val -= 20;\
+ if (val < 0)\
+ val = 0;\
+ } \
+ else if ((bits&0x3e0) == 0x380) {\
+ EAT_BITS(5);\
+ val += 20;\
+ if (val > 255)\
+ val = 255;\
+ } \
+ else {\
+ EAT_BITS(10);\
+ val = 8*(bits&0x1f)+0;\
+ } \
+}
+
+
+#define PUT_PIXEL_PAIR {\
+ long pp;\
+ pp = (c1val<<8)+c2val;\
+ *((unsigned short *) (dst+dst_index)) = pp;\
+ dst_index += 2;\
+}
+
+/* Now the decode function itself */
+
+void v4lconvert_decode_sn9c2028(const unsigned char *src, unsigned char *dst,
+ int width, int height)
+{
+ long dst_index = 0;
+ int starting_row = 0;
+ unsigned short bits;
+ short c1val, c2val;
+ int x, y;
+ unsigned long bitBuf = 0;
+ unsigned long bitBufCount = 0;
+ unsigned long bits_eaten = 0;
+
+ src += 12; /* Remove the header */
+
+ for (y = starting_row; y < height; y++) {
+ PEEK_BITS(8, bits);
+ EAT_BITS(8);
+ c2val = (bits & 0xff);
+ PEEK_BITS(8, bits);
+ EAT_BITS(8);
+ c1val = (bits & 0xff);
+
+ PUT_PIXEL_PAIR;
+
+ for (x = 2; x < width ; x += 2) {
+ /* The compression reversed the even and odd columns.*/
+ PARSE_PIXEL(c2val);
+ PARSE_PIXEL(c1val);
+ PUT_PIXEL_PAIR;
+ }
+ }
+}
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH] to libv4lconvert, to do decompression for sn9c2028 cameras
2009-05-23 22:12 ` [PATCH] to libv4lconvert, to do decompression for sn9c2028 cameras Theodore Kilgore
@ 2009-05-24 9:49 ` Hans de Goede
2009-05-24 17:22 ` Theodore Kilgore
0 siblings, 1 reply; 15+ messages in thread
From: Hans de Goede @ 2009-05-24 9:49 UTC (permalink / raw)
To: Theodore Kilgore; +Cc: Hans de Goede, linux-media
Hi,
Thanks for the patch, but I see one big issue with this patch,
the decompression algorithm is GPL, where as libv4l is LGPL.
Any chance you could get this relicensed to LGPL ?
Regards,
Hans
On 05/24/2009 12:12 AM, Theodore Kilgore wrote:
>
> The purpose of the following patch is to do the decompression for the
> Sonix SN9C2028 cameras, which are already supported as still cameras in
> libgphoto2/camlibs/sonix. The decompression code is essentially
> identical to that which is used in the libgphoto2 driver, with minor
> changes to adapt it for libv4lconvert.
>
> The history and antecedents of this algorithm are described in
> libgphoto2/camlibs/sonix/README.sonix, which was Copyright (C) 2005
> Theodore Kilgore <kilgota@auburn.edu>, as follows:
>
> "The decompression algorithm originates, I understand, in the work of
> Bertrik Sikkens for the sn9c102 cameras. In the macam project for
> MacOS-X camera support (webcam-osx project on Sourceforge), the
> decompression algorithm for the sn9c2028 cameras was developed by
> Mattias Krauss and adapted for use with the Vivitar Vivicam 3350B in
> particular by Harald Ruda <hrx at users.sourceforge.net>. Harald brought
> to my attention the work already done in the macam project, pointed out
> that it is GPL code, and invited me to have a look. Thanks, Harald. The
> decompression algorithm used here is similar to what is used in the
> macam driver, but is considerably streamlined and improved."
>
> Signed-off-by Theodore Kilgore <kilgota@auburn.edu>
>
> -----------------------------------------------------------------------
> diff -r 276a90c8ac40 v4l2-apps/libv4l/libv4lconvert/Makefile
> --- a/v4l2-apps/libv4l/libv4lconvert/Makefile Wed May 20 07:23:00 2009
> +0200
> +++ b/v4l2-apps/libv4l/libv4lconvert/Makefile Wed May 20 13:10:53 2009
> -0500
> @@ -14,7 +14,7 @@
>
> CONVERT_OBJS = libv4lconvert.o tinyjpeg.o sn9c10x.o sn9c20x.o pac207.o \
> mr97310a.o flip.o crop.o jidctflt.o spca561-decompress.o \
> - rgbyuv.o spca501.o sq905c.o bayer.o hm12.o \
> + rgbyuv.o sn9c2028-decomp.o spca501.o sq905c.o bayer.o hm12.o \
> control/libv4lcontrol.o processing/libv4lprocessing.o \
> processing/rgbprocessing.o processing/bayerprocessing.o
> TARGETS = $(CONVERT_LIB) libv4lconvert.pc
> diff -r 276a90c8ac40 v4l2-apps/libv4l/libv4lconvert/libv4lconvert-priv.h
> --- a/v4l2-apps/libv4l/libv4lconvert/libv4lconvert-priv.h Wed May 20
> 07:23:00 2009 +0200
> +++ b/v4l2-apps/libv4l/libv4lconvert/libv4lconvert-priv.h Wed May 20
> 13:10:53 2009 -0500
> @@ -51,6 +51,10 @@
> #define V4L2_PIX_FMT_MR97310A v4l2_fourcc('M','3','1','0')
> #endif
>
> +#ifndef V4L2_PIX_FMT_SN9C2028
> +#define V4L2_PIX_FMT_SN9C2028 v4l2_fourcc('S', 'O', 'N', 'X')
> +#endif
> +
> #ifndef V4L2_PIX_FMT_SQ905C
> #define V4L2_PIX_FMT_SQ905C v4l2_fourcc('9', '0', '5', 'C')
> #endif
> @@ -193,6 +197,9 @@
> void v4lconvert_decode_mr97310a(const unsigned char *src, unsigned char
> *dst,
> int width, int height);
>
> +void v4lconvert_decode_sn9c2028(const unsigned char *src, unsigned char
> *dst,
> + int width, int height);
> +
> void v4lconvert_decode_sq905c(const unsigned char *src, unsigned char *dst,
> int width, int height);
>
> diff -r 276a90c8ac40 v4l2-apps/libv4l/libv4lconvert/libv4lconvert.c
> --- a/v4l2-apps/libv4l/libv4lconvert/libv4lconvert.c Wed May 20 07:23:00
> 2009 +0200
> +++ b/v4l2-apps/libv4l/libv4lconvert/libv4lconvert.c Wed May 20 13:10:53
> 2009 -0500
> @@ -60,6 +60,7 @@
> { V4L2_PIX_FMT_JPEG, V4LCONVERT_COMPRESSED },
> { V4L2_PIX_FMT_SPCA561, V4LCONVERT_COMPRESSED },
> { V4L2_PIX_FMT_SN9C10X, V4LCONVERT_COMPRESSED },
> + { V4L2_PIX_FMT_SN9C2028, V4LCONVERT_COMPRESSED },
> { V4L2_PIX_FMT_PAC207, V4LCONVERT_COMPRESSED },
> { V4L2_PIX_FMT_MR97310A, V4LCONVERT_COMPRESSED },
> { V4L2_PIX_FMT_SQ905C, V4LCONVERT_COMPRESSED },
> @@ -460,6 +461,7 @@
> case V4L2_PIX_FMT_SN9C10X:
> case V4L2_PIX_FMT_PAC207:
> case V4L2_PIX_FMT_MR97310A:
> + case V4L2_PIX_FMT_SN9C2028:
> case V4L2_PIX_FMT_SQ905C:
> case V4L2_PIX_FMT_SBGGR8:
> case V4L2_PIX_FMT_SGBRG8:
> @@ -672,6 +674,7 @@
> case V4L2_PIX_FMT_SN9C10X:
> case V4L2_PIX_FMT_PAC207:
> case V4L2_PIX_FMT_MR97310A:
> + case V4L2_PIX_FMT_SN9C2028:
> case V4L2_PIX_FMT_SQ905C:
> {
> unsigned char *tmpbuf;
> @@ -699,6 +702,10 @@
> v4lconvert_decode_mr97310a(src, tmpbuf, width, height);
> tmpfmt.fmt.pix.pixelformat = V4L2_PIX_FMT_SBGGR8;
> break;
> + case V4L2_PIX_FMT_SN9C2028:
> + v4lconvert_decode_sn9c2028(src, tmpbuf, width, height);
> + src_pix_fmt = V4L2_PIX_FMT_SBGGR8;
> + break;
> case V4L2_PIX_FMT_SQ905C:
> v4lconvert_decode_sq905c(src, tmpbuf, width, height);
> tmpfmt.fmt.pix.pixelformat = V4L2_PIX_FMT_SRGGB8;
> diff -r 276a90c8ac40 v4l2-apps/libv4l/libv4lconvert/sn9c2028-decomp.c
> --- /dev/null Thu Jan 01 00:00:00 1970 +0000
> +++ b/v4l2-apps/libv4l/libv4lconvert/sn9c2028-decomp.c Wed May 20
> 13:10:53 2009 -0500
> @@ -0,0 +1,158 @@
> +/*
> + * sn9c2028-decomp.c
> + *
> + * Decompression function for the Sonix SN9C2028 dual-mode cameras.
> + *
> + * Code adapted from libgphoto2/camlibs/sonix, original version of
> which was
> + * Copyright (c) 2005 Theodore Kilgore <kilgota@auburn.edu>
> + *
> + * History:
> + *
> + * This decoding algorithm originates from the work of Bertrik Sikken
> for the
> + * SN9C102 cameras. This version is an adaptation of work done by Mattias
> + * Krauss for the webcam-osx (macam) project. There, it was further
> adapted
> + * for use with the Vivitar Vivicam 3350B (an SN9C2028 camera) by
> + * Harald Ruda <hrx@users.sourceforge.net>. Harald brought to my
> attention the
> + * work done in the macam project and suggested that I use it. The
> + * macam project is also licensed under the GPL. One improvement of my own
> + * was to notice that the even and odd columns of the image have been
> reversed
> + * by the decompression algorithm, and this needs to be corrected
> during the
> + * decompression.
> + *
> + *
> + * 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
> + * Lesser 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., 59 Temple Place - Suite 330,
> + * Boston, MA 02111-1307, USA.
> + */
> +
> +#include "libv4lconvert-priv.h"
> +
> +/* Four defines for bitstream operations, used in the decode function */
> +
> +#define PEEK_BITS(num,to) {\
> + if (bitBufCount < num) {\
> + do {\
> + bitBuf = (bitBuf << 8)|(*(src++));\
> + bitBufCount += 8; \
> + } \
> + while\
> + (bitBufCount < 24);\
> + } \
> + to = bitBuf >> (bitBufCount-num);\
> +}
> +
> +/*
> + * PEEK_BITS puts the next <num> bits into the low bits of <to>.
> + * when the buffer is empty, it is completely refilled.
> + * This strategy tries to reduce memory access. Note that the high bits
> + * are NOT set to zero!
> + */
> +
> +#define EAT_BITS(num) { bitBufCount -= num; bits_eaten += num; }
> +
> +/*
> + * EAT_BITS consumes <num> bits (PEEK_BITS does not consume anything,
> + * it just peeks)
> + */
> +
> +#define PARSE_PIXEL(val) {\
> + PEEK_BITS(10, bits);\
> + if ((bits&0x200) == 0) {\
> + EAT_BITS(1);\
> + } \
> + else if ((bits&0x380) == 0x280) {\
> + EAT_BITS(3);\
> + val += 3;\
> + if (val > 255)\
> + val = 255;\
> + } \
> + else if ((bits&0x380) == 0x300) {\
> + EAT_BITS(3);\
> + val -= 3;\
> + if (val < 0)\
> + val = 0;\
> + } \
> + else if ((bits&0x3c0) == 0x200) {\
> + EAT_BITS(4);\
> + val += 8;\
> + if (val > 255)\
> + val = 255;\
> + } \
> + else if ((bits&0x3c0) == 0x240) {\
> + EAT_BITS(4);\
> + val -= 8;\
> + if (val < 0)\
> + val = 0;\
> + } \
> + else if ((bits&0x3c0) == 0x3c0) {\
> + EAT_BITS(4);\
> + val -= 20;\
> + if (val < 0)\
> + val = 0;\
> + } \
> + else if ((bits&0x3e0) == 0x380) {\
> + EAT_BITS(5);\
> + val += 20;\
> + if (val > 255)\
> + val = 255;\
> + } \
> + else {\
> + EAT_BITS(10);\
> + val = 8*(bits&0x1f)+0;\
> + } \
> +}
> +
> +
> +#define PUT_PIXEL_PAIR {\
> + long pp;\
> + pp = (c1val<<8)+c2val;\
> + *((unsigned short *) (dst+dst_index)) = pp;\
> + dst_index += 2;\
> +}
> +
> +/* Now the decode function itself */
> +
> +void v4lconvert_decode_sn9c2028(const unsigned char *src, unsigned char
> *dst,
> + int width, int height)
> +{
> + long dst_index = 0;
> + int starting_row = 0;
> + unsigned short bits;
> + short c1val, c2val;
> + int x, y;
> + unsigned long bitBuf = 0;
> + unsigned long bitBufCount = 0;
> + unsigned long bits_eaten = 0;
> +
> + src += 12; /* Remove the header */
> +
> + for (y = starting_row; y < height; y++) {
> + PEEK_BITS(8, bits);
> + EAT_BITS(8);
> + c2val = (bits & 0xff);
> + PEEK_BITS(8, bits);
> + EAT_BITS(8);
> + c1val = (bits & 0xff);
> +
> + PUT_PIXEL_PAIR;
> +
> + for (x = 2; x < width ; x += 2) {
> + /* The compression reversed the even and odd columns.*/
> + PARSE_PIXEL(c2val);
> + PARSE_PIXEL(c1val);
> + PUT_PIXEL_PAIR;
> + }
> + }
> +}
>
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH] to libv4lconvert, to do decompression for sn9c2028 cameras
2009-05-24 9:49 ` Hans de Goede
@ 2009-05-24 17:22 ` Theodore Kilgore
2009-05-24 17:32 ` Hans de Goede
0 siblings, 1 reply; 15+ messages in thread
From: Theodore Kilgore @ 2009-05-24 17:22 UTC (permalink / raw)
To: Hans de Goede; +Cc: Hans de Goede, linux-media
On Sun, 24 May 2009, Hans de Goede wrote:
> Hi,
>
> Thanks for the patch, but I see one big issue with this patch,
> the decompression algorithm is GPL, where as libv4l is LGPL.
>
> Any chance you could get this relicensed to LGPL ?
Hmmm. Come to think of it, that _is_ a problem, isn't it? I will see what
I can do about it, but it might take a while.
Theodore Kilgore
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH] to libv4lconvert, to do decompression for sn9c2028 cameras
2009-05-24 17:22 ` Theodore Kilgore
@ 2009-05-24 17:32 ` Hans de Goede
2009-05-24 22:26 ` Theodore Kilgore
0 siblings, 1 reply; 15+ messages in thread
From: Hans de Goede @ 2009-05-24 17:32 UTC (permalink / raw)
To: Theodore Kilgore; +Cc: Hans de Goede, linux-media
On 05/24/2009 07:22 PM, Theodore Kilgore wrote:
>
>
> On Sun, 24 May 2009, Hans de Goede wrote:
>
>> Hi,
>>
>> Thanks for the patch, but I see one big issue with this patch,
>> the decompression algorithm is GPL, where as libv4l is LGPL.
>>
>> Any chance you could get this relicensed to LGPL ?
>
> Hmmm. Come to think of it, that _is_ a problem, isn't it? I will see
> what I can do about it, but it might take a while.
>
Yes I'm afraid it is :(
Regards,
Hans
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH] to libv4lconvert, to do decompression for sn9c2028 cameras
2009-05-24 17:32 ` Hans de Goede
@ 2009-05-24 22:26 ` Theodore Kilgore
0 siblings, 0 replies; 15+ messages in thread
From: Theodore Kilgore @ 2009-05-24 22:26 UTC (permalink / raw)
To: Hans de Goede; +Cc: Hans de Goede, linux-media
On Sun, 24 May 2009, Hans de Goede wrote:
>
>
> On 05/24/2009 07:22 PM, Theodore Kilgore wrote:
>>
>>
>> On Sun, 24 May 2009, Hans de Goede wrote:
>>
>>> Hi,
>>>
>>> Thanks for the patch, but I see one big issue with this patch,
>>> the decompression algorithm is GPL, where as libv4l is LGPL.
>>>
>>> Any chance you could get this relicensed to LGPL ?
>>
>> Hmmm. Come to think of it, that _is_ a problem, isn't it? I will see
>> what I can do about it, but it might take a while.
>>
>
> Yes I'm afraid it is :(
>
> Regards,
>
> Hans
>
I seem to recall that I asked Harald Ruda about this once before, and he
gave permission. The question arose because libgphoto2 is also LGPL, and I
was thinking it might be nice if the decomp code for those cameras would
be LGPL, too. Clearly, I never got around to making the change even though
I asked him about it and he said yes, go right ahead.
But naturally that is the mail from him that I can not find. I have lots
of other mails, including the original one in which he said that he had
read a post of mine to gphoto-devel about the decompression issue for
these cameras.
Well, I have sent him another mail, hoping that he is still active on the
macam project, and I also will try to search through backup files and such
to look for the mail. You can imagine, that was back in 2005 and several
machine failures and hard drive failures in particular have taken place
since then. I do try to back up stuff that I think is important, by
having a copy of it on several machines. Let us hope that either I find
something, or he answers the mail.
Theodore Kilgore
^ permalink raw reply [flat|nested] 15+ messages in thread
end of thread, other threads:[~2009-05-24 22:12 UTC | newest]
Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-05-11 14:45 working on webcam driver MK
2009-05-11 18:50 ` Erik Andrén
2009-05-14 16:00 ` MK
2009-05-14 17:26 ` Hans de Goede
2009-05-14 19:57 ` Theodore Kilgore
2009-05-17 16:08 ` MK
2009-05-17 22:31 ` leandro Costantino
2009-05-19 20:35 ` What is libv4lconvert/sn9c202x.c for? Theodore Kilgore
2009-05-20 18:38 ` Hans de Goede
2009-05-20 19:53 ` Theodore Kilgore
2009-05-23 22:12 ` [PATCH] to libv4lconvert, to do decompression for sn9c2028 cameras Theodore Kilgore
2009-05-24 9:49 ` Hans de Goede
2009-05-24 17:22 ` Theodore Kilgore
2009-05-24 17:32 ` Hans de Goede
2009-05-24 22:26 ` Theodore Kilgore
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox