camerabin: add api to query supported image capture resolution
authorLasse Laukkanen <ext-lasse.2.laukkanen@nokia.com>
Mon, 21 Sep 2009 14:47:20 +0000 (17:47 +0300)
committerThiago Santos <thiago.sousa.santos@collabora.co.uk>
Tue, 13 Apr 2010 15:00:31 +0000 (12:00 -0300)
Adds new property 'image-capture-supported-caps' to GstPhotography
to query the supported image capture caps.
Also implement it in camerabin.

gst-libs/gst/interfaces/photography.c
gst-libs/gst/interfaces/photography.h
gst/camerabin/gstcamerabin-enum.h
gst/camerabin/gstcamerabin.c
gst/camerabin/gstcamerabinphotography.c

index 29c3996..0f98d1b 100644 (file)
@@ -500,4 +500,11 @@ gst_photography_iface_class_init (gpointer g_class)
           "Exposure time in milliseconds",
           "Exposure time defines how long the shutter will stay open (0 = auto)",
           0, G_MAXUINT32, 0, G_PARAM_READWRITE));
+
+  /* Image capture caps */
+  g_object_interface_install_property (g_class,
+      g_param_spec_boxed (GST_PHOTOGRAPHY_PROP_IMAGE_CAPTURE_SUPPORTED_CAPS,
+          "Image capture supported caps",
+          "Caps describing supported image capture formats", GST_TYPE_CAPS,
+          G_PARAM_READABLE));
 }
index 651f667..65a638f 100644 (file)
@@ -63,6 +63,8 @@ G_BEGIN_DECLS
 #define GST_PHOTOGRAPHY_PROP_ISO_SPEED    "iso-speed"
 #define GST_PHOTOGRAPHY_PROP_APERTURE     "aperture"
 #define GST_PHOTOGRAPHY_PROP_EXPOSURE     "exposure"
+#define GST_PHOTOGRAPHY_PROP_IMAGE_CAPTURE_SUPPORTED_CAPS \
+    "image-capture-supported-caps"
 
 /**
  * GstPhotography:
@@ -196,6 +198,7 @@ typedef void (*GstPhotoCapturePrepared) (gpointer data,
  * @set_autofocus: vmethod to set autofocus on/off
  * @set_config: vmethod to set all configuration parameters at once
  * @get_config: vmethod to get all configuration parameters at once
+ * @get_image_capture_supported_caps: vmethod to get caps describing supported image capture formats
  *
  * #GstPhotographyInterface interface.
  */
index 776a774..675b605 100644 (file)
@@ -56,7 +56,8 @@ enum
   ARG_ISO_SPEED,
   ARG_APERTURE,
   ARG_EXPOSURE,
-  ARG_VIDEO_SOURCE_FILTER
+  ARG_VIDEO_SOURCE_FILTER,
+  ARG_IMAGE_CAPTURE_SUPPORTED_CAPS
 };
 
 /**
index 90f49f6..c592ded 100644 (file)
@@ -2926,6 +2926,10 @@ gst_camerabin_override_photo_properties (GObjectClass * gobject_class)
 
   g_object_class_override_property (gobject_class, ARG_EXPOSURE,
       GST_PHOTOGRAPHY_PROP_EXPOSURE);
+
+  g_object_class_override_property (gobject_class,
+      ARG_IMAGE_CAPTURE_SUPPORTED_CAPS,
+      GST_PHOTOGRAPHY_PROP_IMAGE_CAPTURE_SUPPORTED_CAPS);
 }
 
 static void
index a5940f4..33721d6 100644 (file)
@@ -544,6 +544,18 @@ gst_camerabin_photography_get_property (GstCameraBin * camera, guint prop_id,
       ret = TRUE;
       break;
     }
+    case ARG_IMAGE_CAPTURE_SUPPORTED_CAPS:
+    {
+      GST_DEBUG_OBJECT (camera, "==== GETTING PROP_IMAGE_CAPTURE_CAPS ====");
+      if (PHOTOGRAPHY_IS_OK (camera->src_vid_src)) {
+        g_object_get_property (G_OBJECT (camera->src_vid_src),
+            "image-capture-supported-caps", value);
+      } else {
+        g_object_get_property (G_OBJECT (camera), "video-source-caps", value);
+      }
+      ret = TRUE;
+      break;
+    }
     default:
       break;
   }