Re: [PATCH] New V4L2 ioctls for OMAP class of Devices

2009-01-27 Thread Hans Verkuil
On Tuesday 27 January 2009 05:43:25 Shah, Hardik wrote:
  -Original Message-
  From: Hans Verkuil [mailto:hverk...@xs4all.nl]
  Sent: Sunday, January 25, 2009 3:06 PM
  To: Shah, Hardik
  Cc: video4linux-l...@redhat.com; linux-media@vger.kernel.org
  Subject: Re: [PATCH] New V4L2 ioctls for OMAP class of Devices
 
  On Saturday 24 January 2009 18:03:51 Shah, Hardik wrote:
-Original Message-
From: Shah, Hardik
Sent: Wednesday, January 21, 2009 5:24 PM
To: video4linux-l...@redhat.com; linux-media@vger.kernel.org
Cc: Shah, Hardik; Jadav, Brijesh R; Nagalla, Hari; Hadli,
Manjunath; R, Sivaraj; Hiremath, Vaibhav
Subject: [PATCH] New V4L2 ioctls for OMAP class of Devices
   
1.  Control ID added for rotation.  Same as HFLIP.
2.  Control ID added for setting background color on
output device.
3.  New ioctl added for setting the color space conversion from
YUV to RGB.
   
Signed-off-by: Brijesh Jadav brijes...@ti.com
Signed-off-by: Hari Nagalla hnaga...@ti.com
Signed-off-by: Hardik Shah hardik.s...@ti.com
Signed-off-by: Manjunath Hadli m...@ti.com
Signed-off-by: R Sivaraj siva...@ti.com
Signed-off-by: Vaibhav Hiremath hvaib...@ti.com
---
 linux/drivers/media/video/v4l2-ioctl.c |   19 ++-
 linux/include/linux/videodev2.h|   19 ++-
 linux/include/media/v4l2-ioctl.h   |4 
 3 files changed, 40 insertions(+), 2 deletions(-)
   
diff --git a/linux/drivers/media/video/v4l2-ioctl.c
b/linux/drivers/media/video/v4l2-ioctl.c
index 165bc90..7599da8 100644
--- a/linux/drivers/media/video/v4l2-ioctl.c
+++ b/linux/drivers/media/video/v4l2-ioctl.c
@@ -270,6 +270,8 @@ static const char *v4l2_ioctls[] = {
[_IOC_NR(VIDIOC_DBG_G_CHIP_IDENT)] = VIDIOC_DBG_G_CHIP_IDENT,
[_IOC_NR(VIDIOC_S_HW_FREQ_SEEK)]   = VIDIOC_S_HW_FREQ_SEEK,
 #endif
+   [_IOC_NR(VIDIOC_S_COLOR_SPACE_CONV)]   =
VIDIOC_S_COLOR_SPACE_CONV, +  [_IOC_NR(VIDIOC_G_COLOR_SPACE_CONV)]
  = VIDIOC_G_COLOR_SPACE_CONV, };
 #define V4L2_IOCTLS ARRAY_SIZE(v4l2_ioctls)
   
@@ -1838,7 +1840,22 @@ static long __video_do_ioctl(struct file
*file, }
break;
}
-
+   case VIDIOC_S_COLOR_SPACE_CONV:
+   {
+   struct v4l2_color_space_conversion *p = arg;
+   if (!ops-vidioc_s_color_space_conv)
+   break;
+   ret = ops-vidioc_s_color_space_conv(file, fh, p);
+   break;
+   }
+   case VIDIOC_G_COLOR_SPACE_CONV:
+   {
+   struct v4l2_color_space_conversion *p = arg;
+   if (!ops-vidioc_g_color_space_conv)
+   break;
+   ret = ops-vidioc_g_color_space_conv(file, fh, p);
+   break;
+   }
default:
{
if (!ops-vidioc_default)
diff --git a/linux/include/linux/videodev2.h
b/linux/include/linux/videodev2.h index b0c5010..9fbc3b0 100644
--- a/linux/include/linux/videodev2.h
+++ b/linux/include/linux/videodev2.h
@@ -879,8 +879,10 @@ enum v4l2_power_line_frequency {
 #define V4L2_CID_BACKLIGHT_COMPENSATION(V4L2_CID_BASE+28)
 #define V4L2_CID_CHROMA_AGC (V4L2_CID_BASE+29)
 #define V4L2_CID_COLOR_KILLER   (V4L2_CID_BASE+30)
+#define V4L2_CID_ROTATION  (V4L2_CID_BASE+31)
+#define V4L2_CID_BG_COLOR  (V4L2_CID_BASE+32)
 /* last CID + 1 */
-#define V4L2_CID_LASTP1 (V4L2_CID_BASE+31)
+#define V4L2_CID_LASTP1 (V4L2_CID_BASE+33)
   
 /*  MPEG-class control IDs defined by V4L2 */
 #define V4L2_CID_MPEG_BASE (V4L2_CTRL_CLASS_MPEG | 
0x900)
@@ -1192,6 +1194,17 @@ struct v4l2_hw_freq_seek {
 };
   
 /*
+ * Color conversion
+ * User needs to pass pointer to color conversion matrix
+ * defined by hardware
+ */
+struct v4l2_color_space_conversion {
+   __s32 coefficients[3][3];
+   __s32 const_factor;
+   __s32 offsets[3];
+};
+
+/*
  * A U D I O
  */
 struct v4l2_audio {
@@ -1493,9 +1506,13 @@ struct v4l2_chip_ident_old {
 #endif
   
 #define VIDIOC_S_HW_FREQ_SEEK   _IOW('V', 82, struct
v4l2_hw_freq_seek) +
+#define VIDIOC_S_COLOR_SPACE_CONV  _IOW('V', 83, struct
v4l2_color_space_conversion)
+#define VIDIOC_G_COLOR_SPACE_CONV  _IOR('V', 84, struct
v4l2_color_space_conversion)
 /* Reminder: when adding new ioctls please add support for them to
drivers/media/video/v4l2-compat-ioctl32.c as well! */
   
+
 #ifdef __OLD_VIDIOC_
 /* for compatibility, will go away some day */
 #define VIDIOC_OVERLAY_OLD _IOWR

Re: [PATCH] New V4L2 ioctls for OMAP class of Devices

2009-01-27 Thread Hans Verkuil
On Tuesday 27 January 2009 14:02:30 Shah, Hardik wrote:
  -Original Message-
  From: Hans Verkuil [mailto:hverk...@xs4all.nl]
  Sent: Tuesday, January 27, 2009 2:40 PM
  To: Shah, Hardik
  Cc: video4linux-l...@redhat.com; linux-media@vger.kernel.org
  Subject: Re: [PATCH] New V4L2 ioctls for OMAP class of Devices
 
  On Tuesday 27 January 2009 05:43:25 Shah, Hardik wrote:
-Original Message-
From: Hans Verkuil [mailto:hverk...@xs4all.nl]
Sent: Sunday, January 25, 2009 3:06 PM
To: Shah, Hardik
Cc: video4linux-l...@redhat.com; linux-media@vger.kernel.org
Subject: Re: [PATCH] New V4L2 ioctls for OMAP class of Devices
   
On Saturday 24 January 2009 18:03:51 Shah, Hardik wrote:
  -Original Message-
  From: Shah, Hardik
  Sent: Wednesday, January 21, 2009 5:24 PM
  To: video4linux-l...@redhat.com; linux-media@vger.kernel.org
  Cc: Shah, Hardik; Jadav, Brijesh R; Nagalla, Hari; Hadli,
  Manjunath; R, Sivaraj; Hiremath, Vaibhav
  Subject: [PATCH] New V4L2 ioctls for OMAP class of Devices
 
  1.  Control ID added for rotation.  Same as HFLIP.
  2.  Control ID added for setting background color on
  output device.
  3.  New ioctl added for setting the color space conversion from
  YUV to RGB.
 
  Signed-off-by: Brijesh Jadav brijes...@ti.com
  Signed-off-by: Hari Nagalla hnaga...@ti.com
  Signed-off-by: Hardik Shah hardik.s...@ti.com
  Signed-off-by: Manjunath Hadli m...@ti.com
  Signed-off-by: R Sivaraj siva...@ti.com
  Signed-off-by: Vaibhav Hiremath hvaib...@ti.com
  ---
   linux/drivers/media/video/v4l2-ioctl.c |   19
  ++- linux/include/linux/videodev2.h|  
  19 ++- linux/include/media/v4l2-ioctl.h   |
 4 
   3 files changed, 40 insertions(+), 2 deletions(-)
 
  diff --git a/linux/drivers/media/video/v4l2-ioctl.c
  b/linux/drivers/media/video/v4l2-ioctl.c
  index 165bc90..7599da8 100644
  --- a/linux/drivers/media/video/v4l2-ioctl.c
  +++ b/linux/drivers/media/video/v4l2-ioctl.c
  @@ -270,6 +270,8 @@ static const char *v4l2_ioctls[] = {
  [_IOC_NR(VIDIOC_DBG_G_CHIP_IDENT)] =
  VIDIOC_DBG_G_CHIP_IDENT, [_IOC_NR(VIDIOC_S_HW_FREQ_SEEK)]   =
  VIDIOC_S_HW_FREQ_SEEK, #endif
  +   [_IOC_NR(VIDIOC_S_COLOR_SPACE_CONV)]   =
  VIDIOC_S_COLOR_SPACE_CONV,
  +   [_IOC_NR(VIDIOC_G_COLOR_SPACE_CONV)] =
  VIDIOC_G_COLOR_SPACE_CONV, };
   #define V4L2_IOCTLS ARRAY_SIZE(v4l2_ioctls)
 
  @@ -1838,7 +1840,22 @@ static long __video_do_ioctl(struct file
  *file, }
  break;
  }
  -
  +   case VIDIOC_S_COLOR_SPACE_CONV:
  +   {
  +   struct v4l2_color_space_conversion *p = arg;
  +   if (!ops-vidioc_s_color_space_conv)
  +   break;
  +   ret = ops-vidioc_s_color_space_conv(file, fh, p);
  +   break;
  +   }
  +   case VIDIOC_G_COLOR_SPACE_CONV:
  +   {
  +   struct v4l2_color_space_conversion *p = arg;
  +   if (!ops-vidioc_g_color_space_conv)
  +   break;
  +   ret = ops-vidioc_g_color_space_conv(file, fh, p);
  +   break;
  +   }
  default:
  {
  if (!ops-vidioc_default)
  diff --git a/linux/include/linux/videodev2.h
  b/linux/include/linux/videodev2.h index b0c5010..9fbc3b0 100644
  --- a/linux/include/linux/videodev2.h
  +++ b/linux/include/linux/videodev2.h
  @@ -879,8 +879,10 @@ enum v4l2_power_line_frequency {
   #define V4L2_CID_BACKLIGHT_COMPENSATION(V4L2_CID_BASE+28)
   #define V4L2_CID_CHROMA_AGC
  (V4L2_CID_BASE+29) #define V4L2_CID_COLOR_KILLER   
 (V4L2_CID_BASE+30) +#define
  V4L2_CID_ROTATION   (V4L2_CID_BASE+31)
  +#define V4L2_CID_BG_COLOR  (V4L2_CID_BASE+32)
   /* last CID + 1 */
  -#define V4L2_CID_LASTP1
  (V4L2_CID_BASE+31) +#define V4L2_CID_LASTP1
  (V4L2_CID_BASE+33)
 
   /*  MPEG-class control IDs defined by V4L2 */
   #define V4L2_CID_MPEG_BASE 
  (V4L2_CTRL_CLASS_MPEG |
 
  0x900)
 
  @@ -1192,6 +1194,17 @@ struct v4l2_hw_freq_seek {
   };
 
   /*
  + * Color conversion
  + * User needs to pass pointer to color conversion matrix
  + * defined by hardware
  + */
  +struct v4l2_color_space_conversion {
  +   __s32 coefficients[3][3];
  +   __s32 const_factor;
  +   __s32 offsets[3];
  +};
  +
  +/*
* A U D I O
*/
   struct v4l2_audio {
  @@ -1493,9 +1506,13 @@ struct v4l2_chip_ident_old {
   #endif
 
   #define VIDIOC_S_HW_FREQ_SEEK   _IOW('V', 82, struct
  v4l2_hw_freq_seek

RE: [PATCH] New V4L2 ioctls for OMAP class of Devices

2009-01-27 Thread Shah, Hardik


 -Original Message-
 From: Hans Verkuil [mailto:hverk...@xs4all.nl]
 Sent: Tuesday, January 27, 2009 2:40 PM
 To: Shah, Hardik
 Cc: video4linux-l...@redhat.com; linux-media@vger.kernel.org
 Subject: Re: [PATCH] New V4L2 ioctls for OMAP class of Devices
 
 On Tuesday 27 January 2009 05:43:25 Shah, Hardik wrote:
   -Original Message-
   From: Hans Verkuil [mailto:hverk...@xs4all.nl]
   Sent: Sunday, January 25, 2009 3:06 PM
   To: Shah, Hardik
   Cc: video4linux-l...@redhat.com; linux-media@vger.kernel.org
   Subject: Re: [PATCH] New V4L2 ioctls for OMAP class of Devices
  
   On Saturday 24 January 2009 18:03:51 Shah, Hardik wrote:
 -Original Message-
 From: Shah, Hardik
 Sent: Wednesday, January 21, 2009 5:24 PM
 To: video4linux-l...@redhat.com; linux-media@vger.kernel.org
 Cc: Shah, Hardik; Jadav, Brijesh R; Nagalla, Hari; Hadli,
 Manjunath; R, Sivaraj; Hiremath, Vaibhav
 Subject: [PATCH] New V4L2 ioctls for OMAP class of Devices

 1.  Control ID added for rotation.  Same as HFLIP.
 2.  Control ID added for setting background color on
 output device.
 3.  New ioctl added for setting the color space conversion from
 YUV to RGB.

 Signed-off-by: Brijesh Jadav brijes...@ti.com
 Signed-off-by: Hari Nagalla hnaga...@ti.com
 Signed-off-by: Hardik Shah hardik.s...@ti.com
 Signed-off-by: Manjunath Hadli m...@ti.com
 Signed-off-by: R Sivaraj siva...@ti.com
 Signed-off-by: Vaibhav Hiremath hvaib...@ti.com
 ---
  linux/drivers/media/video/v4l2-ioctl.c |   19 ++-
  linux/include/linux/videodev2.h|   19 ++-
  linux/include/media/v4l2-ioctl.h   |4 
  3 files changed, 40 insertions(+), 2 deletions(-)

 diff --git a/linux/drivers/media/video/v4l2-ioctl.c
 b/linux/drivers/media/video/v4l2-ioctl.c
 index 165bc90..7599da8 100644
 --- a/linux/drivers/media/video/v4l2-ioctl.c
 +++ b/linux/drivers/media/video/v4l2-ioctl.c
 @@ -270,6 +270,8 @@ static const char *v4l2_ioctls[] = {
   [_IOC_NR(VIDIOC_DBG_G_CHIP_IDENT)] = VIDIOC_DBG_G_CHIP_IDENT,
   [_IOC_NR(VIDIOC_S_HW_FREQ_SEEK)]   = VIDIOC_S_HW_FREQ_SEEK,
  #endif
 + [_IOC_NR(VIDIOC_S_COLOR_SPACE_CONV)]   =
 VIDIOC_S_COLOR_SPACE_CONV, +
 [_IOC_NR(VIDIOC_G_COLOR_SPACE_CONV)]
   = VIDIOC_G_COLOR_SPACE_CONV, };
  #define V4L2_IOCTLS ARRAY_SIZE(v4l2_ioctls)

 @@ -1838,7 +1840,22 @@ static long __video_do_ioctl(struct file
 *file, }
   break;
   }
 -
 + case VIDIOC_S_COLOR_SPACE_CONV:
 + {
 + struct v4l2_color_space_conversion *p = arg;
 + if (!ops-vidioc_s_color_space_conv)
 + break;
 + ret = ops-vidioc_s_color_space_conv(file, fh, p);
 + break;
 + }
 + case VIDIOC_G_COLOR_SPACE_CONV:
 + {
 + struct v4l2_color_space_conversion *p = arg;
 + if (!ops-vidioc_g_color_space_conv)
 + break;
 + ret = ops-vidioc_g_color_space_conv(file, fh, p);
 + break;
 + }
   default:
   {
   if (!ops-vidioc_default)
 diff --git a/linux/include/linux/videodev2.h
 b/linux/include/linux/videodev2.h index b0c5010..9fbc3b0 100644
 --- a/linux/include/linux/videodev2.h
 +++ b/linux/include/linux/videodev2.h
 @@ -879,8 +879,10 @@ enum v4l2_power_line_frequency {
  #define V4L2_CID_BACKLIGHT_COMPENSATION  (V4L2_CID_BASE+28)
  #define V4L2_CID_CHROMA_AGC (V4L2_CID_BASE+29)
  #define V4L2_CID_COLOR_KILLER   (V4L2_CID_BASE+30)
 +#define V4L2_CID_ROTATION(V4L2_CID_BASE+31)
 +#define V4L2_CID_BG_COLOR(V4L2_CID_BASE+32)
  /* last CID + 1 */
 -#define V4L2_CID_LASTP1 (V4L2_CID_BASE+31)
 +#define V4L2_CID_LASTP1 (V4L2_CID_BASE+33)

  /*  MPEG-class control IDs defined by V4L2 */
  #define V4L2_CID_MPEG_BASE   (V4L2_CTRL_CLASS_MPEG |
 0x900)
 @@ -1192,6 +1194,17 @@ struct v4l2_hw_freq_seek {
  };

  /*
 + * Color conversion
 + * User needs to pass pointer to color conversion matrix
 + * defined by hardware
 + */
 +struct v4l2_color_space_conversion {
 + __s32 coefficients[3][3];
 + __s32 const_factor;
 + __s32 offsets[3];
 +};
 +
 +/*
   *   A U D I O
   */
  struct v4l2_audio {
 @@ -1493,9 +1506,13 @@ struct v4l2_chip_ident_old {
  #endif

  #define VIDIOC_S_HW_FREQ_SEEK _IOW('V', 82, struct
 v4l2_hw_freq_seek) +
 +#define VIDIOC_S_COLOR_SPACE_CONV  _IOW('V', 83, struct
 v4l2_color_space_conversion)
 +#define VIDIOC_G_COLOR_SPACE_CONV

RE: [PATCH] New V4L2 ioctls for OMAP class of Devices

2009-01-27 Thread Trent Piepho
On Tue, 27 Jan 2009, Shah, Hardik wrote:
 The rotation values are 0, 90, 180 and 270 degree but to disable rotation
 the value passed should be -1 and this is one more value.  I know 0
 degree rotation corresponds to rotation disabled but DSS hardware
 requires 0 degree rotation to be enabled for mirroring.  The difference
 between the 0 degree rotation and no rotation(-1) is that 0 degree
 rotation will use the rotation engine in OMAP and then do the mirroring
 while -1 degree rotation will not use rotation engine.  There is more
 bandwidth utilization while using the rotation engine.  So people may
 want to completely disable rotation and people may want 0 degree rotation
 for mirroring support.  That's why I prefer not to use enum.  Is that ok
 for

That sounds like a hardware quirk that the driver should take care of.
Just have the driver turn on the rotation engine if mirroring is used.

It seems very hard for an application to make decent use of rotation
support if only certain values are supported by the hardware yet anything
in degrees can be specified?  How is the application supposed to know what
values will be acceptable?
--
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: [PATCH] New V4L2 ioctls for OMAP class of Devices

2009-01-27 Thread Trent Piepho
On Tue, 27 Jan 2009, Hans Verkuil wrote:
  [Shah, Hardik] Hi Hans,
  I got your above point.  Now regarding the enum I am not sure about how
  to implement it.  Are you suggesting me to remove the control ID for
  rotation and implement in some other way.  Please let me know if I am
  missing something. Currently in driver I have implemented the rotation in
  below way {
  .id= V4L2_CID_ROTATION,
  .name  = Rotation,
  .minimum   = 0,
  .maximum   = 270,
  .step  = 90,
  .default_value = -1,
  .flags = 0,
  .type  = V4L2_CTRL_TYPE_INTEGER,
  You want me to change V4L2_CTRL_TYPE_INTEGER to some enum or something.

 Change it to V4L2_CTRL_TYPE_MENU. See:
 http://www.linuxtv.org/downloads/video4linux/API/V4L2_API/spec-single/v4l2.html#VIDIOC-QUERYCTRL

Thinking about it more, I think an integer control like this might make
more sense.  default_value should be changed to 0 of course.  Extracting
the real meaning from the control setting is more obvious for the integer
control than a menu.  And what if some hardware allows for rotations other
than 90 degrees?
--
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: [PATCH] New V4L2 ioctls for OMAP class of Devices

2009-01-27 Thread Trent Piepho
On Tue, 27 Jan 2009, Hans Verkuil wrote:
 On Tuesday 27 January 2009 19:08:43 Trent Piepho wrote:
  On Tue, 27 Jan 2009, Hans Verkuil wrote:
[Shah, Hardik] Hi Hans,
I got your above point.  Now regarding the enum I am not sure about
how to implement it.  Are you suggesting me to remove the control ID
for rotation and implement in some other way.  Please let me know if
I am missing something. Currently in driver I have implemented the
rotation in below way {
.id= V4L2_CID_ROTATION,
.name  = Rotation,
.minimum   = 0,
.maximum   = 270,
.step  = 90,
.default_value = -1,
.flags = 0,
.type  = V4L2_CTRL_TYPE_INTEGER,
You want me to change V4L2_CTRL_TYPE_INTEGER to some enum or
something.
  
   Change it to V4L2_CTRL_TYPE_MENU. See:
   http://www.linuxtv.org/downloads/video4linux/API/V4L2_API/spec-single/v
  4l2.html#VIDIOC-QUERYCTRL
 
  Thinking about it more, I think an integer control like this might make
  more sense.  default_value should be changed to 0 of course.  Extracting
  the real meaning from the control setting is more obvious for the integer
  control than a menu.  And what if some hardware allows for rotations
  other than 90 degrees?

 If the hardware can do rotations other than 90 degrees then we get into the
 area of video effects. In principle such a driver can implement this
 rotation control as an integer rather than a menu (apps are supposed to
 query the type of a control dynamically, after all). But for a case like
 this where there are only four values I think a menu-type control is much
 more user-friendly.

How so?  An application can easily tell from the range and step of the
integer control that there are only four values.  And it can easily tell
what the values mean.  For instance if the app wants to show icons for the
rotations or have a command line parameter rotation in degrees, it's easy
to figure out what value the control should be set to.  For a menu, what is
the app supposed to do?  Call atoi() on the menu entry names and hope that
they parse corretly?  Seems like a kludge to do that.
--
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: [PATCH] New V4L2 ioctls for OMAP class of Devices

2009-01-26 Thread Shah, Hardik


 -Original Message-
 From: Hans Verkuil [mailto:hverk...@xs4all.nl]
 Sent: Sunday, January 25, 2009 3:06 PM
 To: Shah, Hardik
 Cc: video4linux-l...@redhat.com; linux-media@vger.kernel.org
 Subject: Re: [PATCH] New V4L2 ioctls for OMAP class of Devices
 
 On Saturday 24 January 2009 18:03:51 Shah, Hardik wrote:
   -Original Message-
   From: Shah, Hardik
   Sent: Wednesday, January 21, 2009 5:24 PM
   To: video4linux-l...@redhat.com; linux-media@vger.kernel.org
   Cc: Shah, Hardik; Jadav, Brijesh R; Nagalla, Hari; Hadli, Manjunath; R,
   Sivaraj; Hiremath, Vaibhav
   Subject: [PATCH] New V4L2 ioctls for OMAP class of Devices
  
   1.  Control ID added for rotation.  Same as HFLIP.
   2.  Control ID added for setting background color on
   output device.
   3.  New ioctl added for setting the color space conversion from
   YUV to RGB.
  
   Signed-off-by: Brijesh Jadav brijes...@ti.com
   Signed-off-by: Hari Nagalla hnaga...@ti.com
   Signed-off-by: Hardik Shah hardik.s...@ti.com
   Signed-off-by: Manjunath Hadli m...@ti.com
   Signed-off-by: R Sivaraj siva...@ti.com
   Signed-off-by: Vaibhav Hiremath hvaib...@ti.com
   ---
linux/drivers/media/video/v4l2-ioctl.c |   19 ++-
linux/include/linux/videodev2.h|   19 ++-
linux/include/media/v4l2-ioctl.h   |4 
3 files changed, 40 insertions(+), 2 deletions(-)
  
   diff --git a/linux/drivers/media/video/v4l2-ioctl.c
   b/linux/drivers/media/video/v4l2-ioctl.c
   index 165bc90..7599da8 100644
   --- a/linux/drivers/media/video/v4l2-ioctl.c
   +++ b/linux/drivers/media/video/v4l2-ioctl.c
   @@ -270,6 +270,8 @@ static const char *v4l2_ioctls[] = {
 [_IOC_NR(VIDIOC_DBG_G_CHIP_IDENT)] = VIDIOC_DBG_G_CHIP_IDENT,
 [_IOC_NR(VIDIOC_S_HW_FREQ_SEEK)]   = VIDIOC_S_HW_FREQ_SEEK,
#endif
   + [_IOC_NR(VIDIOC_S_COLOR_SPACE_CONV)]   = VIDIOC_S_COLOR_SPACE_CONV,
   + [_IOC_NR(VIDIOC_G_COLOR_SPACE_CONV)]   = VIDIOC_G_COLOR_SPACE_CONV,
};
#define V4L2_IOCTLS ARRAY_SIZE(v4l2_ioctls)
  
   @@ -1838,7 +1840,22 @@ static long __video_do_ioctl(struct file *file,
 }
 break;
 }
   -
   + case VIDIOC_S_COLOR_SPACE_CONV:
   + {
   + struct v4l2_color_space_conversion *p = arg;
   + if (!ops-vidioc_s_color_space_conv)
   + break;
   + ret = ops-vidioc_s_color_space_conv(file, fh, p);
   + break;
   + }
   + case VIDIOC_G_COLOR_SPACE_CONV:
   + {
   + struct v4l2_color_space_conversion *p = arg;
   + if (!ops-vidioc_g_color_space_conv)
   + break;
   + ret = ops-vidioc_g_color_space_conv(file, fh, p);
   + break;
   + }
 default:
 {
 if (!ops-vidioc_default)
   diff --git a/linux/include/linux/videodev2.h
   b/linux/include/linux/videodev2.h index b0c5010..9fbc3b0 100644
   --- a/linux/include/linux/videodev2.h
   +++ b/linux/include/linux/videodev2.h
   @@ -879,8 +879,10 @@ enum v4l2_power_line_frequency {
#define V4L2_CID_BACKLIGHT_COMPENSATION  (V4L2_CID_BASE+28)
#define V4L2_CID_CHROMA_AGC (V4L2_CID_BASE+29)
#define V4L2_CID_COLOR_KILLER   (V4L2_CID_BASE+30)
   +#define V4L2_CID_ROTATION(V4L2_CID_BASE+31)
   +#define V4L2_CID_BG_COLOR(V4L2_CID_BASE+32)
/* last CID + 1 */
   -#define V4L2_CID_LASTP1 (V4L2_CID_BASE+31)
   +#define V4L2_CID_LASTP1 (V4L2_CID_BASE+33)
  
/*  MPEG-class control IDs defined by V4L2 */
#define V4L2_CID_MPEG_BASE   (V4L2_CTRL_CLASS_MPEG | 
   0x900)
   @@ -1192,6 +1194,17 @@ struct v4l2_hw_freq_seek {
};
  
/*
   + * Color conversion
   + * User needs to pass pointer to color conversion matrix
   + * defined by hardware
   + */
   +struct v4l2_color_space_conversion {
   + __s32 coefficients[3][3];
   + __s32 const_factor;
   + __s32 offsets[3];
   +};
   +
   +/*
 *   A U D I O
 */
struct v4l2_audio {
   @@ -1493,9 +1506,13 @@ struct v4l2_chip_ident_old {
#endif
  
#define VIDIOC_S_HW_FREQ_SEEK _IOW('V', 82, struct v4l2_hw_freq_seek)
   +
   +#define VIDIOC_S_COLOR_SPACE_CONV  _IOW('V', 83, struct
   v4l2_color_space_conversion)
   +#define VIDIOC_G_COLOR_SPACE_CONV  _IOR('V', 84, struct
   v4l2_color_space_conversion)
/* Reminder: when adding new ioctls please add support for them to
   drivers/media/video/v4l2-compat-ioctl32.c as well! */
  
   +
#ifdef __OLD_VIDIOC_
/* for compatibility, will go away some day */
#define VIDIOC_OVERLAY_OLD   _IOWR('V', 14, int)
   diff --git a/linux/include/media/v4l2-ioctl.h
   b/linux/include/media/v4l2- ioctl.h
   index b01c044..0c44ecf 100644
   --- a/linux/include/media/v4l2-ioctl.h
   +++ b/linux/include/media/v4l2-ioctl.h
   @@ -241,6 +241,10 @@ struct v4l2_ioctl_ops {
 /* For other private ioctls */
 long (*vidioc_default

Re: [PATCH] New V4L2 ioctls for OMAP class of Devices

2009-01-25 Thread Laurent Pinchart
On Sunday 25 January 2009, Laurent Pinchart wrote:
 On Sunday 25 January 2009, Hans Verkuil wrote:
  On Saturday 24 January 2009 18:03:51 Shah, Hardik wrote:
-Original Message-
From: Shah, Hardik
Sent: Wednesday, January 21, 2009 5:24 PM
To: video4linux-l...@redhat.com; linux-media@vger.kernel.org
Cc: Shah, Hardik; Jadav, Brijesh R; Nagalla, Hari; Hadli, Manjunath;
R, Sivaraj; Hiremath, Vaibhav
Subject: [PATCH] New V4L2 ioctls for OMAP class of Devices
   
1.  Control ID added for rotation.  Same as HFLIP.
2.  Control ID added for setting background color on
output device.
3.  New ioctl added for setting the color space conversion from
YUV to RGB.
   
Signed-off-by: Brijesh Jadav brijes...@ti.com
Signed-off-by: Hari Nagalla hnaga...@ti.com
Signed-off-by: Hardik Shah hardik.s...@ti.com
Signed-off-by: Manjunath Hadli m...@ti.com
Signed-off-by: R Sivaraj siva...@ti.com
Signed-off-by: Vaibhav Hiremath hvaib...@ti.com
---
 linux/drivers/media/video/v4l2-ioctl.c |   19 ++-
 linux/include/linux/videodev2.h|   19 ++-
 linux/include/media/v4l2-ioctl.h   |4 
 3 files changed, 40 insertions(+), 2 deletions(-)
   
diff --git a/linux/drivers/media/video/v4l2-ioctl.c
b/linux/drivers/media/video/v4l2-ioctl.c
index 165bc90..7599da8 100644
--- a/linux/drivers/media/video/v4l2-ioctl.c
+++ b/linux/drivers/media/video/v4l2-ioctl.c
@@ -270,6 +270,8 @@ static const char *v4l2_ioctls[] = {
[_IOC_NR(VIDIOC_DBG_G_CHIP_IDENT)] = VIDIOC_DBG_G_CHIP_IDENT,
[_IOC_NR(VIDIOC_S_HW_FREQ_SEEK)]   = VIDIOC_S_HW_FREQ_SEEK,
 #endif
+   [_IOC_NR(VIDIOC_S_COLOR_SPACE_CONV)]   =
VIDIOC_S_COLOR_SPACE_CONV, +  [_IOC_NR(VIDIOC_G_COLOR_SPACE_CONV)]  
= VIDIOC_G_COLOR_SPACE_CONV, };
 #define V4L2_IOCTLS ARRAY_SIZE(v4l2_ioctls)
   
@@ -1838,7 +1840,22 @@ static long __video_do_ioctl(struct file
*file, }
break;
}
-
+   case VIDIOC_S_COLOR_SPACE_CONV:
+   {
+   struct v4l2_color_space_conversion *p = arg;
+   if (!ops-vidioc_s_color_space_conv)
+   break;
+   ret = ops-vidioc_s_color_space_conv(file, fh, p);
+   break;
+   }
+   case VIDIOC_G_COLOR_SPACE_CONV:
+   {
+   struct v4l2_color_space_conversion *p = arg;
+   if (!ops-vidioc_g_color_space_conv)
+   break;
+   ret = ops-vidioc_g_color_space_conv(file, fh, p);
+   break;
+   }
default:
{
if (!ops-vidioc_default)
diff --git a/linux/include/linux/videodev2.h
b/linux/include/linux/videodev2.h index b0c5010..9fbc3b0 100644
--- a/linux/include/linux/videodev2.h
+++ b/linux/include/linux/videodev2.h
@@ -879,8 +879,10 @@ enum v4l2_power_line_frequency {
 #define V4L2_CID_BACKLIGHT_COMPENSATION(V4L2_CID_BASE+28)
 #define V4L2_CID_CHROMA_AGC (V4L2_CID_BASE+29)
 #define V4L2_CID_COLOR_KILLER   (V4L2_CID_BASE+30)
+#define V4L2_CID_ROTATION  (V4L2_CID_BASE+31)
+#define V4L2_CID_BG_COLOR  (V4L2_CID_BASE+32)
 /* last CID + 1 */
-#define V4L2_CID_LASTP1 (V4L2_CID_BASE+31)
+#define V4L2_CID_LASTP1 (V4L2_CID_BASE+33)
   
 /*  MPEG-class control IDs defined by V4L2 */
 #define V4L2_CID_MPEG_BASE (V4L2_CTRL_CLASS_MPEG | 
0x900)
@@ -1192,6 +1194,17 @@ struct v4l2_hw_freq_seek {
 };
   
 /*
+ * Color conversion
+ * User needs to pass pointer to color conversion matrix
+ * defined by hardware
+ */
+struct v4l2_color_space_conversion {
+   __s32 coefficients[3][3];
+   __s32 const_factor;
+   __s32 offsets[3];
+};
+
+/*
  * A U D I O
  */
 struct v4l2_audio {
@@ -1493,9 +1506,13 @@ struct v4l2_chip_ident_old {
 #endif
   
 #define VIDIOC_S_HW_FREQ_SEEK   _IOW('V', 82, struct
v4l2_hw_freq_seek) +
+#define VIDIOC_S_COLOR_SPACE_CONV  _IOW('V', 83, struct
v4l2_color_space_conversion)
+#define VIDIOC_G_COLOR_SPACE_CONV  _IOR('V', 84, struct
v4l2_color_space_conversion)
 /* Reminder: when adding new ioctls please add support for them to
drivers/media/video/v4l2-compat-ioctl32.c as well! */
   
+
 #ifdef __OLD_VIDIOC_
 /* for compatibility, will go away some day */
 #define VIDIOC_OVERLAY_OLD _IOWR('V', 14, int)
diff --git a/linux/include/media/v4l2-ioctl.h
b/linux/include/media/v4l2- ioctl.h
index b01c044..0c44ecf 100644
--- a/linux/include/media/v4l2-ioctl.h
+++ b/linux/include/media/v4l2-ioctl.h
  

Re: [PATCH] New V4L2 ioctls for OMAP class of Devices

2009-01-25 Thread Trent Piepho
On Sun, 25 Jan 2009, Hans Verkuil wrote:
 I also would like to see the documentation for these ioctls and controls. I
 hope my www.linuxtv.org/hg/~hverkuil/v4l-dvb-spec tree will be merged soon
 with the master, but in the meantime you can mail a diff against the
 documentation in my tree. I will ensure that the documentation patches will
 be applied correctly once the spec is merged in the main v4l-dvb
 repository.

Yes, I would like to see the color conversion documentation.  V4L2 has a
color space field as part of the pixel format (e.g., V4L2_COLORSPACE_REC709
or V4L2_COLORSPACE_SMPTE170M), how does this new ioctl interact with that?

What is the format of the parameters?  These are natively real numbers not
integers, so to store them in an s32 there must some conversion, i.e.
scale and offset.  What is the actual equation used for the colorspace
conversion?

--
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: [PATCH] New V4L2 ioctls for OMAP class of Devices

2009-01-24 Thread Shah, Hardik


 -Original Message-
 From: Shah, Hardik
 Sent: Wednesday, January 21, 2009 5:24 PM
 To: video4linux-l...@redhat.com; linux-media@vger.kernel.org
 Cc: Shah, Hardik; Jadav, Brijesh R; Nagalla, Hari; Hadli, Manjunath; R,
 Sivaraj; Hiremath, Vaibhav
 Subject: [PATCH] New V4L2 ioctls for OMAP class of Devices
 
 1.  Control ID added for rotation.  Same as HFLIP.
 2.  Control ID added for setting background color on
 output device.
 3.  New ioctl added for setting the color space conversion from
 YUV to RGB.
 
 Signed-off-by: Brijesh Jadav brijes...@ti.com
 Signed-off-by: Hari Nagalla hnaga...@ti.com
 Signed-off-by: Hardik Shah hardik.s...@ti.com
 Signed-off-by: Manjunath Hadli m...@ti.com
 Signed-off-by: R Sivaraj siva...@ti.com
 Signed-off-by: Vaibhav Hiremath hvaib...@ti.com
 ---
  linux/drivers/media/video/v4l2-ioctl.c |   19 ++-
  linux/include/linux/videodev2.h|   19 ++-
  linux/include/media/v4l2-ioctl.h   |4 
  3 files changed, 40 insertions(+), 2 deletions(-)
 
 diff --git a/linux/drivers/media/video/v4l2-ioctl.c
 b/linux/drivers/media/video/v4l2-ioctl.c
 index 165bc90..7599da8 100644
 --- a/linux/drivers/media/video/v4l2-ioctl.c
 +++ b/linux/drivers/media/video/v4l2-ioctl.c
 @@ -270,6 +270,8 @@ static const char *v4l2_ioctls[] = {
   [_IOC_NR(VIDIOC_DBG_G_CHIP_IDENT)] = VIDIOC_DBG_G_CHIP_IDENT,
   [_IOC_NR(VIDIOC_S_HW_FREQ_SEEK)]   = VIDIOC_S_HW_FREQ_SEEK,
  #endif
 + [_IOC_NR(VIDIOC_S_COLOR_SPACE_CONV)]   = VIDIOC_S_COLOR_SPACE_CONV,
 + [_IOC_NR(VIDIOC_G_COLOR_SPACE_CONV)]   = VIDIOC_G_COLOR_SPACE_CONV,
  };
  #define V4L2_IOCTLS ARRAY_SIZE(v4l2_ioctls)
 
 @@ -1838,7 +1840,22 @@ static long __video_do_ioctl(struct file *file,
   }
   break;
   }
 -
 + case VIDIOC_S_COLOR_SPACE_CONV:
 + {
 + struct v4l2_color_space_conversion *p = arg;
 + if (!ops-vidioc_s_color_space_conv)
 + break;
 + ret = ops-vidioc_s_color_space_conv(file, fh, p);
 + break;
 + }
 + case VIDIOC_G_COLOR_SPACE_CONV:
 + {
 + struct v4l2_color_space_conversion *p = arg;
 + if (!ops-vidioc_g_color_space_conv)
 + break;
 + ret = ops-vidioc_g_color_space_conv(file, fh, p);
 + break;
 + }
   default:
   {
   if (!ops-vidioc_default)
 diff --git a/linux/include/linux/videodev2.h b/linux/include/linux/videodev2.h
 index b0c5010..9fbc3b0 100644
 --- a/linux/include/linux/videodev2.h
 +++ b/linux/include/linux/videodev2.h
 @@ -879,8 +879,10 @@ enum v4l2_power_line_frequency {
  #define V4L2_CID_BACKLIGHT_COMPENSATION  (V4L2_CID_BASE+28)
  #define V4L2_CID_CHROMA_AGC (V4L2_CID_BASE+29)
  #define V4L2_CID_COLOR_KILLER   (V4L2_CID_BASE+30)
 +#define V4L2_CID_ROTATION(V4L2_CID_BASE+31)
 +#define V4L2_CID_BG_COLOR(V4L2_CID_BASE+32)
  /* last CID + 1 */
 -#define V4L2_CID_LASTP1 (V4L2_CID_BASE+31)
 +#define V4L2_CID_LASTP1 (V4L2_CID_BASE+33)
 
  /*  MPEG-class control IDs defined by V4L2 */
  #define V4L2_CID_MPEG_BASE   (V4L2_CTRL_CLASS_MPEG | 0x900)
 @@ -1192,6 +1194,17 @@ struct v4l2_hw_freq_seek {
  };
 
  /*
 + * Color conversion
 + * User needs to pass pointer to color conversion matrix
 + * defined by hardware
 + */
 +struct v4l2_color_space_conversion {
 + __s32 coefficients[3][3];
 + __s32 const_factor;
 + __s32 offsets[3];
 +};
 +
 +/*
   *   A U D I O
   */
  struct v4l2_audio {
 @@ -1493,9 +1506,13 @@ struct v4l2_chip_ident_old {
  #endif
 
  #define VIDIOC_S_HW_FREQ_SEEK _IOW('V', 82, struct v4l2_hw_freq_seek)
 +
 +#define VIDIOC_S_COLOR_SPACE_CONV  _IOW('V', 83, struct
 v4l2_color_space_conversion)
 +#define VIDIOC_G_COLOR_SPACE_CONV  _IOR('V', 84, struct
 v4l2_color_space_conversion)
  /* Reminder: when adding new ioctls please add support for them to
 drivers/media/video/v4l2-compat-ioctl32.c as well! */
 
 +
  #ifdef __OLD_VIDIOC_
  /* for compatibility, will go away some day */
  #define VIDIOC_OVERLAY_OLD   _IOWR('V', 14, int)
 diff --git a/linux/include/media/v4l2-ioctl.h b/linux/include/media/v4l2-
 ioctl.h
 index b01c044..0c44ecf 100644
 --- a/linux/include/media/v4l2-ioctl.h
 +++ b/linux/include/media/v4l2-ioctl.h
 @@ -241,6 +241,10 @@ struct v4l2_ioctl_ops {
   /* For other private ioctls */
   long (*vidioc_default) (struct file *file, void *fh,
   int cmd, void *arg);
 + int (*vidioc_s_color_space_conv) (struct file *file, void *fh,
 + struct v4l2_color_space_conversion *a);
 + int (*vidioc_g_color_space_conv) (struct file *file, void *fh,
 + struct v4l2_color_space_conversion *a);
  };
 
 
 --
 1.5.6
[Shah, Hardik]