summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLasse Laukkanen <lasse.laukkanen@digia.com>2011-01-12 16:26:19 +0200
committerThiago Santos <thiago.sousa.santos@collabora.co.uk>2011-01-24 18:05:20 -0300
commit10830c9544b4856fc39497f84df818662946274d (patch)
tree07c8ef7dab0d20f39967a8f3a0e6ff79d585a77c
parenta791f5070cdc1b29c4c0415c2c74cf8d6d5ced65 (diff)
examples: camerabin: Don't set default values for GstPhotography interface settings
Don't set any default values for source element GstPhotography interface settings, source elements should have sane defaults themselves. Also, setting scene-mode is tricky as it is a superset of other GstPhotography settings. This might cause problem with defaults e.g. setting scene-mode to 'night' may configure flash-mode as 'on' by definition, and after that we don't want to override this flash-mode setting with gst-camerabin-test default value. Moreover, user needs have an option to set scene mode first and then force some individual setting to a different value from the scene-mode definition. https://bugzilla.gnome.org/show_bug.cgi?id=639841
-rw-r--r--tests/examples/camerabin/gst-camerabin-test.c71
1 files changed, 46 insertions, 25 deletions
diff --git a/tests/examples/camerabin/gst-camerabin-test.c b/tests/examples/camerabin/gst-camerabin-test.c
index 6ebd1e237..ad8e6d2a5 100644
--- a/tests/examples/camerabin/gst-camerabin-test.c
+++ b/tests/examples/camerabin/gst-camerabin-test.c
@@ -136,15 +136,6 @@ static gint view_framerate_num = 2825;
static gint view_framerate_den = 100;
static gboolean no_xwindow = FALSE;
-/* photography interface command line options */
-static gfloat ev_compensation = 0.0;
-static gint aperture = 0;
-static gint flash_mode = 0;
-static gint scene_mode = 6;
-static gint64 exposure = 0;
-static gint iso_speed = 0;
-static gint wb_mode = 0;
-static gint color_mode = 0;
static gint mode = 1;
static gint flags = 0x4f;
static gboolean mute = FALSE;
@@ -154,6 +145,24 @@ static gint capture_time = 10;
static gint capture_count = 0;
static gint capture_total = 1;
+/* photography interface command line options */
+#define EV_COMPENSATION_NONE -G_MAXFLOAT
+#define APERTURE_NONE -G_MAXINT
+#define FLASH_MODE_NONE -G_MAXINT
+#define SCENE_MODE_NONE -G_MAXINT
+#define EXPOSURE_NONE -G_MAXINT64
+#define ISO_SPEED_NONE -G_MAXINT
+#define WHITE_BALANCE_MODE_NONE -G_MAXINT
+#define COLOR_TONE_MODE_NONE -G_MAXINT
+static gfloat ev_compensation = EV_COMPENSATION_NONE;
+static gint aperture = APERTURE_NONE;
+static gint flash_mode = FLASH_MODE_NONE;
+static gint scene_mode = SCENE_MODE_NONE;
+static gint64 exposure = EXPOSURE_NONE;
+static gint iso_speed = ISO_SPEED_NONE;
+static gint wb_mode = WHITE_BALANCE_MODE_NONE;
+static gint color_mode = COLOR_TONE_MODE_NONE;
+
/* audio capsfilter options */
static gint audio_bitrate = 128000;
static gint audio_samplerate = 48000;
@@ -634,14 +643,24 @@ run_pipeline (gpointer user_data)
if (video_source) {
if (GST_IS_ELEMENT (video_source) &&
gst_element_implements_interface (video_source, GST_TYPE_PHOTOGRAPHY)) {
- g_object_set (video_source, "ev-compensation", ev_compensation, NULL);
- g_object_set (video_source, "aperture", aperture, NULL);
- g_object_set (video_source, "flash-mode", flash_mode, NULL);
- g_object_set (video_source, "scene-mode", scene_mode, NULL);
- g_object_set (video_source, "exposure", exposure, NULL);
- g_object_set (video_source, "iso-speed", iso_speed, NULL);
- g_object_set (video_source, "white-balance-mode", wb_mode, NULL);
- g_object_set (video_source, "colour-tone-mode", color_mode, NULL);
+ /* Set GstPhotography interface options. If option not given as
+ command-line parameter use default of the source element. */
+ if (scene_mode != SCENE_MODE_NONE)
+ g_object_set (video_source, "scene-mode", scene_mode, NULL);
+ if (ev_compensation != EV_COMPENSATION_NONE)
+ g_object_set (video_source, "ev-compensation", ev_compensation, NULL);
+ if (aperture != APERTURE_NONE)
+ g_object_set (video_source, "aperture", aperture, NULL);
+ if (flash_mode != FLASH_MODE_NONE)
+ g_object_set (video_source, "flash-mode", flash_mode, NULL);
+ if (exposure != EXPOSURE_NONE)
+ g_object_set (video_source, "exposure", exposure, NULL);
+ if (iso_speed != ISO_SPEED_NONE)
+ g_object_set (video_source, "iso-speed", iso_speed, NULL);
+ if (wb_mode != WHITE_BALANCE_MODE_NONE)
+ g_object_set (video_source, "white-balance-mode", wb_mode, NULL);
+ if (color_mode != COLOR_TONE_MODE_NONE)
+ g_object_set (video_source, "colour-tone-mode", color_mode, NULL);
}
g_object_unref (video_source);
}
@@ -669,27 +688,29 @@ main (int argc, char *argv[])
GOptionEntry options[] = {
{"ev-compensation", '\0', G_OPTION_FLAG_OPTIONAL_ARG, G_OPTION_ARG_STRING,
&ev_option,
- "EV compensation (-2.5..2.5, default = 0)", NULL},
+ "EV compensation for source element GstPhotography interface", NULL},
{"aperture", '\0', G_OPTION_FLAG_OPTIONAL_ARG, G_OPTION_ARG_INT, &aperture,
- "Aperture (size of lens opening, default = 0 (auto))", NULL},
+ "Aperture (size of lens opening) for source element GstPhotography interface",
+ NULL},
{"flash-mode", '\0', G_OPTION_FLAG_OPTIONAL_ARG, G_OPTION_ARG_INT,
&flash_mode,
- "Flash mode (default = 0 (auto))", NULL},
+ "Flash mode for source element GstPhotography interface", NULL},
{"scene-mode", '\0', G_OPTION_FLAG_OPTIONAL_ARG, G_OPTION_ARG_INT,
&scene_mode,
- "Scene mode (default = 6 (auto))", NULL},
+ "Scene mode for source element GstPhotography interface", NULL},
{"exposure", '\0', G_OPTION_FLAG_OPTIONAL_ARG, G_OPTION_ARG_INT64,
&exposure,
- "Exposure (default = 0 (auto))", NULL},
+ "Exposure time (in ms) for source element GstPhotography interface",
+ NULL},
{"iso-speed", '\0', G_OPTION_FLAG_OPTIONAL_ARG, G_OPTION_ARG_INT,
&iso_speed,
- "ISO speed (default = 0 (auto))", NULL},
+ "ISO speed for source element GstPhotography interface", NULL},
{"white-balance-mode", '\0', G_OPTION_FLAG_OPTIONAL_ARG, G_OPTION_ARG_INT,
&wb_mode,
- "White balance mode (default = 0 (auto))", NULL},
+ "White balance mode for source element GstPhotography interface", NULL},
{"colour-tone-mode", '\0', G_OPTION_FLAG_OPTIONAL_ARG, G_OPTION_ARG_INT,
&color_mode,
- "Colour tone mode (default = 0 (auto))", NULL},
+ "Colour tone mode for source element GstPhotography interface", NULL},
{"directory", '\0', 0, G_OPTION_ARG_STRING, &fn_option,
"Directory for capture file(s) (default is current directory)", NULL},
{"mode", '\0', G_OPTION_FLAG_OPTIONAL_ARG, G_OPTION_ARG_INT, &mode,