Re: soc-camera s_fmt question?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tuesday, January 18, 2011 03:30:09 Qing Xu wrote:
> Hi,
> 
> Thanks for your answer! So, we will be waiting and keeping sync with latest soc-camera + videobuf2 framework.

Erm, just to avoid any confusion: I am *not* going to convert soc-camera
to videobuf2. I just mentioned it because if someone does, then that should
fix your problems with REQBUFS(0) (and probably STREAMON/OFF problems as well).

I think soc-camera will benefit a lot from such a move so I hope someone
(Guennadi? You?) will take on this job.

Regards,

	Hans

> 
> -Qing
> 
> -----Original Message-----
> From: Hans Verkuil [mailto:hverkuil@xxxxxxxxx]
> Sent: 2011å1æ18æ 1:54
> To: Guennadi Liakhovetski
> Cc: Qing Xu; Laurent Pinchart; linux-media@xxxxxxxxxxxxxxx
> Subject: Re: soc-camera s_fmt question?
> 
> On Monday, January 17, 2011 18:43:06 Guennadi Liakhovetski wrote:
> > On Mon, 17 Jan 2011, Qing Xu wrote:
> >
> > > Hi,
> > >
> > > We are now nearly complete porting our camera driver to align with
> > > soc-camera framework, however, we encounter a problem when it works with
> > > our application during switch format from preview to still capture,
> > > application's main calling sequence is as follow:
> > > 1) s_fmt /* preview @ YUV, VGA */
> > > 2) request buffer (buffer count = 6)
> > > 2) queue buffer
> > > 3) stream on
> > > 4) q-buf, dq-buf...
> > > 5) stream off
> > >
> > > 6) s_fmt /* still capture @ jpeg, 2592x1944*/
> > > 7) request buffer (buffer count = 3)
> > > 8) same as 3)->5)...
> > >
> > > The point is in soc_camera_s_fmt_vid_cap() {
> > >         if (icd->vb_vidq.bufs[0]) {
> > >                 dev_err(&icd->dev, "S_FMT denied: queue initialised\n");
> > >                 ret = -EBUSY;
> > >                 goto unlock;
> > >         }
> > > }
> > > We didn't find vb_vidq.bufs[0] be free, (it is freed in
> > > videobuf_mmap_free(), and in __videobuf_mmap_setup, but no one calls
> > > videobuf_mmap_free(), and in __videobuf_mmap_setup it is freed at first
> > > and then allocated sequentially), so we always fail at calling s_fmt.
> > > My idea is to implement soc_camera_reqbufs(buffer count = 0), to provide
> > > application opportunity to free this buffer node, refer to v4l2 spec,
> > > http://linuxtv.org/downloads/v4l-dvb-apis/vidioc-reqbufs.html
> > > "A count value of zero frees all buffers, after aborting or finishing
> > > any DMA in progress, an implicit VIDIOC_STREAMOFF."
> >
> > Currently buffers are freed in soc-camera upon close(). Yes, I know about
> > that clause in the API spec, and I know, that it is unimplemented in
> > soc-camera. Do you have a reason to prefer that over close()ing and
> > re-open()ing the device?
> 
> I think it would be a good idea to look into converting soc_camera to the
> new videobuf2 framework that was just merged. It has much better semantics
> when it comes to allocating and freeing queues. You can actually understand
> it, something that you can't say for the old videobuf. And videobuf2 does
> the right thing with REQBUFS(0) as well.
> 
> Regards,
> 
>         Hans
> 
> >
> > Thanks
> > Guennadi
> >
> > >
> > > What do you think?
> > >
> > > Any ideas will be appreciated!
> > > Thanks!
> > > Qing Xu
> > >
> > > Email: qingx@xxxxxxxxxxx
> > > Application Processor Systems Engineering,
> > > Marvell Technology Group Ltd.
> > >
> >
> > ---
> > Guennadi Liakhovetski, Ph.D.
> > Freelance Open-Source Software Developer
> > http://www.open-technology.de/
> > --
> > To unsubscribe from this list: send the line "unsubscribe linux-media" in
> > the body of a message to majordomo@xxxxxxxxxxxxxxx
> > More majordomo info at  http://vger.kernel.org/majordomo-info.html
> >
> 
> --
> Hans Verkuil - video4linux developer - sponsored by Cisco
> ïçï.nïïïïï+%ïïéèïwïï.nïïäï{çgïïîïïnïrâïïïïïãî&ïïåzçïïïïzfïïïïïïïïïïïïïèz_çï:+vïî)æï
> 
> 

-- 
Hans Verkuil - video4linux developer - sponsored by Cisco
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux