On Sun, 29 Mar 2009, Hans Verkuil wrote:
> On Sunday 29 March 2009 12:21:58 Trent Piepho wrote:
> > On Sun, 29 Mar 2009, Hans Verkuil wrote:
> > > On Sunday 29 March 2009 10:50:02 Patch from Trent Piepho wrote:
> > > > From: Trent Piepho  <xy...@speakeasy.org>
> > > > v4l2-ioctl:  Check format for S_PARM and G_PARM
> > > >
> > > >
> > > > Return EINVAL if VIDIOC_S/G_PARM is called for a buffer type that the
> > > > driver doesn't define a ->vidioc_try_fmt_XXX() method for.  Several
> > > > other ioctls, like QUERYBUF, QBUF, and DQBUF, etc.  do this too.  It
> > > > saves each driver from having to check if the buffer type is one that
> > > > it supports.
> > >
> > > Hi Trent,
> > >
> > > I wonder whether this change is correct. Looking at the spec I see that
> > > g/s_parm only supports VIDEO_CAPTURE, VIDEO_OUTPUT and PRIVATE or up.
> > >
> > > So what should happen if the type is VIDEO_OVERLAY? I think the
> > > g/s_parm implementation in v4l2-ioctl.c should first exclude the
> > > unsupported types before calling check_fmt.
> >
> > This change doesn't actually enable g/s_parm for VIDEO_OVERLAY (or
> > VBI_CAPTURE).  It's the later bttv and saa7146 changes that do that.  I
> > considered this when I made those changes, as mentioned in those patch
> > descriptions, but decided it was better to allow it.
> >
> > In those drivers g_parm only returns the frame rate, which seems just as
> > valid for VIDEO_OVERLAY as it does for VIDEO_CAPTURE.  Why should the
> > driver not be allowed to return the frame rate for video overlay?  Why
> > should setting the overlay frame rate not be allowed?  Those seems like
> > perfectly reasonable operations to me.
>
> Not to me. VIDEO_OVERLAY just defines where the overlay is. But the actual
> framerate is entirely dependent on the VIDEO_CAPTURE framerate. Just keep
> to the spec for now. If a new driver appears that needs it then we can
> always change it.

How does overlay depend on video capture in any way?  It's perfectly
reasonable for a driver to support _only_ overlay and not video capture.
The zr36067 chip is only designed to support uncompressed data for video
overlay for example.  Allowing uncompressed video capture is a hack that
the driver didn't have at one point.

> > The spec doesn't explicitly say that only VIDEO_CAPTURE, VIDEO_OUTPUT and
> > PRIVATE are supported.  It says the "capture" field of the parm union is
> > used when type is VIDEO_CAPTURE, the "output" field is used for
> > VIDEO_OUTPUT, and "raw_data" is used for PRIVATE or higher.  You're right
> > in that it doesn't say what you're supposed to use for VIDEO_OVERLAY,
> > VBI_CAPTURE or any other buffer types.  But it doesn't say they're not
> > allowed either.  IMHO, it's likely the spec authors' intent wasn't to not
> > allow g_parm with VIDEO_OVERLAY, but rather that they just didn't think
> > of that case.
>
> No, I agree with the spec in that I see no use case for it. Should there be
> one, then I'd like to see that in an actual driver implementation and in
> that case the spec should be adjusted as well.

How about getting the frame rate of video overlay?  Works with bttv.

> In addition, g/s_parm is only used in combination with webcams/sensors for
> which overlays and vbi are irrelevant.

There are several drivers for non-webcams, like bttv, saa7134, and saa7146,
that support g_parm.  Why is returning the frame rate for video capture not
valid?  Why does the number of buffers used for read() mode only make
sense for webcams?

> > Thinking about it now, I think what makes the most sense is to use
> > "capture" for VIDEO_OVERLAY, VBI_CAPTURE, and SLICED_VBI_CAPTURE.  And
> > use "output" for VBI_OUTPUT, SLICED_VBI_OUTPUT and VIDEO_OUTPUT_OVERLAY.
> >
> > > I also wonder whether check_fmt shouldn't check for the presence of the
> > > s_fmt callbacks instead of try_fmt since try_fmt is an optional ioctl.
> >
> > I noticed that too.  saa7146 doesn't have a try_fmt call for vbi_capture
> > but is apparently supposed to support it.  I sent a message about that
> > earlier.
>
> I saw that. So why not check for s_fmt instead of try_fmt? That would solve
> this potential problem.

Because that's clearly a change that belongs in another patch.
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to