Re: [PATCH] omap3isp: implement ENUM_FMT

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

 



Hi Sakari,

On 03/24/2011 09:04 AM, Sakari Ailus wrote:
> Michael Jones wrote:
>> Hi Sakari,
> 
> Hi Michael,
> 
>> On 03/23/2011 10:52 AM, Sakari Ailus wrote:
>>> Hi Michael,
>>>
>>> Thanks for the patch.
>>>
>>> Michael Jones wrote:
>>>> From dccbd4a0a717ee72a3271075b1e3456a9c67ca0e Mon Sep 17 00:00:00 2001
>>>> From: Michael Jones <michael.jones@xxxxxxxxxxxxxxxx>
>>>> Date: Tue, 22 Mar 2011 11:47:22 +0100
>>>> Subject: [PATCH] omap3isp: implement ENUM_FMT
>>>>
>>>> Whatever format is currently being delivered will be declared as the only
>>>> possible format
>>>>
>>>> Signed-off-by: Michael Jones <michael.jones@xxxxxxxxxxxxxxxx>
>>>> ---
>>>>
>>>> Some V4L2 apps require ENUM_FMT, which is a mandatory ioctl for V4L2.
>>>> This patch doesn't enumerate all of the formats which could possibly be
>>>> set (as is intended by ENUM_FMT), but at least it reports the one that
>>>> is currently set.
>>>
>>> What would be the purpose of ENUM_FMT in this case? It provides no
>>> additional information to user space, and the information it provides is
>>> in fact incomplete. Using other formats is possible, but that requires
>>> changes to the format configuration on links.
>>
>> The only purpose of it was to provide minimum functionality for apps to
>> be able to fetch frames from the ISP after setting up the ISP pipeline
>> with media-ctl.  By "apps", I mean Gstreamer in my case, which Loïc had
>> also recently asked Laurent about.
> 
> Are you familiar with the mcsrc?

No, I was not familiar with that, thank you.  That looks very useful,
I'll have to look into it.

> 
> <URL:http://meego.gitorious.org/maemo-multimedia/gst-nokia-videosrc>
> 
> I think it's
> 
> Also, I think v4lsrc could be fixed to cope with lack of VIDIOC_ENUM_FMT.

Yes, it could be.  But ENUM_FMT is allowed and I think it's reasonable
for a V4L2 app to require the use of ENUM_FMT.

> 
> Besides what Laurent already mentioned, how the applications are
> expected to select a video node from the 7 (or 8) that the ISP has is
> not resolved yet. The requested pixelformat depends on the video node in
> this case.
> 
>>> As the relevant format configuration is done on the subdevs and not on
>>> the video nodes, the format configuration on the video nodes is very
>>> limited and much affected by the state of the formats on the subdev pads
>>> (which I think is right). This is not limited to ENUM_FMT but all format
>>> related IOCTLs on the OMAP 3 ISP driver.
>>>
>>> My view is that should a generic application want to change (or
>>> enumerate) the format(s) on a video node, the application would need to
>>> be using libv4l for that.
>>>
>>> A compatibility layer implemented in libv4l (plugin, not the main
>>> library) needs to configure the links in the first place, so
>>> implementing ENUM_FMT in the plugin would not be a big deal. It could
>>> even provide useful information. The possible results of the ENUM_FMT
>>> would also depend on what kind of pipeline configuration does the plugin
>>> support, though.
>>
>> BTW, my GStreamer is using libv4l, although it looked like it's also
>> possible to configure GStreamer to use ioctls directly.  I can agree
>> that it would be nice to implement ENUM_FMT and the like in a
>> compatibility layer in libv4l.  That would be in the true spirit of
>> ENUM_FMT, where the app could actually see different formats it can set.
>>
>> But is there any work being done on such a compatibility layer?
> 
> Yes. Yordan is working on that.
> 
> There's a plugin interface patch for libv4l and a MC-aware plugin that
> uses the interface.
> 
> <URL:http://www.spinics.net/lists/linux-media/msg28925.html>
> 
> I think so far only the plugin interface patch is on the list.
> 
>> Is there a policy decision that in the future, apps will be required to
>> use libv4l to get images from the ISP?  Are we not intending to support
>> using e.g. media-ctl + some v4l2 app, as I'm currently doing during
>> development?
> 
> If we speak about specific applications that are aware of the MC and the
> OMAP 3 ISP itself, I'd guess those will continue to use the interfaces
> provided by the driver directly.
> 
> But generic applications would likely be better off using libv4l. This
> way they could use whatever there is in the libv4l plugin for the
> platform (automatic exposure and white balance, for example).
> 
> I don't think generic applications _shouldn't_ be allowed to do without
> libv4l. It's just that the functionality provided by the driver in this
> case will be limited to a default pipeline and fixed format (as was your
> patch for ENUM_FMT).
> 
>> In the meantime, I will continue using this patch locally to enable
>> getting a live image with Gstreamer, and it can at least serve as a help
>> to Loïc if he's trying to do the same.
> 
> Are there other applications that really need ENUM_FMT?

I don't know of others, but surely the same would apply to them as to
GStreamer- you _could_ change them so they don't need it.  But they
conform to the V4L2 spec as is.

> 
> The spec says of ENUM_FMT that:
> 
> "To enumerate image formats applications initialize the type and index
> field of struct v4l2_fmtdesc and call the VIDIOC_ENUM_FMT ioctl with a
> pointer to this structure. Drivers fill the rest of the structure or
> return an EINVAL error code. All formats are enumerable by beginning at
> index zero and incrementing by one until EINVAL is returned."
> 
> As Laurent pointed out, I also agree that the patch itself is correct
> but the information provided to the user space is correct but
> incomplete. Coming up with a list of formats on a video node in the ISP
> requires information from different parts of the MC graph.

I realize that.

> 
> I somehow feel it shouldn't be the responsibility of the driver to
> provide this since using those formats requires different pad formats.
> 
> Various parts of the driver would need to be notified when links change
> somewhere else. Also, if a video node isn't connected to anything
> through an enabled link or the entity it's connected to, isn't, what
> should ENUM_FMT provide then? An empty list?

Good quesion, I guess -EINVAL.  At that point you're talking about a V4L
device which can't provide data anyway.

-Michael

MATRIX VISION GmbH, Talstrasse 16, DE-71570 Oppenweiler
Registergericht: Amtsgericht Stuttgart, HRB 271090
Geschaeftsfuehrer: Gerhard Thullner, Werner Armingeon, Uwe Furtner
--
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