Re: [PATCH] Documentation update for New V4L2 ioctls for OMAP

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

 



On Tuesday 03 February 2009, Hans Verkuil wrote:
> On Tuesday 03 February 2009 07:30:14 Hardik Shah wrote:
> > 1.  Added documentation for VIDIOC_COLOR_S_SPACE_CONV and
> > VIDIOC_G_COLOR_SPACE_CONV
> > 2.  Added documentation for new CID V4L2_CID_ROTATION and
> > V4L2_CID_BG_COLOR
>
> See comments below.
>
> > Signed-off-by: Brijesh Jadav <brijesh.j@xxxxxx>
> > Signed-off-by: Hari Nagalla <hnagalla@xxxxxx>
> > Signed-off-by: Hardik Shah <hardik.shah@xxxxxx>
> > Signed-off-by: Vaibhav Hiremath <hvaibhav@xxxxxx>
> > ---
> >  Makefile                       |    4 +
> >  controls.sgml                  |   12 +++-
> >  v4l2.sgml                      |    1 +
> >  vidioc-g-color-space-conv.sgml |  182
> > ++++++++++++++++++++++++++++++++++++++++ 4 files changed, 198
> > insertions(+), 1 deletions(-)
> >  create mode 100644 vidioc-g-color-space-conv.sgml
> >
> > diff --git a/Makefile b/Makefile
> > index 9a13c91..b76b4a7 100644
> > --- a/Makefile
> > +++ b/Makefile
> > @@ -67,6 +67,7 @@ SGMLS = \
> >  	vidioc-g-audio.sgml \
> >  	vidioc-g-audioout.sgml \
> >  	vidioc-dbg-g-chip-ident.sgml \
> > +	vidioc-g-color-space-conv.sgml \
> >  	vidioc-g-crop.sgml \
> >  	vidioc-g-ctrl.sgml \
> >  	vidioc-g-enc-index.sgml \
> > @@ -156,6 +157,7 @@ IOCTLS = \
> >  	VIDIOC_ENUM_FRAMESIZES \
> >  	VIDIOC_G_AUDIO \
> >  	VIDIOC_G_AUDOUT \
> > +	VIDIOC_G_COLOR_SPACE_CONV \
> >  	VIDIOC_G_CROP \
> >  	VIDIOC_G_CTRL \
> >  	VIDIOC_G_ENC_INDEX \
> > @@ -186,6 +188,7 @@ IOCTLS = \
> >  	VIDIOC_STREAMON \
> >  	VIDIOC_S_AUDIO \
> >  	VIDIOC_S_AUDOUT \
> > +	VIDIOC_S_COLOR_SPACE_CONV \
> >  	VIDIOC_S_CROP \
> >  	VIDIOC_S_CTRL \
> >  	VIDIOC_S_EXT_CTRLS \
> > @@ -249,6 +252,7 @@ STRUCTS = \
> >  	v4l2_capability \
> >  	v4l2_captureparm \
> >  	v4l2_clip \
> > +	v4l2_color_space_conv \
> >  	v4l2_control \
> >  	v4l2_crop \
> >  	v4l2_cropcap \
> > diff --git a/controls.sgml b/controls.sgml
> > index 0df57dc..c9ef5e8 100644
> > --- a/controls.sgml
> > +++ b/controls.sgml
> > @@ -272,10 +272,20 @@ minimum value disables backlight
> > compensation.</entry> <entry>Enable the color killer (&ie; force a black
> > &amp; white image in case of a weak video signal).</entry> </row>
> >  	  <row>
> > +	    <entry><constant>V4L2_CID_ROTATION</constant></entry>
> > +	    <entry>integer</entry>
> > +	    <entry>Rotates the image by specified angle.</entry>
>
> Please specify the units. How does this affect other ioctls like
> VIDIOC_S_FMT when it comes to width/height settings? Depending on how this
> works the VIDIOC_S_FMT documentation might have to refer back to this
> control as well.

You should also specify the acceptable range ([0, 360[ and [-180, +180[ come 
to mind).

How would that control interact with HFLIP and VFLIP ? A 180° rotation is 
equivalent to setting both HFLIP and VFLIP.

> > +	  </row>
> > +	  <row>
> > +	    <entry><constant>V4L2_CID_BG_COLOR</constant></entry>
> > +	    <entry>integer</entry>
> > +	    <entry>Sets the background color on the current output
> > device</entry> +	  </row>
>
> How is the color specified? RGB? YUV? See the V4L2_CID_MPEG_VIDEO_MUTE_YUV
> control description on how to specify the color format exactly.
>
> > +	  <row>
> >  	    <entry><constant>V4L2_CID_LASTP1</constant></entry>
> >  	    <entry></entry>
> >  	    <entry>End of the predefined control IDs (currently
> > -<constant>V4L2_CID_COLOR_KILLER</constant> + 1).</entry>
> > +<constant>V4L2_CID_BG_COLOR</constant> + 1).</entry>
> >  	  </row>
> >  	  <row>
> >  	    <entry><constant>V4L2_CID_PRIVATE_BASE</constant></entry>
> > diff --git a/v4l2.sgml b/v4l2.sgml
> > index 9f43b6d..f9f0986 100644
> > --- a/v4l2.sgml
> > +++ b/v4l2.sgml
> > @@ -435,6 +435,7 @@ available here: <ulink
> > url="http://linuxtv.org/downloads/video4linux/API/V4L2_AP &sub-querystd;
> >      &sub-reqbufs;
> >      &sub-s-hw-freq-seek;
> > +    &sub-g-color-space-conv;
> >      &sub-streamon;
> >      <!-- End of ioctls. -->
> >      &sub-mmap;
> > diff --git a/vidioc-g-color-space-conv.sgml
> > b/vidioc-g-color-space-conv.sgml new file mode 100644
> > index 0000000..a24ae4c
> > --- /dev/null
> > +++ b/vidioc-g-color-space-conv.sgml
> > @@ -0,0 +1,182 @@
> > +<refentry id="vidioc-g-color-space-conv">
> > +  <refmeta>
> > +    <refentrytitle>ioctl VIDIOC_S_COLOR_SPACE_CONV,
> > VIDIOC_G_COLOR_SPACE_CONV</refentrytitle> +    &manvol;
> > +  </refmeta>
> > +
> > +  <refnamediv>
> > +    <refname>VIDIOC_S_COLOR_SPACE_CONV</refname>
> > +    <refname>VIDIOC_G_COLOR_SPACE_CONV</refname>
> > +    <refpurpose>Get or Set the color space conversion matrix
> > </refpurpose> +  </refnamediv>
> > +
> > +  <refsynopsisdiv>
> > +    <funcsynopsis>
> > +      <funcprototype>
> > +	<funcdef>int <function>ioctl</function></funcdef>
> > +	<paramdef>int <parameter>fd</parameter></paramdef>
> > +	<paramdef>int <parameter>request</parameter></paramdef>
> > +	<paramdef>struct v4l2_color_space_conv
> > +*<parameter>argp</parameter></paramdef>
> > +      </funcprototype>
> > +    </funcsynopsis>
> > +  </refsynopsisdiv>
> > +
> > +  <refsect1>
> > +    <title>Arguments</title>
> > +
> > +    <variablelist>
> > +      <varlistentry>
> > +	<term><parameter>fd</parameter></term>
> > +	<listitem>
> > +	  <para>&fd;</para>
> > +	</listitem>
> > +      </varlistentry>
> > +      <varlistentry>
> > +	<term><parameter>request</parameter></term>
> > +	<listitem>
> > +	  <para>VIDIOC_G_COLOR_SPACE_CONV, VIDIOC_S_COLOR_SPACE_CONV</para>
> > +	</listitem>
> > +      </varlistentry>
> > +      <varlistentry>
> > +	<term><parameter>argp</parameter></term>
> > +	<listitem>
> > +	  <para></para>
> > +	</listitem>
> > +      </varlistentry>
> > +    </variablelist>
> > +  </refsect1>
> > +
> > +  <refsect1>
> > +    <title>Description</title>
> > +
> > +    <para>This ioctl is used to set the color space conversion matrix.
> > +Few Video hardware has a programmable color space conversion matrix
> > which +converts the data from one color space to other color space
> > +typically from YUV or UYVY to RGB and vice versa.
>
> 'UYVY' is not a colorspace, it's a pixelformat. You probably want to say
> something like: 'SMPTE170M or sRGB'.
>
> > Normally hardware has
> > +default value for the conversion matrix but application may need to tune
> > that. +    </para>
> > +	<para>Typical color conversion matrix looks like</para>
> > +
> > +	<formalpara>
> > +	    <title>Typical color space conversion matrix equation.</title>
> > +		<para>
> > +		<informaltable frame="none">
> > +		<tgroup cols="15" align="center">
> > +		  <colspec align="left" colwidth="1*">
> > +		  <tbody valign="top">
> > +		    <row>
> > +		      <entry>|</entry>
> > +		      <entry>O<subscript>0</subscript></entry>
> > +		      <entry>|</entry>
> > +		      <entry></entry>
> > +			  <entry></entry>
> > +			  <entry></entry>
> > +		      <entry>|</entry>
> > +			  <entry>C<subscript>0,0</subscript></entry>
> > +		      <entry>C<subscript>0,1</subscript></entry>
> > +		      <entry>C<subscript>0,2</subscript></entry>
> > +		      <entry>|</entry>
> > +		      <entry></entry>
> > +			  <entry>|</entry>
> > +		      <entry>Of<subscript>0</subscript></entry>
> > +		      <entry>|</entry>
> > +		    </row>
> > +		    <row>
> > +		      <entry>|</entry>
> > +		      <entry>O<subscript>1</subscript></entry>
> > +		      <entry>|</entry>
> > +		      <entry></entry>
> > +			  <entry>=</entry>
> > +			  <entry>K</entry>
> > +		      <entry>|</entry>
> > +			  <entry>C<subscript>1,0</subscript></entry>
> > +		      <entry>C<subscript>1,1</subscript></entry>
> > +		      <entry>C<subscript>1,2</subscript></entry>
> > +		      <entry>|</entry>
> > +		      <entry>*</entry>
> > +			  <entry>|</entry>
> > +		      <entry>Of<subscript>1</subscript></entry>
> > +		      <entry>|</entry>
> > +		    </row>
> > +			 <row>
> > +		      <entry>|</entry>
> > +		      <entry>O<subscript>2</subscript></entry>
> > +		      <entry>|</entry>
> > +		      <entry></entry>
> > +			  <entry></entry>
> > +			  <entry></entry>
> > +		      <entry>|</entry>
> > +			  <entry>C<subscript>2,0</subscript></entry>
> > +		      <entry>C<subscript>2,1</subscript></entry>
> > +		      <entry>C<subscript>2,2</subscript></entry>
> > +		      <entry>|</entry>
> > +		      <entry></entry>
> > +			  <entry>|</entry>
> > +		      <entry>Of<subscript>2</subscript></entry>
> > +		      <entry>|</entry>
> > +		    </row>
> > +		  </tbody>
> > +		</tgroup>
> > +		</informaltable>
> > +		</para>
> > +	  </formalpara>
> > +
> > +	<para>Where Ci,j are the coefficients, K is the constant factor and
> > +Ofi is the  offsets.  All the hardware may not allow modifying
> > +all of these parameters.</para>
> > +
> > +	<para>To set values for the color conversion matrix, applications call
> > +<constant>VIDIOC_S_COLOR_SPACE_CONV</constant> with the pointer to a
> > +<structname>v4l2_color_space_conv</structname> structure.  Driver
> > +checks and updates the parameters in the hardware. To get the values
> > +applications call <constant>VIDIOC_G_COLOR_SPACE_CONV</constant> with a
> > pointer +to <structname>v4l2_color_space_conv</structname> and driver
> > will fill the +structure with appropriate values.</para>
>
> What is the precision of the coefficients? (e.g. 8, 16, 32 bits?)
>
> How do you know if not all parameters can be modified? Is this a problem at
> all or can we assume that using this ioctl means you know what the hardware
> is anyway?
>
> How does this relate to the colorspace field in v4l2_pix_format and
> VIDIOC_S_FMT?
>
> > +
> > +    <table pgwide="1" frame="none" id="v4l2-color-space-conv">
> > +      <title>struct
> > <structname>v4l2_color_space_conv</structname></title> +      <tgroup
> > cols="3">
> > +	&cs-str;
> > +	<tbody valign="top">
> > +	  <row>
> > +	    <entry>__s32</entry>
> > +	    <entry><structfield>coefficients</structfield></entry>
> > +	    <entry>Conversion Matrix coefficeints. It is a array of
> > 3X3.</entry> +	  </row>
> > +	  <row>
> > +	    <entry>__s32</entry>
> > +	    <entry><structfield>const_factor</structfield></entry>
> > +	    <entry>Constant to be multiplied with the conversion
> > matrix.</entry> +	  </row>
> > +	  <row>
> > +	    <entry>__s32</entry>
> > +	    <entry><structfield>offsets</structfield></entry>
> > +	    <entry>Offset for the each entry in color conversion
> > matrix.</entry> +	  </row>
> > +	</tbody>
> > +      </tgroup>
> > +    </table>
> > +  </refsect1>
> > +
> > +  <refsect1>
> > +    &return-value;
> > +
> > +    <variablelist>
> > +      <varlistentry>
> > +	<term><errorcode>EINVAL</errorcode></term>
> > +	<listitem>
> > +	  <para>The hardware doesn't supports color space conversion.</para>
> > +	</listitem>
> > +      </varlistentry>
> > +    </variablelist>
> > +  </refsect1>
> > +</refentry>
> > +
> > +<!--
> > +Local Variables:
> > +mode: sgml
> > +sgml-parent-document: "v4l2.sgml"
> > +indent-tabs-mode: nil
> > +End:
> > +-->
> > --
> > 1.5.6
>
> Regards,
>
> 	Hans


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