static void bus_msg_cb (GstBus * bus, GstMessage * msg, gpointer pipeline) { switch (msg->type) { case GST_MESSAGE_ERROR:{ GST_ERROR ("%s bus error: %" GST_PTR_FORMAT, GST_ELEMENT_NAME (pipeline), msg); GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS (GST_BIN (pipeline), GST_DEBUG_GRAPH_SHOW_ALL, "bus_error"); fail ("Error received on %s bus", GST_ELEMENT_NAME (pipeline)); break; } case GST_MESSAGE_WARNING:{ GST_WARNING ("%s bus: %" GST_PTR_FORMAT, GST_ELEMENT_NAME (pipeline), msg); GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS (GST_BIN (pipeline), GST_DEBUG_GRAPH_SHOW_ALL, "warning"); break; } case GST_MESSAGE_STATE_CHANGED:{ GST_TRACE ("%s bus event: %" GST_PTR_FORMAT, GST_ELEMENT_NAME (pipeline), msg); break; } default: break; } }
static gboolean timer_cb (gpointer data) { /* Agnostic bin might be now ready to go to Playing state */ GST_INFO ("Connecting appsink to receive buffers"); GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS (GST_BIN (test_pipeline), GST_DEBUG_GRAPH_SHOW_ALL, "timer_dot"); fakesink = gst_element_factory_make ("fakesink", NULL); gst_bin_add (GST_BIN (test_pipeline), fakesink); gst_element_set_state (fakesink, GST_STATE_PLAYING); gst_element_set_state (httpep, GST_STATE_PLAYING); gst_element_link_pads (httpep, "video_src_%u", fakesink, "sink"); /* Start getting data from Internet */ gst_element_set_state (src_pipeline, GST_STATE_PLAYING); GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS (GST_BIN (src_pipeline), GST_DEBUG_GRAPH_SHOW_ALL, "src_getting_data"); return FALSE; }
static void bus_message (GstBus * bus, GstMessage * msg, gpointer pipe) { switch (GST_MESSAGE_TYPE (msg)) { case GST_MESSAGE_ERROR:{ gchar *error_file = g_strdup_printf ("error-%s", GST_OBJECT_NAME (pipe)); GST_ERROR ("Error: %" GST_PTR_FORMAT, msg); GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS (GST_BIN (pipe), GST_DEBUG_GRAPH_SHOW_ALL, error_file); g_free (error_file); GST_ERROR ("Error received on bus in pipeline: %s", GST_OBJECT_NAME (pipe)); g_atomic_int_set (&error, 1); g_main_loop_quit (loop); break; } case GST_MESSAGE_WARNING:{ gchar *warn_file = g_strdup_printf ("warning-%s", GST_OBJECT_NAME (pipe)); GST_WARNING ("Warning: %" GST_PTR_FORMAT, msg); GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS (GST_BIN (pipe), GST_DEBUG_GRAPH_SHOW_ALL, warn_file); g_free (warn_file); break; } case GST_MESSAGE_EOS: GST_DEBUG ("Received eos event"); g_main_loop_quit (loop); break; default: break; } }
static void bus_msg (GstBus * bus, GstMessage * msg, gpointer pipe) { switch (GST_MESSAGE_TYPE (msg)) { case GST_MESSAGE_ERROR:{ GST_ERROR ("Error: %" GST_PTR_FORMAT, msg); GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS (GST_BIN (pipe), GST_DEBUG_GRAPH_SHOW_ALL, "error"); fail ("Error received on bus"); break; } case GST_MESSAGE_WARNING:{ GST_WARNING ("Warning: %" GST_PTR_FORMAT, msg); GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS (GST_BIN (pipe), GST_DEBUG_GRAPH_SHOW_ALL, "warning"); break; } case GST_MESSAGE_EOS:{ GST_INFO ("EOS received"); g_main_loop_quit (loop); break; } case GST_MESSAGE_STATE_CHANGED:{ if (g_str_has_prefix (GST_OBJECT_NAME (msg->src), "agnosticbin")) { GST_INFO ("Event: %" GST_PTR_FORMAT, msg); } } default: break; } }
GST_END_TEST static void bus_msg (GstBus * bus, GstMessage * msg, gpointer pipe) { switch (GST_MESSAGE_TYPE (msg)) { case GST_MESSAGE_ERROR:{ GST_ERROR ("Error: %" GST_PTR_FORMAT, msg); GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS (GST_BIN (pipe), GST_DEBUG_GRAPH_SHOW_ALL, "error"); fail ("Error received on bus"); break; } case GST_MESSAGE_EOS:{ g_main_loop_quit (loop); break; } case GST_MESSAGE_WARNING:{ GST_ERROR ("Warning: %" GST_PTR_FORMAT, msg); GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS (GST_BIN (pipe), GST_DEBUG_GRAPH_SHOW_ALL, "error"); fail ("Warning received on bus"); break; } default: break; } }
static void bus_msg (GstBus * bus, GstMessage * msg, gpointer pipe) { switch (GST_MESSAGE_TYPE (msg)) { case GST_MESSAGE_ERROR:{ gchar *error_file = g_strdup_printf ("error-%s", GST_OBJECT_NAME (pipe)); GST_ERROR ("Error: %" GST_PTR_FORMAT, msg); GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS (GST_BIN (pipe), GST_DEBUG_GRAPH_SHOW_ALL, error_file); g_free (error_file); fail ("Error received on bus"); break; } case GST_MESSAGE_WARNING:{ gchar *warn_file = g_strdup_printf ("warning-%s", GST_OBJECT_NAME (pipe)); GST_WARNING ("Warning: %" GST_PTR_FORMAT, msg); GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS (GST_BIN (pipe), GST_DEBUG_GRAPH_SHOW_ALL, warn_file); g_free (warn_file); break; } default: break; } }
static gboolean capture_bus_cb (GstBus * bus, GstMessage * message, gpointer data) { GMainLoop *loop = (GMainLoop *) data; const GstStructure *st; switch (GST_MESSAGE_TYPE (message)) { case GST_MESSAGE_ERROR:{ GError *err = NULL; gchar *debug = NULL; gst_message_parse_error (message, &err, &debug); GST_WARNING ("ERROR: %s [%s]", err->message, debug); g_error_free (err); g_free (debug); /* Write debug graph to file */ GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS (GST_BIN (camera), GST_DEBUG_GRAPH_SHOW_ALL, "camerabin.error"); fail_if (TRUE, "error while capturing"); g_main_loop_quit (loop); break; } case GST_MESSAGE_WARNING:{ GError *err = NULL; gchar *debug = NULL; gst_message_parse_warning (message, &err, &debug); GST_WARNING ("WARNING: %s [%s]", err->message, debug); g_error_free (err); g_free (debug); /* Write debug graph to file */ GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS (GST_BIN (camera), GST_DEBUG_GRAPH_SHOW_ALL, "camerabin.warning"); break; } case GST_MESSAGE_EOS: GST_DEBUG ("eos"); g_main_loop_quit (loop); break; default: st = gst_message_get_structure (message); if (st && gst_structure_has_name (st, "image-captured")) { gboolean ready = FALSE; GST_INFO ("image captured"); g_object_get (camera, "ready-for-capture", &ready, NULL); fail_if (!ready, "not ready for capture"); } break; } return TRUE; }
static gboolean slave_bus_msg (GstBus * bus, GstMessage * msg, gpointer data) { GstPipeline *pipeline = data; switch (GST_MESSAGE_TYPE (msg)) { case GST_MESSAGE_ERROR:{ GError *err; gchar *dbg; gst_message_parse_error (msg, &err, &dbg); g_printerr ("SLAVE: ERROR: %s\n", err->message); if (dbg != NULL) g_printerr ("SLAVE: ERROR debug information: %s\n", dbg); g_error_free (err); g_free (dbg); GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS (GST_BIN (pipeline), GST_DEBUG_GRAPH_SHOW_ALL, "ipc.slave.error"); break; } case GST_MESSAGE_WARNING:{ GError *err; gchar *dbg; gst_message_parse_warning (msg, &err, &dbg); g_printerr ("SLAVE: WARNING: %s\n", err->message); if (dbg != NULL) g_printerr ("SLAVE: WARNING debug information: %s\n", dbg); g_error_free (err); g_free (dbg); GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS (GST_BIN (pipeline), GST_DEBUG_GRAPH_SHOW_ALL, "ipc.slave.warning"); break; } case GST_MESSAGE_ASYNC_START: GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS (GST_BIN (pipeline), GST_DEBUG_GRAPH_SHOW_VERBOSE, "ipc.slave.async-start"); break; case GST_MESSAGE_ASYNC_DONE: GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS (GST_BIN (pipeline), GST_DEBUG_GRAPH_SHOW_ALL, "ipc.slave.async-done"); break; default: break; } return TRUE; }
static gboolean do_sprinkle (SprinkleState * state) { SourceInfo *info; gint i; /* first remove the oldest info */ info = state->infos[2]; if (info) remove_source (info); /* move sources */ for (i = 2; i > 0; i--) { state->infos[i] = state->infos[i - 1]; } /* add new source, stop adding sources after 10 rounds. */ if (state->count < 20) { state->infos[0] = add_source ( (gdouble) ((state->count * 100) + 200), ((gfloat) (state->count % 5) / 2.0 - 1.0)); state->count++; } else { state->infos[0] = NULL; } GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS (GST_BIN (pipeline), /*GST_DEBUG_GRAPH_SHOW_ALL, */ GST_DEBUG_GRAPH_SHOW_CAPS_DETAILS | GST_DEBUG_GRAPH_SHOW_STATES, "sprinkle3"); return TRUE; }
static GstBusSyncReply bus_sync_signal_handler (GstBus * bus, GstMessage * msg, gpointer data) { KmsRecorderEndpoint *self = KMS_RECORDER_ENDPOINT (data); if (GST_MESSAGE_TYPE (msg) == GST_MESSAGE_ERROR) { ErrorData *data; GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS (GST_BIN (self), GST_DEBUG_GRAPH_SHOW_ALL, GST_ELEMENT_NAME (self)); kms_base_media_muxer_dot_file (self->priv->mux); GST_ERROR_OBJECT (self, "Message %" GST_PTR_FORMAT, msg); data = create_error_data (self, msg); GST_ERROR_OBJECT (self, "Error: %" GST_PTR_FORMAT, msg); gst_task_pool_push (self->priv->pool, kms_recorder_endpoint_post_error, data, NULL); } else if (GST_MESSAGE_TYPE (msg) == GST_MESSAGE_EOS) { gst_task_pool_push (self->priv->pool, kms_recorder_endpoint_on_eos_message, self, NULL); } return GST_BUS_PASS; }
static void bus_msg (GstBus * bus, GstMessage * msg, gpointer pipe) { switch (GST_MESSAGE_TYPE (msg)) { case GST_MESSAGE_ERROR: { GError *err = NULL; gchar *dbg_info = NULL; gchar *err_str; GST_ERROR ("Error: %" GST_PTR_FORMAT, msg); GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS (GST_BIN (pipe), GST_DEBUG_GRAPH_SHOW_ALL, "bus_error"); gst_message_parse_error (msg, &err, &dbg_info); err_str = g_strdup_printf ("Error received on bus: %s: %s", err->message, dbg_info); g_error_free (err); g_free (dbg_info); fail (err_str); g_free (err_str); break; } case GST_MESSAGE_STATE_CHANGED: { GST_TRACE ("Event: %" GST_PTR_FORMAT, msg); break; } default: break; } }
static gboolean debug_graph (gpointer bin) { GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS (GST_BIN (bin), GST_DEBUG_GRAPH_SHOW_ALL, GST_ELEMENT_NAME (bin)); return FALSE; }
static gboolean bus_callback (GstBus * bus, GstMessage * message, gpointer data) { switch (GST_MESSAGE_TYPE (message)) { case GST_MESSAGE_ERROR:{ GError *err; gchar *debug; gst_message_parse_error (message, &err, &debug); g_print ("Error: %s\n", err->message); g_error_free (err); g_free (debug); /* Write debug graph to file */ GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS (GST_BIN (camerabin), GST_DEBUG_GRAPH_SHOW_ALL, "camerabin.error"); g_main_loop_quit (loop); break; } case GST_MESSAGE_STATE_CHANGED: if (GST_IS_BIN (GST_MESSAGE_SRC (message))) { GstState oldstate, newstate; gst_message_parse_state_changed (message, &oldstate, &newstate, NULL); GST_DEBUG_OBJECT (GST_MESSAGE_SRC (message), "state-changed: %s -> %s", gst_element_state_get_name (oldstate), gst_element_state_get_name (newstate)); } break; case GST_MESSAGE_EOS: /* end-of-stream */ GST_INFO ("got eos() - should not happen"); g_main_loop_quit (loop); break; case GST_MESSAGE_ELEMENT: if (GST_MESSAGE_SRC (message) == (GstObject *) camerabin) { const GstStructure *structure = gst_message_get_structure (message); if (gst_structure_has_name (structure, "image-done")) { #ifndef GST_DISABLE_GST_DEBUG const gchar *fname = gst_structure_get_string (structure, "filename"); GST_DEBUG ("image done: %s", fname); #endif if (capture_count < capture_total) { g_idle_add ((GSourceFunc) run_pipeline, NULL); } else { g_main_loop_quit (loop); } } } break; default: /* unhandled message */ break; } return TRUE; }
static void on_pad_added (GstElement * element, GstPad * pad, GstElement * pipeline) { GstElement *ipcpipelinesink; GstPad *sinkpad; GstCaps *caps; const GstStructure *structure; GstIterator *it; GValue elem = G_VALUE_INIT; int sockets[2]; gboolean create_sockets; caps = gst_pad_get_current_caps (pad); structure = gst_caps_get_structure (caps, 0); it = gst_bin_iterate_sinks (GST_BIN (pipeline)); if (gst_iterator_find_custom (it, find_ipcpipelinesink, &elem, (gpointer) gst_structure_get_name (structure))) { ipcpipelinesink = g_value_get_object (&elem); create_sockets = FALSE; g_value_reset (&elem); } else { ipcpipelinesink = gst_element_factory_make ("ipcpipelinesink", NULL); gst_bin_add (GST_BIN (pipeline), ipcpipelinesink); create_sockets = TRUE; } sinkpad = gst_element_get_static_pad (ipcpipelinesink, "sink"); if (gst_pad_link (pad, sinkpad) != GST_PAD_LINK_OK) { fprintf (stderr, "Failed to link ipcpipelinesink\n"); exit (1); } gst_object_unref (sinkpad); g_signal_connect (pad, "unlinked", (GCallback) on_pad_unlinked, pipeline); if (create_sockets) { if (socketpair (AF_UNIX, SOCK_STREAM, 0, sockets)) { fprintf (stderr, "Error creating sockets: %s\n", strerror (errno)); exit (1); } if (fcntl (sockets[0], F_SETFL, O_NONBLOCK) < 0 || fcntl (sockets[1], F_SETFL, O_NONBLOCK) < 0) { fprintf (stderr, "Error setting O_NONBLOCK on sockets: %s\n", strerror (errno)); exit (1); } g_object_set (ipcpipelinesink, "fdin", sockets[0], "fdout", sockets[0], NULL); printf ("new socket %d\n", sockets[1]); sendfd (pipes[1], sockets[1]); } gst_element_set_state (ipcpipelinesink, GST_STATE_PLAYING); GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS (GST_BIN (pipeline), GST_DEBUG_GRAPH_SHOW_ALL, "pad.added"); }
static VALUE rb_gst_bin_to_dot_file_with_ts(VALUE self, VALUE details, VALUE filename) { GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS(SELF(self), NUM2INT(details), RVAL2CSTR(filename)); return Qnil; }
static void player_eos (GstElement * player, gpointer user_data) { GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS (GST_BIN (pipeline), GST_DEBUG_GRAPH_SHOW_ALL, "playereos"); g_idle_add (stop_recorder, user_data); }
void kms_muxing_pipeline_dot_file (KmsMuxingPipeline * obj) { g_return_if_fail (obj != NULL); GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS (GST_BIN (obj->priv->pipeline), GST_DEBUG_GRAPH_SHOW_ALL, GST_ELEMENT_NAME (obj->priv->pipeline)); }
static gboolean timeout_check (gpointer pipeline) { GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS (GST_BIN (pipeline), GST_DEBUG_GRAPH_SHOW_ALL, "timeout_test_end"); GST_DEBUG ("Timeout"); return FALSE; }
static void _validate_report_added_cb (GstValidateRunner * runner, GstValidateReport * report, GstPipeline * pipeline) { if (report->level == GST_VALIDATE_REPORT_LEVEL_CRITICAL) { GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS (GST_BIN (pipeline), GST_DEBUG_GRAPH_SHOW_ALL, "ges-launch--validate-error"); } }
static gboolean timeout_check (gpointer pipeline) { gchar *timeout_file = g_strdup_printf ("timeout-%s", GST_OBJECT_NAME (pipeline)); GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS (GST_BIN (pipeline), GST_DEBUG_GRAPH_SHOW_ALL, timeout_file); g_free (timeout_file); return FALSE; }
static void bus_msg (GstBus * bus, GstMessage * msg, gpointer pipe) { switch (msg->type) { case GST_MESSAGE_ERROR:{ GST_ERROR ("Error: %" GST_PTR_FORMAT, msg); GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS (GST_BIN (pipe), GST_DEBUG_GRAPH_SHOW_ALL, "bus_error"); fail ("Error received on bus"); break; } case GST_MESSAGE_WARNING:{ GST_WARNING ("Warning: %" GST_PTR_FORMAT, msg); GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS (GST_BIN (pipe), GST_DEBUG_GRAPH_SHOW_ALL, "warning"); break; } default: break; } }
static void on_decoded_pad_added (GstElement * element, GstPad * pad, gpointer data) { GstBin *pipeline = data; GstCaps *caps; GstPad *cpad; const gchar *type; gchar *capsstr; caps = gst_pad_get_current_caps (pad); capsstr = gst_caps_to_string (caps); printf (" caps: %s\n", capsstr); g_free (capsstr); type = gst_structure_get_name (gst_caps_get_structure (caps, 0)); if (!strcmp (type, "video/x-raw")) { GstElement *c, *s; c = gst_element_factory_make ("videoconvert", NULL); s = gst_element_factory_make (arg_video_sink, NULL); gst_bin_add_many (GST_BIN (pipeline), c, s, NULL); gst_element_link_many (c, s, NULL); cpad = gst_element_get_static_pad (c, "sink"); gst_pad_link (pad, cpad); gst_object_unref (cpad); gst_element_set_state (s, GST_STATE_PLAYING); gst_element_set_state (c, GST_STATE_PLAYING); } else if (!strcmp (type, "audio/x-raw")) { GstElement *c, *s; c = gst_element_factory_make ("audioconvert", NULL); s = gst_element_factory_make (arg_audio_sink, NULL); gst_bin_add_many (GST_BIN (pipeline), c, s, NULL); gst_element_link_many (c, s, NULL); cpad = gst_element_get_static_pad (c, "sink"); gst_pad_link (pad, cpad); gst_object_unref (cpad); gst_element_set_state (s, GST_STATE_PLAYING); gst_element_set_state (c, GST_STATE_PLAYING); } else { GstElement *s; s = gst_element_factory_make ("fakesink", NULL); g_object_set (s, "sync", TRUE, "async", TRUE, NULL); gst_bin_add_many (GST_BIN (pipeline), s, NULL); cpad = gst_element_get_static_pad (s, "sink"); gst_pad_link (pad, cpad); gst_object_unref (cpad); gst_element_set_state (s, GST_STATE_PLAYING); } gst_caps_unref (caps); GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS (GST_BIN (pipeline), GST_DEBUG_GRAPH_SHOW_ALL, "decoded.pad.added"); }
static void play_agnosticbin_vp8_to_raw (void) { gboolean ret; GstElement *pipeline = gst_pipeline_new (NULL); GstBus *bus = gst_pipeline_get_bus (GST_PIPELINE (pipeline)); GstElement *videotestsrc = gst_element_factory_make ("videotestsrc", NULL); GstElement *vp8enc = gst_element_factory_make ("vp8enc", NULL); GstElement *agnosticbin = gst_element_factory_make ("agnosticbin", NULL); GstElement *capsfilter = gst_element_factory_make ("capsfilter", NULL); GstElement *fakesink = gst_element_factory_make ("fakesink", NULL); loop = g_main_loop_new (NULL, TRUE); GstCaps *caps; g_object_set (G_OBJECT (pipeline), "async-handling", TRUE, NULL); gst_bus_add_signal_watch (bus); g_signal_connect (bus, "message", G_CALLBACK (bus_msg), pipeline); mark_point (); g_object_set (G_OBJECT (videotestsrc), "num-buffers", 100, NULL); g_object_set (G_OBJECT (vp8enc), "keyframe-max-dist", 1, NULL); caps = gst_caps_new_empty_simple ("video/x-raw"); g_object_set (G_OBJECT (capsfilter), "caps", caps, NULL); gst_caps_unref (caps); mark_point (); gst_bin_add_many (GST_BIN (pipeline), videotestsrc, vp8enc, agnosticbin, capsfilter, fakesink, NULL); mark_point (); ret = gst_element_link_many (videotestsrc, vp8enc, agnosticbin, capsfilter, fakesink, NULL); fail_unless (ret); gst_element_set_state (pipeline, GST_STATE_PLAYING); mark_point (); g_main_loop_run (loop); mark_point (); GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS (GST_BIN (pipeline), GST_DEBUG_GRAPH_SHOW_ALL, "play_agnosticbin_vp8_to_raw_end"); gst_element_set_state (pipeline, GST_STATE_NULL); gst_bus_remove_signal_watch (bus); g_object_unref (bus); g_main_loop_unref (loop); g_object_unref (pipeline); }
GST_END_TEST GST_START_TEST (check_properties) { GstElement *filterelement, *filter; GstElementFactory *factory; gchar *filter_factory; filterelement = gst_element_factory_make ("filterelement", NULL); /* Default value for filter factory must be NULL */ g_object_get (G_OBJECT (filterelement), "filter_factory", &filter_factory, NULL); GST_DEBUG ("Got filter_factory property value : %s", filter_factory); fail_unless (filter_factory == NULL); /* Default value for filter must be NULL */ g_object_get (G_OBJECT (filterelement), "filter", &filter, NULL); GST_DEBUG ("Got filter property value : %" GST_PTR_FORMAT, filter); fail_unless (filter == NULL); /* Set factory */ filter_factory = "videoflip"; GST_DEBUG ("Setting property uri to : %s", filter_factory); g_object_set (G_OBJECT (filterelement), "filter_factory", filter_factory, NULL); g_object_get (G_OBJECT (filterelement), "filter", &filter, NULL); fail_unless (filter != NULL); factory = gst_element_get_factory (filter); fail_unless (factory != NULL); GST_DEBUG ("Got factory: %s", GST_OBJECT_NAME (factory)); fail_unless (g_strcmp0 (filter_factory, GST_OBJECT_NAME (factory)) == 0); GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS (GST_BIN (filterelement), GST_DEBUG_GRAPH_SHOW_ALL, "filter"); /* Reset factory */ filter_factory = "videocrop"; GST_DEBUG ("Setting property uri to : %s", filter_factory); g_object_set (G_OBJECT (filterelement), "filter_factory", filter_factory, NULL); g_object_get (G_OBJECT (filterelement), "filter", &filter, NULL); fail_unless (filter != NULL); factory = gst_element_get_factory (filter); fail_unless (factory != NULL); GST_DEBUG ("Got factory: %s", GST_OBJECT_NAME (factory)); /* Factory changes are not allowed */ fail_unless (g_strcmp0 (filter_factory, GST_OBJECT_NAME (factory))); gst_object_unref (filterelement); }
static GstBusSyncReply bus_sync_signal_handler (GstBus * bus, GstMessage * msg, gpointer data) { KmsRecorderEndpoint *self = KMS_RECORDER_ENDPOINT (data); if (GST_MESSAGE_TYPE (msg) == GST_MESSAGE_ERROR) { ErrorData *data; GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS (GST_BIN (self), GST_DEBUG_GRAPH_SHOW_ALL, GST_ELEMENT_NAME (self)); kms_base_media_muxer_dot_file (self->priv->mux); GST_ERROR_OBJECT (self, "Message %" GST_PTR_FORMAT, msg); data = create_error_data (self, msg); GST_ERROR_OBJECT (self, "Error: %" GST_PTR_FORMAT, msg); gst_task_pool_push (self->priv->pool, kms_recorder_endpoint_post_error, data, NULL); } else if (GST_MESSAGE_TYPE (msg) == GST_MESSAGE_EOS) { gst_task_pool_push (self->priv->pool, kms_recorder_endpoint_on_eos_message, self, NULL); } else if ((GST_MESSAGE_TYPE (msg) == GST_MESSAGE_STATE_CHANGED) && (GST_OBJECT_CAST (KMS_BASE_MEDIA_MUXER_GET_PIPELINE (self-> priv->mux)) == GST_MESSAGE_SRC (msg))) { GstState new_state, pending; gst_message_parse_state_changed (msg, NULL, &new_state, &pending); if (pending == GST_STATE_VOID_PENDING || (pending == GST_STATE_NULL && new_state == GST_STATE_READY)) { GST_DEBUG_OBJECT (self, "Pipeline changed state to %d", new_state); switch (new_state) { case GST_STATE_PLAYING: kms_recorder_endpoint_state_changed (self, KMS_URI_ENDPOINT_STATE_START); break; case GST_STATE_READY: kms_recorder_endpoint_state_changed (self, KMS_URI_ENDPOINT_STATE_STOP); break; default: GST_DEBUG_OBJECT (self, "Not raising event"); break; } } } return GST_BUS_PASS; }
static gboolean stop_recorder (gpointer user_data) { GstElement *recorder = GST_ELEMENT (user_data); GST_WARNING ("EOS Received. Stopping recorder %" GST_PTR_FORMAT, recorder); GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS (GST_BIN (pipeline), GST_DEBUG_GRAPH_SHOW_ALL, "before_stopping_recorder"); g_object_set (G_OBJECT (recorder), "state", KMS_URI_ENDPOINT_STATE_STOP, NULL); return FALSE; }
static void play_agnosticbin_raw_to_vorbis (void) { gboolean ret; GstElement *pipeline = gst_pipeline_new (NULL); GstBus *bus = gst_pipeline_get_bus (GST_PIPELINE (pipeline)); GstElement *agnosticbin = gst_element_factory_make ("agnosticbin", NULL); GstElement *audiotestsrc = gst_element_factory_make ("audiotestsrc", NULL); GstElement *vorbisdec = gst_element_factory_make ("vorbisdec", NULL); GstElement *fakesink = gst_element_factory_make ("fakesink", NULL); loop = g_main_loop_new (NULL, TRUE); g_object_set (G_OBJECT (pipeline), "async-handling", TRUE, NULL); gst_bus_add_signal_watch (bus); g_signal_connect (bus, "message", G_CALLBACK (bus_msg), pipeline); g_object_set (G_OBJECT (audiotestsrc), "num-buffers", 100, "is-live", TRUE, NULL); mark_point (); gst_bin_add_many (GST_BIN (pipeline), audiotestsrc, agnosticbin, vorbisdec, fakesink, NULL); mark_point (); ret = gst_element_link_many (audiotestsrc, agnosticbin, vorbisdec, fakesink, NULL); fail_unless (ret); gst_element_set_state (pipeline, GST_STATE_PLAYING); g_timeout_add_seconds (10, timeout_check, pipeline); mark_point (); g_main_loop_run (loop); mark_point (); GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS (GST_BIN (pipeline), GST_DEBUG_GRAPH_SHOW_ALL, __FUNCTION__); gst_element_set_state (pipeline, GST_STATE_NULL); gst_bus_remove_signal_watch (bus); g_object_unref (bus); g_main_loop_unref (loop); g_object_unref (pipeline); }
static gboolean mex_telepathy_channel_dump_pipeline (gpointer user_data) { MexTelepathyChannel *self = MEX_TELEPATHY_CHANNEL (user_data); if (self->priv && self->priv->pipeline) { GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS (GST_BIN (self->priv->pipeline), GST_DEBUG_GRAPH_SHOW_ALL, "call-handler"); return TRUE; } return FALSE; }
static gboolean timeout_check (gpointer pipeline) { gchar *timeout_file = g_strdup_printf ("timeout-%s", GST_OBJECT_NAME (pipeline)); GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS (GST_BIN (pipeline), GST_DEBUG_GRAPH_SHOW_ALL, timeout_file); g_free (timeout_file); GST_ERROR ("Test timeout on pipeline %s", GST_OBJECT_NAME (pipeline)); g_atomic_int_set (&error, 1); g_main_loop_quit (loop); return G_SOURCE_CONTINUE; }
static gboolean print_timedout_pipeline (GstElement * pipeline) { gchar *name; gchar *pipeline_name; pipeline_name = gst_element_get_name (pipeline); name = g_strdup_printf ("%s_timedout", pipeline_name); GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS (GST_BIN (pipeline), GST_DEBUG_GRAPH_SHOW_ALL, name); g_free (name); g_free (pipeline_name); return FALSE; }