Add ISP ae_mode setting as Gst property
authorJussi Saavalainen <jussi.saavalainen@ixonos.com>
Thu, 17 Jan 2013 15:48:44 +0000 (17:48 +0200)
committerJussi Saavalainen <jussi.saavalainen@ixonos.com>
Thu, 17 Jan 2013 15:48:44 +0000 (17:48 +0200)
Change-Id: I0e312e1cfb8cbba7a58870932ad93836ccdacbfc

gst/mfldv4l2cam/gstv4l2camsrc.c
gst/mfldv4l2cam/gstv4l2camsrc.h
packaging/mfldv4l2camsrc.changes

index 679804c..dd346bd 100644 (file)
@@ -104,6 +104,7 @@ typedef enum
   PROP_AE,
   PROP_AE_METERING_MODE,
   PROP_AE_WINDOW,
+  PROP_AE_MODE,
   PROP_AF,
   PROP_AF_METERING_MODE,
   PROP_AF_WINDOW,
@@ -189,6 +190,26 @@ gst_camera_ae_metering_mode_get_type(void)
 }
 
 GType
+gst_camera_ae_mode_get_type(void)
+{
+  static GType gst_camera_ae_mode_type = 0;
+  static GEnumValue gst_camera_ae_mode[] = {
+    {GST_CAMERA_AE_MODE_AUTO, "AE auto", "auto"},
+    {GST_CAMERA_AE_MODE_MANUAL, "AE manual", "manual"},
+    {GST_CAMERA_AE_MODE_SHUTTER_PRIORITY, "AE shutter priority", "shutter"},
+    {GST_CAMERA_AE_MODE_APERTURE_PRIORITY, "AE aperture priority", "aperture"},
+    {0, NULL, NULL},
+  };
+
+  if (G_UNLIKELY (!gst_camera_ae_mode_type)) {
+    gst_camera_ae_mode_type=
+        g_enum_register_static ("GstCameraAEMode",
+        gst_camera_ae_mode);
+  }
+  return  gst_camera_ae_mode_type;
+}
+
+GType
 gst_camera_af_metering_mode_get_type(void)
 {
   static GType gst_camera_af_metering_mode_type = 0;
@@ -800,6 +821,13 @@ gst_v4l2camsrc_class_init (GstMFLDV4l2CamSrcClass * klass)
           GST_CAMERA_AE_METERING_AUTO,
           G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
+  g_object_class_install_property (gobject_class, PROP_AE_MODE,
+      g_param_spec_enum ("ae-mode", "AE Mode",
+          "Select AE Mode",
+          GST_TYPE_CAMERA_AE_MODE,
+          GST_CAMERA_AE_MODE_AUTO,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
  g_object_class_install_property (gobject_class, PROP_AE_WINDOW,
       g_param_spec_string("ae-window", "AE Window",
           "Set AE Window Coordinates in format: x_left=value,x_right=value,"
@@ -1098,6 +1126,7 @@ gst_v4l2camsrc_init (GstMFLDV4l2CamSrc * v4l2camsrc,
 
   v4l2camsrc->input_sensor = GST_CAMERA_INPUT_SENSOR_PRIMARY;
   v4l2camsrc->ae_metering_mode = GST_CAMERA_AE_METERING_AUTO;
+  v4l2camsrc->ae_mode = GST_CAMERA_AE_MODE_AUTO;
   v4l2camsrc->af_metering_mode = GST_CAMERA_AF_METERING_AUTO;
 
   v4l2camsrc->ae_window.x_left = 0;
@@ -1269,6 +1298,12 @@ gst_v4l2camsrc_set_property (GObject * object,
       v4l2camsrc->mfldadvci->AeSetMeteringMode((advci_ae_metering_mode)v4l2camsrc->ae_metering_mode);
       break;
     }
+    case PROP_AE_MODE:
+    {
+      v4l2camsrc->ae_mode = g_value_get_enum (value);
+      v4l2camsrc->mfldadvci->AeSetMode((advci_ae_mode)v4l2camsrc->ae_mode);
+      break;
+    }
     case PROP_AF_METERING_MODE:
     {
       v4l2camsrc->af_metering_mode = g_value_get_enum (value);
@@ -1530,6 +1565,9 @@ gst_v4l2camsrc_get_property (GObject * object,
     case PROP_AE_METERING_MODE:
       g_value_set_enum (value, v4l2camsrc->ae_metering_mode);
       break;
+    case PROP_AE_MODE:
+      g_value_set_enum (value, v4l2camsrc->ae_mode);
+      break;
     case PROP_AE_WINDOW:
     {
       GstStructure *tmp = NULL;
index 596401c..61c978b 100644 (file)
@@ -50,6 +50,7 @@ G_BEGIN_DECLS
 #define GST_TYPE_CAMERA_INPUT_SENSOR (gst_camera_input_sensor_get_type())
 
 #define GST_TYPE_CAMERA_AE_METERING_MODE (gst_camera_ae_metering_mode_get_type())
+#define GST_TYPE_CAMERA_AE_MODE (gst_camera_ae_mode_get_type())
 #define GST_TYPE_CAMERA_AF_METERING_MODE (gst_camera_af_metering_mode_get_type())
 
 typedef struct _GstMFLDV4l2CamSrc GstMFLDV4l2CamSrc;
@@ -89,6 +90,22 @@ typedef enum {
 } GstCameraAEMeteringMode;
 
 /**
+ * GstCameraAEMode:
+ * @GST_CAMERA_AE_MODE_AUTO: Auto Exposure automatic mode
+ * @GST_CAMERA_AE_MODE_MANUAL: Auto Exposure manual mode
+ * @GST_CAMERA_AE_MODE_SHUTTER_PRIORITY: Auto Exposure shutter priority mode
+ * @GST_CAMERA_AE_MODE_APERTURE_PRIORITY: Auto Exposure aperture priority mode
+ *
+ * Camera element auto exposure mode
+ */
+typedef enum {
+  GST_CAMERA_AE_MODE_AUTO,
+  GST_CAMERA_AE_MODE_MANUAL,
+  GST_CAMERA_AE_MODE_SHUTTER_PRIORITY,
+  GST_CAMERA_AE_MODE_APERTURE_PRIORITY
+} GstCameraAEMode;
+
+/**
  * GstCameraAFMeteringMode:
  * @GST_CAMERA_AF_METERING_AUTO: Auto Focus auto metering mode
  * @GST_CAMERA_AF_METERING_SPOT: Auto Focus spot metering mode
@@ -258,6 +275,7 @@ struct _GstMFLDV4l2CamSrc {
   gint focus_posi;
   gboolean vflip,hflip;
   GstCameraAEMeteringMode ae_metering_mode;
+  GstCameraAEMode ae_mode;
   GstCameraAFMeteringMode af_metering_mode;
   GstCameraWindow ae_window;
   GstCameraWindow af_window;
index 5ede68c..1a972e0 100644 (file)
@@ -1,3 +1,7 @@
+* Thu Jan 17 2013 Jussi Saavalainen <jussi.saavalainen@ixonos.com> submit/trunk/20130117.150127@471e12c
+- Add ISP ae_mode setting as Gst property. TZSP-4682
+- Add exposure mode initialisation.
+
 * Thu Jan 17 2013 Marko Ollonen <marko.ollonen@ixonos.com> accepted/trunk/20130114.185021@5615cfc
 - colorspace: fourcc typo, TZSP-4757.