summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorLionel Landwerlin <llandwerlin@gmail.com>2013-02-12 18:07:27 +0000
committerLionel Landwerlin <llandwerlin@gmail.com>2013-03-18 16:24:19 +0000
commit43c904845e0e804b48f1dc5d800ad097c5d938f0 (patch)
tree9f5f324f680a892d1064c46084a8952ac40f8067 /examples
parent9e4ca9594d72592ce370fef7c4365d7a52f32e1b (diff)
downloadclutter-gst-43c904845e0e804b48f1dc5d800ad097c5d938f0.tar.gz
Break API and concepts around VideoTexture
Diffstat (limited to 'examples')
-rw-r--r--examples/camera-player.c94
-rw-r--r--examples/video-player.c66
-rw-r--r--examples/video-sink.c47
3 files changed, 93 insertions, 114 deletions
diff --git a/examples/camera-player.c b/examples/camera-player.c
index 1b816a7..e02ed5e 100644
--- a/examples/camera-player.c
+++ b/examples/camera-player.c
@@ -33,6 +33,7 @@ typedef struct _CameraApp
{
ClutterActor *stage;
ClutterActor *camera_actor;
+ ClutterGstCamera *camera_player;
const GPtrArray *camera_devices;
guint selected_camera_device;
gboolean decrease_selected;
@@ -57,24 +58,20 @@ update_gamma (CameraApp *app)
{
gdouble min, max, cur;
- if (!clutter_gst_camera_actor_supports_gamma_correction (
- CLUTTER_GST_CAMERA_ACTOR (app->camera_actor)))
+ if (!clutter_gst_camera_supports_gamma_correction (app->camera_player))
{
g_print ("Cannot update gamma, not supported\n");
return;
}
- if (!clutter_gst_camera_actor_get_gamma_range (
- CLUTTER_GST_CAMERA_ACTOR (app->camera_actor),
- &min, &max, NULL))
+ if (!clutter_gst_camera_get_gamma_range (app->camera_player,
+ &min, &max, NULL))
{
g_print ("Cannot update gamma, unable to get allowed range\n");
return;
}
- if (!clutter_gst_camera_actor_get_gamma (
- CLUTTER_GST_CAMERA_ACTOR (app->camera_actor),
- &cur))
+ if (!clutter_gst_camera_get_gamma (app->camera_player, &cur))
{
g_print ("Cannot update gamma, unable to get current value\n");
return;
@@ -98,9 +95,7 @@ update_gamma (CameraApp *app)
}
g_print ("\tnew value: %0.2f\n", cur);
- clutter_gst_camera_actor_set_gamma (
- CLUTTER_GST_CAMERA_ACTOR (app->camera_actor),
- cur);
+ clutter_gst_camera_set_gamma (app->camera_player, cur);
}
static void
@@ -109,8 +104,7 @@ update_color_balance (CameraApp *app,
{
gdouble min, max, cur;
- if (!clutter_gst_camera_actor_supports_color_balance (
- CLUTTER_GST_CAMERA_ACTOR (app->camera_actor)))
+ if (!clutter_gst_camera_supports_color_balance (app->camera_player))
{
g_print ("Cannot update color balance property %s, "
"not supported\n",
@@ -118,9 +112,8 @@ update_color_balance (CameraApp *app,
return;
}
- if (!clutter_gst_camera_actor_get_color_balance_property_range (
- CLUTTER_GST_CAMERA_ACTOR (app->camera_actor),
- property, &min, &max, NULL))
+ if (!clutter_gst_camera_get_color_balance_property_range (app->camera_player,
+ property, &min, &max, NULL))
{
g_print ("Cannot update color balance property %s, "
"unable to get allowed range\n",
@@ -128,9 +121,8 @@ update_color_balance (CameraApp *app,
return;
}
- if (!clutter_gst_camera_actor_get_color_balance_property (
- CLUTTER_GST_CAMERA_ACTOR (app->camera_actor),
- property, &cur))
+ if (!clutter_gst_camera_get_color_balance_property (app->camera_player,
+ property, &cur))
{
g_print ("Cannot update color balance property %s, "
"unable to get current value\n",
@@ -156,9 +148,8 @@ update_color_balance (CameraApp *app,
}
g_print ("\tnew value: %0.2f\n", cur);
- clutter_gst_camera_actor_set_color_balance_property (
- CLUTTER_GST_CAMERA_ACTOR (app->camera_actor),
- property, cur);
+ clutter_gst_camera_set_color_balance_property (app->camera_player,
+ property, cur);
}
static gboolean
@@ -214,8 +205,7 @@ input_cb (ClutterStage *stage,
g_print ("Selecting device %s (node=%s)\n",
clutter_gst_camera_device_get_name (device),
clutter_gst_camera_device_get_node (device));
- clutter_gst_camera_actor_set_camera_device (
- CLUTTER_GST_CAMERA_ACTOR (app->camera_actor), device);
+ clutter_gst_camera_set_camera_device (app->camera_player, device);
break;
}
@@ -229,16 +219,13 @@ input_cb (ClutterStage *stage,
gchar *filename;
static guint photos_cnt = 0;
- if (clutter_gst_camera_actor_is_recording_video (
- CLUTTER_GST_CAMERA_ACTOR (app->camera_actor)))
+ if (clutter_gst_camera_is_recording_video (app->camera_player))
{
g_print ("Stopping video recording\n");
- clutter_gst_camera_actor_stop_video_recording (
- CLUTTER_GST_CAMERA_ACTOR (app->camera_actor));
+ clutter_gst_camera_stop_video_recording (app->camera_player);
}
- else if (!clutter_gst_camera_actor_is_ready_for_capture (
- CLUTTER_GST_CAMERA_ACTOR (app->camera_actor)))
+ else if (!clutter_gst_camera_is_ready_for_capture (app->camera_player))
g_print ("Unable to record video as the camera is not ready for capture\n");
else
{
@@ -246,9 +233,8 @@ input_cb (ClutterStage *stage,
filename = g_strdup_printf ("camera-video-%d.ogv", photos_cnt++);
- clutter_gst_camera_actor_start_video_recording (
- CLUTTER_GST_CAMERA_ACTOR (app->camera_actor),
- filename);
+ clutter_gst_camera_start_video_recording (app->camera_player,
+ filename);
g_free (filename);
}
break;
@@ -259,11 +245,9 @@ input_cb (ClutterStage *stage,
gchar *filename;
static guint photos_cnt = 0;
- if (clutter_gst_camera_actor_is_recording_video (
- CLUTTER_GST_CAMERA_ACTOR (app->camera_actor)))
+ if (clutter_gst_camera_is_recording_video (app->camera_player))
g_print ("Unable to take photo as the camera is recording video\n");
- else if (!clutter_gst_camera_actor_is_ready_for_capture (
- CLUTTER_GST_CAMERA_ACTOR (app->camera_actor)))
+ else if (!clutter_gst_camera_is_ready_for_capture (app->camera_player))
g_print ("Unable to take photo as the camera is not ready for capture\n");
else
{
@@ -271,9 +255,8 @@ input_cb (ClutterStage *stage,
filename = g_strdup_printf ("camera-photo-%d.jpg", photos_cnt++);
- clutter_gst_camera_actor_take_photo (
- CLUTTER_GST_CAMERA_ACTOR (app->camera_actor),
- filename);
+ clutter_gst_camera_take_photo (app->camera_player,
+ filename);
g_free (filename);
}
break;
@@ -289,8 +272,7 @@ input_cb (ClutterStage *stage,
{
g_print ("ERROR: Unable to create 'dicetv' element, cannot set filter\n");
}
- ret = clutter_gst_camera_actor_set_filter (
- CLUTTER_GST_CAMERA_ACTOR (app->camera_actor), filter);
+ ret = clutter_gst_camera_set_filter (app->camera_player, filter);
if (ret)
g_print ("Filter set successfully\n");
else
@@ -300,8 +282,7 @@ input_cb (ClutterStage *stage,
}
case CLUTTER_r:
- clutter_gst_camera_actor_remove_filter (
- CLUTTER_GST_CAMERA_ACTOR (app->camera_actor));
+ clutter_gst_camera_remove_filter (app->camera_player);
break;
default:
@@ -316,7 +297,7 @@ input_cb (ClutterStage *stage,
}
static void
-ready_for_capture (ClutterGstCameraActor *camera_actor,
+ready_for_capture (ClutterGstCamera *camera_player,
gboolean ready)
{
if (ready)
@@ -324,13 +305,13 @@ ready_for_capture (ClutterGstCameraActor *camera_actor,
}
static void
-photo_saved (ClutterGstCameraActor *camera_actor)
+photo_saved (ClutterGstCamera *camera_player)
{
g_print ("Photo saved!\n");
}
static void
-video_saved (ClutterGstCameraActor *camera_actor)
+video_saved (ClutterGstCamera *camera_player)
{
g_print ("Video saved!\n");
}
@@ -406,16 +387,16 @@ main (int argc, char *argv[])
app = g_new0(CameraApp, 1);
app->stage = stage;
- app->camera_actor = clutter_gst_camera_actor_new ();
+ app->camera_actor = g_object_new (CLUTTER_GST_TYPE_ACTOR, NULL);
- if (app->camera_actor == NULL)
+ app->camera_player = clutter_gst_camera_new ();
+ if (app->camera_player == NULL)
{
- g_error ("failed to create camera_actor");
+ g_error ("failed to create camera player");
return EXIT_FAILURE;
}
- app->camera_devices = clutter_gst_camera_actor_get_camera_devices (
- CLUTTER_GST_CAMERA_ACTOR (app->camera_actor));
+ app->camera_devices = clutter_gst_camera_get_camera_devices (app->camera_player);
if (!app->camera_devices)
{
g_error ("no suitable camera device available");
@@ -435,13 +416,13 @@ main (int argc, char *argv[])
}
app->selected_camera_device = 0;
- g_signal_connect (app->camera_actor, "ready-for-capture",
+ g_signal_connect (app->camera_player, "ready-for-capture",
G_CALLBACK (ready_for_capture),
app);
- g_signal_connect (app->camera_actor, "photo-saved",
+ g_signal_connect (app->camera_player, "photo-saved",
G_CALLBACK (photo_saved),
app);
- g_signal_connect (app->camera_actor, "video-saved",
+ g_signal_connect (app->camera_player, "video-saved",
G_CALLBACK (video_saved),
app);
/* Handle it ourselves so can scale up for fullscreen better */
@@ -457,8 +438,7 @@ main (int argc, char *argv[])
/* Hook up other events */
g_signal_connect (stage, "event", G_CALLBACK (input_cb), app);
- clutter_gst_camera_actor_set_playing (
- CLUTTER_GST_CAMERA_ACTOR (app->camera_actor), TRUE);
+ clutter_gst_player_set_playing (CLUTTER_GST_PLAYER (app->camera_player), TRUE);
clutter_actor_show (stage);
diff --git a/examples/video-player.c b/examples/video-player.c
index 1d1ebbf..69c9364 100644
--- a/examples/video-player.c
+++ b/examples/video-player.c
@@ -41,6 +41,7 @@ typedef struct _VideoApp
ClutterActor *stage;
ClutterActor *vactor;
+ ClutterGstPlayback *player;
ClutterActor *control;
ClutterActor *control_bg;
@@ -163,16 +164,16 @@ toggle_pause_state (VideoApp *app)
if (app->paused)
{
- clutter_gst_player_set_playing (CLUTTER_GST_PLAYER(app->vactor),
- TRUE);
+ clutter_gst_player_set_playing (CLUTTER_GST_PLAYER (app->player),
+ TRUE);
app->paused = FALSE;
clutter_actor_hide (app->control_play);
clutter_actor_show (app->control_pause);
}
else
{
- clutter_gst_player_set_playing (CLUTTER_GST_PLAYER(app->vactor),
- FALSE);
+ clutter_gst_player_set_playing (CLUTTER_GST_PLAYER (app->player),
+ FALSE);
app->paused = TRUE;
clutter_actor_hide (app->control_pause);
clutter_actor_show (app->control_play);
@@ -232,8 +233,7 @@ input_cb (ClutterStage *stage,
progress = (gdouble) dist / SEEK_W;
- clutter_gst_player_set_progress (CLUTTER_GST_PLAYER (app->vactor),
- progress);
+ clutter_gst_playback_set_progress (app->player, progress);
}
}
handled = TRUE;
@@ -302,10 +302,10 @@ input_cb (ClutterStage *stage,
}
static void
-size_change (ClutterActor *actor,
- gint base_width,
- gint base_height,
- VideoApp *app)
+size_change (ClutterGstPlayer *player,
+ gint base_width,
+ gint base_height,
+ VideoApp *app)
{
ClutterActor *stage = app->stage;
gfloat new_x, new_y, new_width, new_height;
@@ -317,7 +317,9 @@ size_change (ClutterActor *actor,
/* base_width and base_height are the actual dimensions of the buffers before
* taking the pixel aspect ratio into account. We need to get the actual
* size of the actor to display */
- clutter_actor_get_size (actor, &frame_width, &frame_height);
+ /* clutter_actor_get_size (app->vactor, &frame_width, &frame_height); */
+ frame_width = base_width;
+ frame_height = base_height;
new_height = (frame_height * stage_width) / frame_width;
if (new_height <= stage_height)
@@ -336,8 +338,8 @@ size_change (ClutterActor *actor,
new_y = 0;
}
- clutter_actor_set_position (actor, new_x, new_y);
- clutter_actor_set_size (actor, new_width, new_height);
+ clutter_actor_set_position (app->vactor, new_x, new_y);
+ clutter_actor_set_size (app->vactor, new_width, new_height);
}
static void
@@ -370,8 +372,7 @@ tick (GObject *object,
GParamSpec *pspec,
VideoApp *app)
{
- ClutterGstPlayer *vactor = CLUTTER_GST_PLAYER (object);
- gdouble progress = clutter_gst_player_get_progress (vactor);
+ gdouble progress = clutter_gst_playback_get_progress (app->player);
clutter_actor_set_size (app->control_seekbar,
progress * SEEK_W,
@@ -384,7 +385,7 @@ on_video_actor_eos (ClutterGstPlayer *player,
{
if (opt_loop)
{
- clutter_gst_player_set_progress (player, 0.0);
+ clutter_gst_playback_set_progress (CLUTTER_GST_PLAYBACK (player), 0.0);
clutter_gst_player_set_playing (player, TRUE);
}
}
@@ -509,7 +510,10 @@ main (int argc, char *argv[])
app = g_new0(VideoApp, 1);
app->stage = stage;
- app->vactor = clutter_gst_video_actor_new ();
+ app->vactor = g_object_new (CLUTTER_GST_TYPE_ACTOR, NULL);
+ app->player = clutter_gst_playback_new ();
+
+ clutter_gst_actor_set_player (CLUTTER_GST_ACTOR (app->vactor), CLUTTER_GST_PLAYER (app->player));
if (app->vactor == NULL)
g_error("failed to create vactor");
@@ -519,10 +523,10 @@ main (int argc, char *argv[])
* goes to the key frame position that can be quite far from where you
* clicked. Using the ACCURATE flag tells playbin2 to seek to the actual
* frame */
- clutter_gst_player_set_seek_flags (CLUTTER_GST_PLAYER (app->vactor),
- CLUTTER_GST_SEEK_FLAG_ACCURATE);
+ clutter_gst_playback_set_seek_flags (app->player,
+ CLUTTER_GST_SEEK_FLAG_ACCURATE);
- g_signal_connect (app->vactor,
+ g_signal_connect (app->player,
"eos",
G_CALLBACK (on_video_actor_eos),
app);
@@ -532,13 +536,9 @@ main (int argc, char *argv[])
g_print ("Remote media detected, setting up buffering\n");
/* configure to 10 seconds of buffer duration */
- clutter_gst_player_set_buffer_duration (
- CLUTTER_GST_PLAYER (app->vactor),
- 10 * GST_SECOND);
- clutter_gst_player_set_buffering_mode (
- CLUTTER_GST_PLAYER (app->vactor),
- CLUTTER_GST_BUFFERING_MODE_STREAM);
- g_signal_connect (app->vactor,
+ clutter_gst_playback_set_buffer_duration (app->player, 10 * GST_SECOND);
+ clutter_gst_playback_set_buffering_mode (app->player, CLUTTER_GST_BUFFERING_MODE_STREAM);
+ g_signal_connect (app->player,
"notify::buffer-fill",
G_CALLBACK (on_video_actor_notify_buffer_fill),
app);
@@ -557,20 +557,20 @@ main (int argc, char *argv[])
NULL);
/* Handle it ourselves so can scale up for fullscreen better */
- g_signal_connect_after (app->vactor,
+ g_signal_connect_after (app->player,
"size-change",
G_CALLBACK (size_change), app);
/* Load up out video actor */
- clutter_gst_player_set_uri (CLUTTER_GST_PLAYER (app->vactor), uri);
+ clutter_gst_playback_set_filename (app->player, uri);
- if (clutter_gst_player_is_live_media (CLUTTER_GST_PLAYER (app->vactor)))
+ if (clutter_gst_playback_is_live_media (app->player))
g_print ("Playing live media\n");
else
g_print ("Playing non-live media\n");
/* Set up things so that a visualisation is played if there's no video */
- pipe = clutter_gst_player_get_pipeline (CLUTTER_GST_PLAYER (app->vactor));
+ pipe = clutter_gst_player_get_pipeline (CLUTTER_GST_PLAYER (app->player));
if (!pipe)
g_error ("Unable to get gstreamer pipeline!\n");
@@ -659,11 +659,11 @@ main (int argc, char *argv[])
/* Hook up other events */
g_signal_connect (stage, "event", G_CALLBACK (input_cb), app);
- g_signal_connect (app->vactor,
+ g_signal_connect (app->player,
"notify::progress", G_CALLBACK (tick),
app);
- clutter_gst_player_set_playing (CLUTTER_GST_PLAYER (app->vactor), TRUE);
+ clutter_gst_player_set_playing (CLUTTER_GST_PLAYER (app->player), TRUE);
clutter_actor_show (stage);
diff --git a/examples/video-sink.c b/examples/video-sink.c
index 82030d7..9fc7ab6 100644
--- a/examples/video-sink.c
+++ b/examples/video-sink.c
@@ -29,10 +29,10 @@
#include <clutter-gst/clutter-gst.h>
void
-size_change (ClutterActor *actor,
- gint width,
- gint height,
- gpointer user_data)
+size_change (ClutterGstPlayer *player,
+ gint width,
+ gint height,
+ ClutterActor *actor)
{
ClutterActor *stage;
gfloat new_x, new_y, new_width, new_height;
@@ -68,14 +68,14 @@ size_change (ClutterActor *actor,
int
main (int argc, char *argv[])
{
- ClutterTimeline *timeline;
- ClutterActor *stage;
- ClutterActor *actor;
- GstPipeline *pipeline;
- GstElement *src;
- GstElement *warp;
- GstElement *colorspace;
- GstElement *sink;
+ ClutterTimeline *timeline;
+ ClutterActor *stage;
+ ClutterActor *actor;
+ GstElement *src;
+ GstElement *warp;
+ GstElement *bin;
+ GstElement *pipeline;
+ ClutterGstPlayback *player;
if (argc < 1)
{
@@ -98,24 +98,23 @@ main (int argc, char *argv[])
actor = g_object_new (CLUTTER_GST_TYPE_ACTOR, NULL);
- g_signal_connect (actor,
- "size-change",
- G_CALLBACK (size_change), NULL);
-
/* Set up pipeline */
- pipeline = GST_PIPELINE (gst_pipeline_new (NULL));
+ player = clutter_gst_playback_new ();
+ pipeline = clutter_gst_player_get_pipeline (CLUTTER_GST_PLAYER (player));
+
+ g_signal_connect (player, "size-change",
+ G_CALLBACK (size_change), actor);
src = gst_element_factory_make ("videotestsrc", NULL);
warp = gst_element_factory_make ("warptv", NULL);
- colorspace = gst_element_factory_make ("videoconvert", NULL);
- sink = gst_element_factory_make ("cluttersink", NULL);
- g_object_set (sink, "actor", actor, NULL);
+ bin = gst_bin_new ("video-test-source");
+
+ gst_bin_add_many (GST_BIN (bin), src, warp, NULL);
+ gst_element_link_many (src, warp, NULL);
- // g_object_set (src , "pattern", 10, NULL);
+ g_object_set (pipeline, "source", bin);
- gst_bin_add_many (GST_BIN (pipeline), src, warp, colorspace, sink, NULL);
- gst_element_link_many (src, warp, colorspace, sink, NULL);
- gst_element_set_state (GST_ELEMENT(pipeline), GST_STATE_PLAYING);
+ clutter_gst_player_set_playing (CLUTTER_GST_PLAYER (player), TRUE);
/* start the timeline */
clutter_timeline_start (timeline);