summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLasse Laukkanen <ext-lasse.2.laukkanen@nokia.com>2009-09-21 17:47:20 +0300
committerThiago Santos <thiago.sousa.santos@collabora.co.uk>2010-04-13 12:00:31 -0300
commit2c05df08b2daf3979efe94eb221511ccd21ef0c9 (patch)
tree07778bf00a15c67b6c63c47b711e1bdf98818858
parente2438e6cf146e131e64efae1963f67e229704bc0 (diff)
camerabin: add api to query supported image capture resolution
Adds new property 'image-capture-supported-caps' to GstPhotography to query the supported image capture caps. Also implement it in camerabin.
-rw-r--r--gst-libs/gst/interfaces/photography.c7
-rw-r--r--gst-libs/gst/interfaces/photography.h3
-rw-r--r--gst/camerabin/gstcamerabin-enum.h3
-rw-r--r--gst/camerabin/gstcamerabin.c4
-rw-r--r--gst/camerabin/gstcamerabinphotography.c12
5 files changed, 28 insertions, 1 deletions
diff --git a/gst-libs/gst/interfaces/photography.c b/gst-libs/gst/interfaces/photography.c
index 29c3996ff..0f98d1b94 100644
--- a/gst-libs/gst/interfaces/photography.c
+++ b/gst-libs/gst/interfaces/photography.c
@@ -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));
}
diff --git a/gst-libs/gst/interfaces/photography.h b/gst-libs/gst/interfaces/photography.h
index 651f66749..65a638fdd 100644
--- a/gst-libs/gst/interfaces/photography.h
+++ b/gst-libs/gst/interfaces/photography.h
@@ -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.
*/
diff --git a/gst/camerabin/gstcamerabin-enum.h b/gst/camerabin/gstcamerabin-enum.h
index 776a774e9..675b6059c 100644
--- a/gst/camerabin/gstcamerabin-enum.h
+++ b/gst/camerabin/gstcamerabin-enum.h
@@ -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
};
/**
diff --git a/gst/camerabin/gstcamerabin.c b/gst/camerabin/gstcamerabin.c
index 90f49f6e2..c592dedb7 100644
--- a/gst/camerabin/gstcamerabin.c
+++ b/gst/camerabin/gstcamerabin.c
@@ -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
diff --git a/gst/camerabin/gstcamerabinphotography.c b/gst/camerabin/gstcamerabinphotography.c
index a5940f483..33721d6a3 100644
--- a/gst/camerabin/gstcamerabinphotography.c
+++ b/gst/camerabin/gstcamerabinphotography.c
@@ -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;
}