Re: v4l2 api: supported resolution negotiation

2015-10-12 Thread Hans Verkuil
On 10/04/2015 08:49 PM, Sakari Ailus wrote:
> On Sun, Oct 04, 2015 at 12:23:08PM +0300, Matwey V. Kornilov wrote:
>> Hello,
>>
>> I learned from V2L2 API how to detect all supported formats using
>> VIDIOC_ENUM_FMT.
>> When I perform VIDIOC_S_FMT I don't know how to fill fmt.pix.width and
>> fmt.pix.height, since I know only format.
>> How should I negotiate device resolution? Could you point me?
> 
> VIDIOC_ENUM_FRAMESIZES may give you hints, but it's optional. You can use
> values you prefer to try if drivers support them; I think the GStreamer
> v4lsrc tries very small and very large values. The driver will clamp them to
> a supported values which are passed to the application from the IOCTL.
> 
> http://hverkuil.home.xs4all.nl/spec/media.html#vidioc-enum-framesizes>
> 

You can also call G_FMT first, then change the pixelformat and call S_FMT.
This will only change the pixelformat and leave the resolution the same (unless
the driver has some restrictions for the new pixelformat, but that's unlikely).

Regards,

Hans
--
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


Re: v4l2 api: supported resolution negotiation

2015-10-04 Thread Nicolas Dufresne
Le dimanche 04 octobre 2015 à 21:49 +0300, Sakari Ailus a écrit :
> I think the GStreamer
> v4lsrc tries very small and very large values. The driver will clamp
> them to
> a supported values which are passed to the application from the
> IOCTL.

In GStreamer we try ENUM_FRAMESIZE, and when no supported, we fallback
to try_fmt() with 1x1 (driver will raise it to the minimum) and then
MAX,MAX (driver will lower it to the maximum). We assume that the
driver supports a range, as iterating over all possibilities takes too
much time.

Nicolas

signature.asc
Description: This is a digitally signed message part


Re: v4l2 api: supported resolution negotiation

2015-10-04 Thread Sakari Ailus
On Sun, Oct 04, 2015 at 12:23:08PM +0300, Matwey V. Kornilov wrote:
> Hello,
> 
> I learned from V2L2 API how to detect all supported formats using
> VIDIOC_ENUM_FMT.
> When I perform VIDIOC_S_FMT I don't know how to fill fmt.pix.width and
> fmt.pix.height, since I know only format.
> How should I negotiate device resolution? Could you point me?

VIDIOC_ENUM_FRAMESIZES may give you hints, but it's optional. You can use
values you prefer to try if drivers support them; I think the GStreamer
v4lsrc tries very small and very large values. The driver will clamp them to
a supported values which are passed to the application from the IOCTL.

http://hverkuil.home.xs4all.nl/spec/media.html#vidioc-enum-framesizes>

-- 
Regards,

Sakari Ailus
e-mail: sakari.ai...@iki.fi XMPP: sai...@retiisi.org.uk
--
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


v4l2 api: supported resolution negotiation

2015-10-04 Thread Matwey V. Kornilov
Hello,

I learned from V2L2 API how to detect all supported formats using
VIDIOC_ENUM_FMT.
When I perform VIDIOC_S_FMT I don't know how to fill fmt.pix.width and
fmt.pix.height, since I know only format.
How should I negotiate device resolution? Could you point me?

--
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