From 9bace27300ed323f4ce06b5dc9122276a1742a7e Mon Sep 17 00:00:00 2001 From: Teemu Katajisto Date: Thu, 22 Apr 2010 17:46:59 +0300 Subject: [PATCH] examples: camerabin: use photoiface properties through video-source Fixes #616923 --- tests/examples/camerabin/Makefile.am | 9 ++++++-- tests/examples/camerabin/gst-camera.c | 33 +++++++++++++-------------- tests/examples/camerabin/gst-camerabin-test.c | 28 +++++++++++++++-------- 3 files changed, 42 insertions(+), 28 deletions(-) diff --git a/tests/examples/camerabin/Makefile.am b/tests/examples/camerabin/Makefile.am index 08888c5..5898a0c 100644 --- a/tests/examples/camerabin/Makefile.am +++ b/tests/examples/camerabin/Makefile.am @@ -36,8 +36,13 @@ if HAVE_X11 GST_CAMERABIN_X11_EXAMPLES = gst-camerabin-test gst_camerabin_test_SOURCES = gst-camerabin-test.c -gst_camerabin_test_CFLAGS = $(GST_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) -gst_camerabin_test_LDADD = -lgstinterfaces-@GST_MAJORMINOR@ $(GST_LIBS) $(GST_PLUGINS_BASE_LIBS) $(X11_LIBS) +gst_camerabin_test_CFLAGS = $(GST_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) $(GST_PLUGINS_BAD_CFLAGS) +gst_camerabin_test_LDADD = \ + $(top_builddir)/gst-libs/gst/interfaces/libgstphotography-@GST_MAJORMINOR@.la \ + -lgstinterfaces-@GST_MAJORMINOR@ \ + $(GST_LIBS) \ + $(GST_PLUGINS_BASE_LIBS) \ + $(X11_LIBS) else GST_CAMERABIN_X11_EXAMPLES = diff --git a/tests/examples/camerabin/gst-camera.c b/tests/examples/camerabin/gst-camera.c index 6b121fb..58e2152 100644 --- a/tests/examples/camerabin/gst-camera.c +++ b/tests/examples/camerabin/gst-camera.c @@ -819,11 +819,11 @@ on_buttonPause_clicked (GtkButton * button, gpointer user_data) case CAP_STATE_IMAGE: if (g_str_equal (gtk_button_get_label (ui_bnt_pause), "Focus")) { /* Start autofocus */ - gst_photography_set_autofocus (GST_PHOTOGRAPHY (gst_camera_bin), TRUE); + gst_photography_set_autofocus (GST_PHOTOGRAPHY (gst_videosrc), TRUE); gtk_button_set_label (ui_bnt_pause, "Cancel Focus"); } else { /* Cancel autofocus */ - gst_photography_set_autofocus (GST_PHOTOGRAPHY (gst_camera_bin), FALSE); + gst_photography_set_autofocus (GST_PHOTOGRAPHY (gst_videosrc), FALSE); gtk_button_set_label (ui_bnt_pause, "Focus"); } break; @@ -1043,7 +1043,7 @@ on_key_released (GtkWidget * widget, GdkEventKey * event, gpointer user_data) switch (event->keyval) { case GDK_F11: #ifdef HAVE_GST_PHOTO_IFACE_H - gst_photography_set_autofocus (GST_PHOTOGRAPHY (gst_camera_bin), FALSE); + gst_photography_set_autofocus (GST_PHOTOGRAPHY (gst_videosrc), FALSE); #endif break; default: @@ -1061,7 +1061,7 @@ on_key_pressed (GtkWidget * widget, GdkEventKey * event, gpointer user_data) switch (event->keyval) { case GDK_F11: #ifdef HAVE_GST_PHOTO_IFACE_H - gst_photography_set_autofocus (GST_PHOTOGRAPHY (gst_camera_bin), TRUE); + gst_photography_set_autofocus (GST_PHOTOGRAPHY (gst_videosrc), TRUE); #endif break; case 0x0: @@ -1337,31 +1337,31 @@ photo_menuitem_toggled_cb (GtkRadioMenuItem * menuitem, gpointer user_data) GstWhiteBalanceMode mode; ret = gst_photography_set_white_balance_mode (GST_PHOTOGRAPHY - (gst_camera_bin), val->value); - gst_photography_get_white_balance_mode (GST_PHOTOGRAPHY (gst_camera_bin), + (gst_videosrc), val->value); + gst_photography_get_white_balance_mode (GST_PHOTOGRAPHY (gst_videosrc), &mode); set_value = (gint) mode; } else if (etype == GST_TYPE_SCENE_MODE) { GstSceneMode mode; ret = - gst_photography_set_scene_mode (GST_PHOTOGRAPHY (gst_camera_bin), + gst_photography_set_scene_mode (GST_PHOTOGRAPHY (gst_videosrc), val->value); - gst_photography_get_scene_mode (GST_PHOTOGRAPHY (gst_camera_bin), &mode); + gst_photography_get_scene_mode (GST_PHOTOGRAPHY (gst_videosrc), &mode); set_value = (gint) mode; } else if (etype == GST_TYPE_COLOUR_TONE_MODE) { GstColourToneMode mode; ret = gst_photography_set_colour_tone_mode (GST_PHOTOGRAPHY - (gst_camera_bin), val->value); - gst_photography_get_colour_tone_mode (GST_PHOTOGRAPHY (gst_camera_bin), + (gst_videosrc), val->value); + gst_photography_get_colour_tone_mode (GST_PHOTOGRAPHY (gst_videosrc), &mode); set_value = (gint) mode; } else if (etype == GST_TYPE_FLASH_MODE) { GstFlashMode mode; ret = - gst_photography_set_flash_mode (GST_PHOTOGRAPHY (gst_camera_bin), + gst_photography_set_flash_mode (GST_PHOTOGRAPHY (gst_videosrc), val->value); - gst_photography_get_flash_mode (GST_PHOTOGRAPHY (gst_camera_bin), &mode); + gst_photography_get_flash_mode (GST_PHOTOGRAPHY (gst_videosrc), &mode); set_value = (gint) mode; } @@ -1388,11 +1388,10 @@ photo_iso_speed_toggled_cb (GtkRadioMenuItem * menuitem, gpointer user_data) if (!g_str_equal (name, "auto")) { sscanf (name, "%d", &val); } - if (!gst_photography_set_iso_speed (GST_PHOTOGRAPHY (gst_camera_bin), val)) { + if (!gst_photography_set_iso_speed (GST_PHOTOGRAPHY (gst_videosrc), val)) { g_print ("ISO speed (%d) setting failed\n", val); } else { - gst_photography_get_iso_speed (GST_PHOTOGRAPHY (gst_camera_bin), - &set_val); + gst_photography_get_iso_speed (GST_PHOTOGRAPHY (gst_videosrc), &set_val); if (val != set_val) { g_print ("ISO speed (%d) setting failed, got %d\n", val, set_val); } @@ -1411,11 +1410,11 @@ photo_ev_comp_toggled_cb (GtkRadioMenuItem * menuitem, gpointer user_data) if (active) { name = gtk_widget_get_name (GTK_WIDGET (menuitem)); sscanf (name, "%f", &val); - if (!gst_photography_set_ev_compensation (GST_PHOTOGRAPHY (gst_camera_bin), + if (!gst_photography_set_ev_compensation (GST_PHOTOGRAPHY (gst_videosrc), val)) { g_print ("EV compensation (%.1f) setting failed\n", val); } else { - gst_photography_get_ev_compensation (GST_PHOTOGRAPHY (gst_camera_bin), + gst_photography_get_ev_compensation (GST_PHOTOGRAPHY (gst_videosrc), &set_val); if (val != set_val) { g_print ("EV compensation (%.1f) setting failed, got %.1f\n", val, diff --git a/tests/examples/camerabin/gst-camerabin-test.c b/tests/examples/camerabin/gst-camerabin-test.c index ec28ae4..ee1422e 100644 --- a/tests/examples/camerabin/gst-camerabin-test.c +++ b/tests/examples/camerabin/gst-camerabin-test.c @@ -85,8 +85,11 @@ # include "config.h" #endif +#define GST_USE_UNSTABLE_API 1 + #include #include +#include #include #include #include @@ -102,7 +105,6 @@ */ GST_DEBUG_CATEGORY_STATIC (camerabin_test); #define GST_CAT_DEFAULT camerabin_test - typedef struct _ResultType { GstClockTime avg; @@ -533,6 +535,7 @@ run_pipeline (gpointer user_data) GstCaps *preview_caps = NULL; gchar *filename_str = NULL; GString *filename_buffer = NULL; + GstElement *video_source = NULL; g_object_set (camera_bin, "mode", mode, NULL); @@ -561,14 +564,21 @@ run_pipeline (gpointer user_data) g_free (filename_str); - g_object_set (camera_bin, "ev-compensation", ev_compensation, NULL); - g_object_set (camera_bin, "aperture", aperture, NULL); - g_object_set (camera_bin, "flash-mode", flash_mode, NULL); - g_object_set (camera_bin, "scene-mode", scene_mode, NULL); - g_object_set (camera_bin, "exposure", exposure, NULL); - g_object_set (camera_bin, "iso-speed", iso_speed, NULL); - g_object_set (camera_bin, "white-balance-mode", wb_mode, NULL); - g_object_set (camera_bin, "colour-tone-mode", color_mode, NULL); + g_object_get (camera_bin, "video-source", &video_source, NULL); + 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); + } + g_object_unref (video_source); + } g_object_set (camera_bin, "mute", mute, NULL); g_object_set (camera_bin, "zoom", zoom, NULL); -- 2.7.4