[maemo-commits] [maemo-commits] r17863 - projects/haf/trunk/hildon-welcome/src
From: subversion at stage.maemo.org subversion at stage.maemo.orgDate: Mon Mar 30 14:47:14 EEST 2009
- Previous message: [maemo-commits] r17862 - in projects/haf/trunk/libmatchbox2: . debian matchbox/client-types matchbox/core
- Next message: [maemo-commits] r17865 - projects/haf/trunk/hildon-welcome/src
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Author: schulhof
Date: 2009-03-30 14:47:04 +0300 (Mon, 30 Mar 2009)
New Revision: 17863
Modified:
projects/haf/trunk/hildon-welcome/src/tmp.c
Log:
Changes afoot
Modified: projects/haf/trunk/hildon-welcome/src/tmp.c
===================================================================
--- projects/haf/trunk/hildon-welcome/src/tmp.c 2009-03-30 11:28:28 UTC (rev 17862)
+++ projects/haf/trunk/hildon-welcome/src/tmp.c 2009-03-30 11:47:04 UTC (rev 17863)
@@ -13,13 +13,6 @@
: "GST_STATE_PLAYING")
-static void
-no_more_pads(GstElement *src, GstElement *dst)
-{
- g_print("no_more_pads: Linking src to dst\n");
- gst_element_link(src, dst);
-}
-
static GstElement *
create_bin(char *fname, GstElement *sink)
{
@@ -31,10 +24,10 @@
bin = gst_bin_new(name);
g_free(name);
- filesrc = gst_element_factory_make("filesrc", "the-filesrc");
+ filesrc = gst_element_factory_make("filesrc", NULL);
g_object_set(G_OBJECT(filesrc), "location", fname, NULL);
- decodebin2 = gst_element_factory_make("decodebin2", "the-decodebin2");
- g_signal_connect(G_OBJECT(decodebin2), "no-more-pads", (GCallback)no_more_pads, sink);
+ decodebin2 = gst_element_factory_make("decodebin2", NULL);
+ g_signal_connect(G_OBJECT(decodebin2), "no-more-pads", (GCallback)gst_element_link, sink);
gst_bin_add_many(GST_BIN(bin), filesrc, decodebin2, NULL);
gst_element_link(filesrc, decodebin2);
@@ -42,7 +35,7 @@
}
static void
-play_file(GstElement *pipeline, char *filename, GstElement *audiosink)
+play_file(GstElement *pipeline, char *audio, char *video, GstElement *audiosink, GstElement *videosink)
{
GstBus *bus = gst_pipeline_get_bus(GST_PIPELINE(pipeline));
@@ -53,7 +46,7 @@
GstMessage *msg = NULL;
GstElement *new_bin = NULL;
- new_bin = create_bin(filename, audiosink);
+ new_bin = create_bin(audio, video, audiosink, videosink);
gst_bin_add(GST_BIN(pipeline), new_bin);
gst_element_set_state(pipeline, GST_STATE_PAUSED);
gst_element_send_event(pipeline,
@@ -85,9 +78,6 @@
/* fall through */
case GST_MESSAGE_SEGMENT_DONE:
g_print("play_file: SEGMENT_DONE\n");
- gst_element_set_locked_state(new_bin, TRUE);
- gst_element_set_state(new_bin, GST_STATE_NULL);
- gst_bin_remove(GST_BIN(pipeline), new_bin);
keep_looping = FALSE;
break;
@@ -97,6 +87,14 @@
gst_message_unref(msg);
}
+
+ gst_element_set_state(new_bin, GST_STATE_NULL);
+ gst_bin_remove(GST_BIN(pipeline), new_bin);
+
+ /* Flush the bus before unrefing */
+ gst_bus_set_flushing(bus, TRUE);
+ gst_bus_set_flushing(bus, FALSE);
+ gst_object_unref(bus);
}
g_print("play_file: === Exiting with \"%s\"\n", filename);
@@ -106,13 +104,29 @@
main(int argc, char **argv)
{
int Nix;
- GstElement *pipeline = NULL, *audiosink;
+ GstElement *pipeline = NULL, *audiosink, *videosink, *mixer = NULL;
gst_init(&argc, &argv);
if (argc > 1)
if ((pipeline = gst_pipeline_new("sequence-player"))) {
- audiosink = gst_element_factory_make("autoaudiosink", "the-audio-sink");
+ GList *ll_mixers = NULL;
+
+ audiosink = gst_element_factory_make("autoaudiosink", NULL);
+ videosink = gst_element_factory_make("autovideosink", NULL);
+ ll_mixers = gst_audio_default_registry_mixer_filter(NULL, TRUE, NULL);
+ if (ll_mixers) {
+ mixer = ll_mixers->data;
+ g_list_free(ll_mixers);
+ }
gst_bin_add(GST_BIN(pipeline), audiosink);
+ gst_bin_add(GST_BIN(pipeline), videosink);
+ if (mixer) {
+ /* If a mixer was found, push the mixer in front of the audio sink */
+ g_print("Found mixer of type %s\n", g_type_name(G_TYPE_FROM_INSTANCE(mixer)));
+ gst_bin_add(GST_BIN(pipeline), mixer);
+ gst_element_link(mixer, audiosink);
+ audiosink = mixer;
+ }
for (Nix = 1 ; Nix < argc ; Nix++)
play_file(pipeline, argv[Nix], audiosink);
gst_element_set_state(pipeline, GST_STATE_NULL);
- Previous message: [maemo-commits] r17862 - in projects/haf/trunk/libmatchbox2: . debian matchbox/client-types matchbox/core
- Next message: [maemo-commits] r17865 - projects/haf/trunk/hildon-welcome/src
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
