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