From: Sakari Ailus <sakari.ailus@iki.fi>
To: Sylwester Nawrocki <sylvester.nawrocki@gmail.com>
Cc: Nicolas THERY <nicolas.thery@st.com>,
"linux-media@vger.kernel.org" <linux-media@vger.kernel.org>,
Jean-Marc VOLLE <jean-marc.volle@st.com>,
Pierre-yves TALOUD <pierre-yves.taloud@st.com>,
Willy POISSON <willy.poisson@st.com>,
Benjamin GAIGNARD <benjamin.gaignard@st.com>,
Vincent ABRIOU <vincent.abriou@st.com>,
Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Subject: Re: how to crop/scale in mono-subdev camera sensor driver?
Date: Sat, 15 Sep 2012 15:21:17 +0300 [thread overview]
Message-ID: <505472BD.8090405@iki.fi> (raw)
In-Reply-To: <50539B6C.2060400@gmail.com>
Hi Sylwester and Nicolas,
Sylwester Nawrocki wrote:
> Hi,
>
> On 09/14/2012 05:00 PM, Nicolas THERY wrote:
>> Hello,
>>
>> I'm studying how to support cropping and scaling (binning, skipping, digital
>> scaling if any) for different models for camera sensor drivers. There seems to
>> be (at least) two kinds of sensor drivers:
>>
>> 1) The smiapp driver has 2 or 3 subdevs: pixel array -> binning (-> scaling).
>> It gives clients full control over the various ways of cropping and scaling
>> thanks to the selection API.
>>
>> 2) The mt9p031 driver (and maybe others) has a single subdev. Clients use the
>> obsolete SUBDEV_S_CROP ioctl for selecting a region of interest in the pixel
>> array and SUBDEV_S_FMT for setting the source pad mbus size. If the mbus size
>> differs from the cropping rectangle size, scaling is enabled and the driver
>> decides internally how to combine skipping and binning to achieve the requested
>> scaling factors.
>>
>> As SUBDEV_S_CROP is obsolete, I wonder whether it is okay to support cropping
>> and scaling in a mono-subdev sensor driver by (a) setting the cropping
>> rectangle with SUBDEV_S_SELECTION on the source pad, and (b) setting the
>> scaling factors via the source pad mbus size as in the mt9p031 driver?
>
> Cc: Sakari, Laurent
>
> AFAICT in a single subdev with one pad configuration your steps as above
> are valid, i.e. crop rectangle can be set with
> VIDIOC_SUBDEV_S_SELECTION(V4L2_SEL_TGT_CROP) and the sensor's output
> resolution with VIDIOC_SUBDEV_S_FMT.
>
> I guess documentation [1] wasn't clear enough about that ?
>
> The subdev crop ioctls are deprecated in favour of the selection API, so
> now VIDIOC_SUBDEV_G/S_SELECTION ioctls and corresponding subdev ops needs
> to be used anywhere you would have used SUBDEV_G/S_CROP before.
>
> This reminds me there are still a few drivers that need to be converted
> to use set/get_selection subdev pad level ops, rather than set/get_crop.
>
> [1] http://linuxtv.org/downloads/v4l-dvb-apis/subdev.html
After the selection IOCTLs were implemented for the subdev API, the
subdev API then allowed explicitly configuring cropping after scaling
inside a single subdev, among other improvements.
Before the introduction of the selection extensions, the subdev API has
never allowed explicitly performing scaling and cropping using a single
subdev with only a single source pad but still some sensor drivers
implement it this way. It may well be that it is technically possible to
use the source pad media bus format to configure scaling after cropping
but that's against what's currently defined in the spec, for the reason
that we wanted to define explicitly which selection targets are used for
configuring cropping and scaling and in which order that configuration
is expected to be done, in order to be able to configure the subdev
without having to know anything else about it except that it implements
the selection API. The scaler in the ISP can now be configured using
exactly the same API as can the scaler in the sensor.
If you wish to expose the scaling configuration of the sensor using the
V4L2 subdev interface, then I suggest doing what the SMIA++ driver does:
multiple subdevs. See "Order of configuration and format propagation"
behind the above URL.
Kind regards,
--
Sakari Ailus
sakari.ailus@iki.fi
prev parent reply other threads:[~2012-09-15 12:20 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-08-23 9:51 [PATCH RFC 0/4] V4L2: Vendor specific media bus formats/ frame size control Sylwester Nawrocki
2012-08-23 9:51 ` [PATCH RFC 1/4] V4L: Add V4L2_CID_FRAMESIZE image source class control Sylwester Nawrocki
2012-08-23 12:13 ` Sakari Ailus
2012-08-23 14:32 ` Sylwester Nawrocki
2012-08-23 18:24 ` Sakari Ailus
2012-08-23 22:41 ` Laurent Pinchart
2012-08-24 8:15 ` Sylwester Nawrocki
2012-08-24 22:51 ` Sakari Ailus
2012-08-26 19:22 ` Sylwester Nawrocki
2012-08-27 19:28 ` Sakari Ailus
2012-09-11 19:21 ` Sylwester Nawrocki
2012-09-12 6:48 ` Hans Verkuil
2012-08-23 9:51 ` [PATCH RFC 2/4] V4L: Add V4L2_MBUS_FMT_S5C_UYVY_JPEG_1X8 media bus format Sylwester Nawrocki
2012-08-23 9:51 ` [PATCH RFC 3/4] V4L: Add V4L2_PIX_FMT_S5C_UYVY_JPG fourcc definition Sylwester Nawrocki
2012-08-23 9:51 ` [PATCH RFC 4/4] s5p-fimc: Add support for V4L2_PIX_FMT_S5C_UYVY_JPG fourcc Sylwester Nawrocki
2012-08-27 15:48 ` [PATCH RFC 0/4] V4L2: Vendor specific media bus formats/ frame size control Nicolas THERY
2012-08-29 18:41 ` sakari.ailus
2012-08-30 8:03 ` Nicolas THERY
2012-08-29 21:51 ` Sylwester Nawrocki
2012-08-30 8:06 ` Nicolas THERY
2012-09-14 15:00 ` how to crop/scale in mono-subdev camera sensor driver? Nicolas THERY
2012-09-14 21:02 ` Sylwester Nawrocki
2012-09-15 12:21 ` Sakari Ailus [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=505472BD.8090405@iki.fi \
--to=sakari.ailus@iki.fi \
--cc=benjamin.gaignard@st.com \
--cc=jean-marc.volle@st.com \
--cc=laurent.pinchart@ideasonboard.com \
--cc=linux-media@vger.kernel.org \
--cc=nicolas.thery@st.com \
--cc=pierre-yves.taloud@st.com \
--cc=sylvester.nawrocki@gmail.com \
--cc=vincent.abriou@st.com \
--cc=willy.poisson@st.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).