* prototype of a USB v4l2 driver? @ 2008-07-12 19:40 Andrea 2008-07-12 19:59 ` Hans de Goede 0 siblings, 1 reply; 9+ messages in thread From: Andrea @ 2008-07-12 19:40 UTC (permalink / raw) To: video4linux-list Hi, I would like to learn more in detail how a video driver works. Basically in the last days I've looked at pwc to see why it is not so robust with mplayer. I found something in the streaming ioctl calls. As an exercise I would like to port it to the "best" and "more elegant" framework, reusing as much as possible the existing v4l2 framework are writing as little code as possible (e.g. using videobuf). And remove all the v4l1 code. I would like to know which is the best USB driver to look at. Which is the best USB driver that implements videobuf? This is a good overview of a driver http://lwn.net/Articles/203924/ I think vivi.c is an other good one. Does anybody have any other good reference to look at? Thanks for your help. Cheers Andrea -- 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] 9+ messages in thread
* Re: prototype of a USB v4l2 driver? 2008-07-12 19:40 prototype of a USB v4l2 driver? Andrea @ 2008-07-12 19:59 ` Hans de Goede 2008-07-13 8:39 ` Andrea 2008-07-13 11:30 ` prototype of a USB v4l2 driver? gspca? Andrea 0 siblings, 2 replies; 9+ messages in thread From: Hans de Goede @ 2008-07-12 19:59 UTC (permalink / raw) To: Andrea; +Cc: video4linux-list Andrea wrote: > Hi, > > I would like to learn more in detail how a video driver works. > Basically in the last days I've looked at pwc to see why it is not so > robust with mplayer. > I found something in the streaming ioctl calls. > > As an exercise I would like to port it to the "best" and "more elegant" > framework, reusing as much as possible the existing v4l2 framework are > writing as little code as possible (e.g. using videobuf). And remove all > the v4l1 code. > > I would like to know which is the best USB driver to look at. > Which is the best USB driver that implements videobuf? > > This is a good overview of a driver > http://lwn.net/Articles/203924/ > > I think vivi.c is an other good one. > > Does anybody have any other good reference to look at? > What kind of device, I think that for webcams you;re best using gspca, (now merged in mecurial), that handles all the usb specific stuff, buffer management, etc. In general it makes it easy to write a webcam driver allowing you to focus on the interaction with the cam, rather then having to worry about looking, usb specifics, buffer management etc. Regards, Hans -- 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] 9+ messages in thread
* Re: prototype of a USB v4l2 driver? 2008-07-12 19:59 ` Hans de Goede @ 2008-07-13 8:39 ` Andrea 2008-07-13 11:30 ` prototype of a USB v4l2 driver? gspca? Andrea 1 sibling, 0 replies; 9+ messages in thread From: Andrea @ 2008-07-13 8:39 UTC (permalink / raw) To: Hans de Goede, video4linux-list Hans de Goede wrote: >> This is a good overview of a driver >> http://lwn.net/Articles/203924/ >> >> I think vivi.c is an other good one. >> >> Does anybody have any other good reference to look at? >> > > What kind of device, I think that for webcams you;re best using gspca, > (now merged in mecurial), that handles all the usb specific stuff, > buffer management, etc. In general it makes it easy to write a webcam > driver allowing you to focus on the interaction with the cam, rather > then having to worry about looking, usb specifics, buffer management etc. > Yes, it is a USB webcam: Logitech QuickCam 4000 Pro USB I will look into gspca and see how it works. Thanks Andrea -- 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] 9+ messages in thread
* Re: prototype of a USB v4l2 driver? gspca? 2008-07-12 19:59 ` Hans de Goede 2008-07-13 8:39 ` Andrea @ 2008-07-13 11:30 ` Andrea 2008-07-13 19:29 ` Hans de Goede 1 sibling, 1 reply; 9+ messages in thread From: Andrea @ 2008-07-13 11:30 UTC (permalink / raw) To: Hans de Goede, video4linux-list Hans de Goede wrote: > Andrea wrote: > > What kind of device, I think that for webcams you;re best using gspca, > (now merged in mecurial), that handles all the usb specific stuff, > buffer management, etc. In general it makes it easy to write a webcam > driver allowing you to focus on the interaction with the cam, rather > then having to worry about looking, usb specifics, buffer management etc. > I've had a quick look at the structure of gspca, and it seems that any subdriver should just (easier to say that to do) fill one of those structures struct sd_desc { /* information */ const char *name; /* sub-driver name */ /* controls */ const struct ctrl *ctrls; int nctrls; /* operations */ cam_cf_op config; /* called on probe */ cam_op open; /* called on open */ cam_v_op start; /* called on stream on */ cam_v_op stopN; /* called on stream off - main alt */ cam_v_op stop0; /* called on stream off - alt 0 */ cam_v_op close; /* called on close */ cam_pkt_op pkt_scan; /* optional operations */ cam_v_op dq_callback; /* called when a frame has been dequeued */ cam_jpg_op get_jcomp; cam_jpg_op set_jcomp; cam_qmnu_op querymenu; }; 1) providing ctrls (+ functions to handle settings) 2) functions to open/stream/close etc... It does not seem too bad. The a natural question that comes to me: Shouldn't many more USB drivers be implemented as subdrivers of gspca? But I guess there is much more I don't know under the apparent easy interface. Andrea -- 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] 9+ messages in thread
* Re: prototype of a USB v4l2 driver? gspca? 2008-07-13 11:30 ` prototype of a USB v4l2 driver? gspca? Andrea @ 2008-07-13 19:29 ` Hans de Goede 2008-07-17 15:31 ` Markus Rechberger 0 siblings, 1 reply; 9+ messages in thread From: Hans de Goede @ 2008-07-13 19:29 UTC (permalink / raw) To: Andrea; +Cc: video4linux-list Andrea wrote: > Hans de Goede wrote: >> Andrea wrote: >> >> What kind of device, I think that for webcams you;re best using gspca, >> (now merged in mecurial), that handles all the usb specific stuff, >> buffer management, etc. In general it makes it easy to write a webcam >> driver allowing you to focus on the interaction with the cam, rather >> then having to worry about looking, usb specifics, buffer management etc. >> > > I've had a quick look at the structure of gspca, and it seems that any > subdriver should just (easier to say that to do) fill one of those > structures > Correct. > struct sd_desc { > /* information */ > const char *name; /* sub-driver name */ > /* controls */ > const struct ctrl *ctrls; > int nctrls; > /* operations */ > cam_cf_op config; /* called on probe */ > cam_op open; /* called on open */ > cam_v_op start; /* called on stream on */ > cam_v_op stopN; /* called on stream off - main alt */ > cam_v_op stop0; /* called on stream off - alt 0 */ > cam_v_op close; /* called on close */ > cam_pkt_op pkt_scan; > /* optional operations */ > cam_v_op dq_callback; /* called when a frame has been dequeued */ > cam_jpg_op get_jcomp; > cam_jpg_op set_jcomp; > cam_qmnu_op querymenu; > }; > > 1) providing ctrls (+ functions to handle settings) > 2) functions to open/stream/close etc... > > It does not seem too bad. > It isn't. > The a natural question that comes to me: > > Shouldn't many more USB drivers be implemented as subdrivers of gspca? Yes that would remove lots of code duplication, but allas they were written before gspca (version 2, as you currently see in mercurial) was around. Regards, Hans -- 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] 9+ messages in thread
* Re: prototype of a USB v4l2 driver? gspca? 2008-07-13 19:29 ` Hans de Goede @ 2008-07-17 15:31 ` Markus Rechberger 2008-07-17 15:34 ` Hans de Goede 0 siblings, 1 reply; 9+ messages in thread From: Markus Rechberger @ 2008-07-17 15:31 UTC (permalink / raw) To: Hans de Goede; +Cc: Andrea, video4linux-list On Sun, Jul 13, 2008 at 9:29 PM, Hans de Goede <j.w.r.degoede@hhs.nl> wrote: > Andrea wrote: >> >> Hans de Goede wrote: >>> >>> Andrea wrote: >>> >>> What kind of device, I think that for webcams you;re best using gspca, >>> (now merged in mecurial), that handles all the usb specific stuff, buffer >>> management, etc. In general it makes it easy to write a webcam driver >>> allowing you to focus on the interaction with the cam, rather then having to >>> worry about looking, usb specifics, buffer management etc. >>> >> >> I've had a quick look at the structure of gspca, and it seems that any >> subdriver should just (easier to say that to do) fill one of those >> structures >> > > Correct. > >> struct sd_desc { >> /* information */ >> const char *name; /* sub-driver name */ >> /* controls */ >> const struct ctrl *ctrls; >> int nctrls; >> /* operations */ >> cam_cf_op config; /* called on probe */ >> cam_op open; /* called on open */ >> cam_v_op start; /* called on stream on */ >> cam_v_op stopN; /* called on stream off - main alt */ >> cam_v_op stop0; /* called on stream off - alt 0 */ >> cam_v_op close; /* called on close */ >> cam_pkt_op pkt_scan; >> /* optional operations */ >> cam_v_op dq_callback; /* called when a frame has been dequeued */ >> cam_jpg_op get_jcomp; >> cam_jpg_op set_jcomp; >> cam_qmnu_op querymenu; >> }; >> >> 1) providing ctrls (+ functions to handle settings) >> 2) functions to open/stream/close etc... >> >> It does not seem too bad. >> > > It isn't. > >> The a natural question that comes to me: >> >> Shouldn't many more USB drivers be implemented as subdrivers of gspca? > > Yes that would remove lots of code duplication, but allas they were written > before gspca (version 2, as you currently see in mercurial) was around. > I guess quite a few drivers have extra features which might be missing in other usb based ones. Best is probably to have a look at all available ones and cherry pick the best ideas and easiest to understand parts. I think they are all on a certain level of quality right now. * gspca * uvcvideo * em28xx from mcentral.de Markus -- 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] 9+ messages in thread
* Re: prototype of a USB v4l2 driver? gspca? 2008-07-17 15:31 ` Markus Rechberger @ 2008-07-17 15:34 ` Hans de Goede 2008-07-17 16:19 ` Markus Rechberger 2008-07-17 21:10 ` Andrea 0 siblings, 2 replies; 9+ messages in thread From: Hans de Goede @ 2008-07-17 15:34 UTC (permalink / raw) To: Markus Rechberger; +Cc: Andrea, video4linux-list Markus Rechberger wrote: > On Sun, Jul 13, 2008 at 9:29 PM, Hans de Goede <j.w.r.degoede@hhs.nl> wrote: >> Andrea wrote: >>> Hans de Goede wrote: >>>> Andrea wrote: >>>> >>>> What kind of device, I think that for webcams you;re best using gspca, >>>> (now merged in mecurial), that handles all the usb specific stuff, buffer >>>> management, etc. In general it makes it easy to write a webcam driver >>>> allowing you to focus on the interaction with the cam, rather then having to >>>> worry about looking, usb specifics, buffer management etc. >>>> >>> I've had a quick look at the structure of gspca, and it seems that any >>> subdriver should just (easier to say that to do) fill one of those >>> structures >>> >> Correct. >> >>> struct sd_desc { >>> /* information */ >>> const char *name; /* sub-driver name */ >>> /* controls */ >>> const struct ctrl *ctrls; >>> int nctrls; >>> /* operations */ >>> cam_cf_op config; /* called on probe */ >>> cam_op open; /* called on open */ >>> cam_v_op start; /* called on stream on */ >>> cam_v_op stopN; /* called on stream off - main alt */ >>> cam_v_op stop0; /* called on stream off - alt 0 */ >>> cam_v_op close; /* called on close */ >>> cam_pkt_op pkt_scan; >>> /* optional operations */ >>> cam_v_op dq_callback; /* called when a frame has been dequeued */ >>> cam_jpg_op get_jcomp; >>> cam_jpg_op set_jcomp; >>> cam_qmnu_op querymenu; >>> }; >>> >>> 1) providing ctrls (+ functions to handle settings) >>> 2) functions to open/stream/close etc... >>> >>> It does not seem too bad. >>> >> It isn't. >> >>> The a natural question that comes to me: >>> >>> Shouldn't many more USB drivers be implemented as subdrivers of gspca? >> Yes that would remove lots of code duplication, but allas they were written >> before gspca (version 2, as you currently see in mercurial) was around. >> > > I guess quite a few drivers have extra features which might be missing > in other usb based ones. Best is probably to have a look at all > available ones and cherry pick the best ideas and easiest to > understand parts. > I think they are all on a certain level of quality right now. > > * gspca > * uvcvideo > * em28xx from mcentral.de > Well these 3 drivers (in case of gscpa driver group) target different classes of hardware: gspca: pre uvc webcams (and nothing more then that) uvcvideo: uvc devices em28xx: em28xx based devices, which can be dvd, analogtv, webcam, etc, etc. Regards, Hans -- 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] 9+ messages in thread
* Re: prototype of a USB v4l2 driver? gspca? 2008-07-17 15:34 ` Hans de Goede @ 2008-07-17 16:19 ` Markus Rechberger 2008-07-17 21:10 ` Andrea 1 sibling, 0 replies; 9+ messages in thread From: Markus Rechberger @ 2008-07-17 16:19 UTC (permalink / raw) To: Hans de Goede; +Cc: Andrea, video4linux-list On 7/17/08, Hans de Goede <j.w.r.degoede@hhs.nl> wrote: > Markus Rechberger wrote: > > On Sun, Jul 13, 2008 at 9:29 PM, Hans de Goede <j.w.r.degoede@hhs.nl> > wrote: > > > > > Andrea wrote: > > > > > > > Hans de Goede wrote: > > > > > > > > > Andrea wrote: > > > > > > > > > > What kind of device, I think that for webcams you;re best using > gspca, > > > > > (now merged in mecurial), that handles all the usb specific stuff, > buffer > > > > > management, etc. In general it makes it easy to write a webcam > driver > > > > > allowing you to focus on the interaction with the cam, rather then > having to > > > > > worry about looking, usb specifics, buffer management etc. > > > > > > > > > > > > > > I've had a quick look at the structure of gspca, and it seems that any > > > > subdriver should just (easier to say that to do) fill one of those > > > > structures > > > > > > > > > > > Correct. > > > > > > > > > > struct sd_desc { > > > > /* information */ > > > > const char *name; /* sub-driver name */ > > > > /* controls */ > > > > const struct ctrl *ctrls; > > > > int nctrls; > > > > /* operations */ > > > > cam_cf_op config; /* called on probe */ > > > > cam_op open; /* called on open */ > > > > cam_v_op start; /* called on stream on */ > > > > cam_v_op stopN; /* called on stream off - main alt */ > > > > cam_v_op stop0; /* called on stream off - alt 0 */ > > > > cam_v_op close; /* called on close */ > > > > cam_pkt_op pkt_scan; > > > > /* optional operations */ > > > > cam_v_op dq_callback; /* called when a frame has been dequeued */ > > > > cam_jpg_op get_jcomp; > > > > cam_jpg_op set_jcomp; > > > > cam_qmnu_op querymenu; > > > > }; > > > > > > > > 1) providing ctrls (+ functions to handle settings) > > > > 2) functions to open/stream/close etc... > > > > > > > > It does not seem too bad. > > > > > > > > > > > It isn't. > > > > > > > > > > The a natural question that comes to me: > > > > > > > > Shouldn't many more USB drivers be implemented as subdrivers of gspca? > > > > > > > Yes that would remove lots of code duplication, but allas they were > written > > > before gspca (version 2, as you currently see in mercurial) was around. > > > > > > > > > > I guess quite a few drivers have extra features which might be missing > > in other usb based ones. Best is probably to have a look at all > > available ones and cherry pick the best ideas and easiest to > > understand parts. > > I think they are all on a certain level of quality right now. > > > > * gspca > > * uvcvideo > > * em28xx from mcentral.de > > > > > > Well these 3 drivers (in case of gscpa driver group) target different > classes of hardware: > gspca: pre uvc webcams (and nothing more then that) > uvcvideo: uvc devices > em28xx: em28xx based devices, which can be dvd, analogtv, webcam, etc, dvd should be DVB, also VBI (v4l1-vbi read, v4l2-vbi-read, v4l2-vbi-mmap) (videotext) and usb digital audio. Markus -- 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] 9+ messages in thread
* Re: prototype of a USB v4l2 driver? gspca? 2008-07-17 15:34 ` Hans de Goede 2008-07-17 16:19 ` Markus Rechberger @ 2008-07-17 21:10 ` Andrea 1 sibling, 0 replies; 9+ messages in thread From: Andrea @ 2008-07-17 21:10 UTC (permalink / raw) To: Hans de Goede; +Cc: video4linux-list Hans de Goede wrote: > Markus Rechberger wrote: >> On Sun, Jul 13, 2008 at 9:29 PM, Hans de Goede <j.w.r.degoede@hhs.nl> >> >> I guess quite a few drivers have extra features which might be missing >> in other usb based ones. Best is probably to have a look at all >> available ones and cherry pick the best ideas and easiest to >> understand parts. >> I think they are all on a certain level of quality right now. >> >> * gspca >> * uvcvideo >> * em28xx from mcentral.de >> > > Well these 3 drivers (in case of gscpa driver group) target different > classes of hardware: > gspca: pre uvc webcams (and nothing more then that) > uvcvideo: uvc devices > em28xx: em28xx based devices, which can be dvd, analogtv, webcam, > etc, etc. > I think my task is pretty limited to a webcam. So I will start from gspca and try to work my way through it. I am a bit scared by the size of em28xx, which seems to profide too many features for my level of understanding. Andrea -- 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] 9+ messages in thread
end of thread, other threads:[~2008-07-17 21:13 UTC | newest] Thread overview: 9+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2008-07-12 19:40 prototype of a USB v4l2 driver? Andrea 2008-07-12 19:59 ` Hans de Goede 2008-07-13 8:39 ` Andrea 2008-07-13 11:30 ` prototype of a USB v4l2 driver? gspca? Andrea 2008-07-13 19:29 ` Hans de Goede 2008-07-17 15:31 ` Markus Rechberger 2008-07-17 15:34 ` Hans de Goede 2008-07-17 16:19 ` Markus Rechberger 2008-07-17 21:10 ` Andrea
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox