Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1428269 > unrolled thread
| Started by | Laurent Pinchart <laurent.pinchart@ideasonboard.com> |
|---|---|
| First post | 2016-06-22 02:00 +0200 |
| Last post | 2016-06-22 14:10 +0200 |
| Articles | 2 — 2 participants |
Back to article view | Back to linux.kernel
This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by
below is the oldest one visible, not the original post.
Re: camera application for testing (was Re: v4l subdevs without big device) Laurent Pinchart <laurent.pinchart@ideasonboard.com> - 2016-06-22 02:00 +0200
Re: camera application for testing (was Re: v4l subdevs without big device) Pavel Machek <pavel@ucw.cz> - 2016-06-22 14:10 +0200
| From | Laurent Pinchart <laurent.pinchart@ideasonboard.com> |
|---|---|
| Date | 2016-06-22 02:00 +0200 |
| Subject | Re: camera application for testing (was Re: v4l subdevs without big device) |
| Message-ID | <rMDKh-46q-11@gated-at.bofh.it> |
Hi Sakari, On Sunday 01 May 2016 17:08:31 Sakari Ailus wrote: > On Sat, Apr 30, 2016 at 12:13:59AM +0200, Pavel Machek wrote: > > Hi! > > > > What is reasonable camera application for testing? > > > > N900 looks like a low-end digital camera. I have now have the hardware > > working (can set focus to X cm using command line), but that's not > > going to be useful for taking photos. > > I guess you already knew about omap3camd; it's proprietary but from purely > practical point of view it'd be an option to support taking photos on the > N900. That would not be extensible any way, the best possible functionality > is limited what the daemon implements. > > I'm just mentioning the option of implementing wrapper for the omap3camd so > that it can work with upsteam APIs, I don't propose that however. > > > In particular, who is going to do computation neccessary for > > autofocus, whitebalance and exposure/gain? > > I think libv4l itself has algorithms to control at least some of these. It > relies on the image data so the CPU time consumption will be high. > > AFAIR Laurent has also worked on implementing some algorithms that use the > histogram and some of the statistics. Add him to cc list. http://git.ideasonboard.org/omap3-isp-live.git That's outdated and might not run or compile anymore. The code is more of a proof of concept implementation, but it could be used as a starting point. With an infinite amount of free time I'd love to work on an open-source project for computational cameras, integrating it with libv4l. > > There's http://fcam.garage.maemo.org/gettingStarted.html that should > > work on maemo, but a) it is not in Debian, b) it has non-trivial > > dependencies and c) will be a lot of fun to get working... > > (and d), will not be too useful, anyway, due to 1sec shutter lag: > > I believe this will be shorter nowadays. I don't remember the exact > technical solution which the text below refers to but I'm pretty sure it'll > be better with the current upstream. API-wise, there's work to be done there > (to port FCAM to upsteram APIs) but it's a possibility. > > > Fast resolution switching (less shutter lag) > > FCam is built on top of V4L2, which doesn't handle rapidly varying > > resolutions. When a Shot with a different resolution to the previous > > one comes down the pipeline, FCam currently flushes the entire V4L2 > > pipeline, shuts down and restarts the whole camera subsystem, then > > starts streaming at the new resolution. This takes a long time (nearly > > a second), and is the cause of the horrible shutter lag on the N900. A > > brave kernel hacker may be able to reduce this time by fiddling with > > the FCam ISP kernel modules and the guts of the FCam library source > > (primarily Daemon.cpp). > > Anyone who solves this one will have our undying gratitude. An ideal > > solution would be able to insert a 5MP capture into a stream of > > 640x480 frames running at 30fps, without skipping more than the frame > > time of the 5MP capture. That is, the viewfinder would effectively > > stay live while taking a photograph. > > > > ) > > > > Any other application I should look at? Thanks, -- Regards, Laurent Pinchart
[toc] | [next] | [standalone]
| From | Pavel Machek <pavel@ucw.cz> |
|---|---|
| Date | 2016-06-22 14:10 +0200 |
| Subject | Re: camera application for testing (was Re: v4l subdevs without big device) |
| Message-ID | <rMP8K-3bX-53@gated-at.bofh.it> |
| In reply to | #1428269 |
Hi!
> > I think libv4l itself has algorithms to control at least some of these. It
> > relies on the image data so the CPU time consumption will be high.
> >
> > AFAIR Laurent has also worked on implementing some algorithms that use the
> > histogram and some of the statistics. Add him to cc list.
>
> http://git.ideasonboard.org/omap3-isp-live.git
>
> That's outdated and might not run or compile anymore. The code is
> more of a
Lets see, it compiles with this hack:
index 6f3ffbe..935f41d 100644
--- a/isp/v4l2.c
+++ b/isp/v4l2.c
@@ -292,7 +292,7 @@ struct v4l2_device *v4l2_open(const char *devname)
* driver (>= v3.19) will set both CAPTURE and OUTPUT in the
* capabilities field.
*/
- capabilities = cap.device_caps ? : cap.capabilities;
+ capabilities = /* cap.device_caps ? : */ cap.capabilities;
if (capabilities & V4L2_CAP_VIDEO_CAPTURE)
dev->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
I can try to run it, but I guess I'll need kernel with camera support.
pavel@n900:/my/omap3-isp-live$ LD_LIBRARY_PATH=isp ./snapshot
media_open: Can't open media device /dev/media0
error: unable to open media device /dev/media0
Segmentation fault (core dumped)
I tried again on kernel with camera:
pavel@n900:/my/omap3-isp-live$ LD_LIBRARY_PATH=isp ./snapshot
error: unable to locate sensor.
Segmentation fault (core dumped)
pavel@n900:/my/omap3-isp-live$
Here's the fix for coredump:
diff --git a/isp/subdev.c b/isp/subdev.c
index 9b36234..c74514e 100644
--- a/isp/subdev.c
+++ b/isp/subdev.c
@@ -75,6 +75,8 @@ int v4l2_subdev_open(struct media_entity *entity)
void v4l2_subdev_close(struct media_entity *entity)
{
+ if (!entity)
+ return;
if (entity->fd == -1)
return;
Let me investigate some more.
> proof of concept implementation, but it could be used as a starting point.
> With an infinite amount of free time I'd love to work on an open-source
> project for computational cameras, integrating it with libv4l.
For the record, I pushed my code to
https://gitlab.com/pavelm/fcam-dev
Best regards,
Pavel
--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web