static void gst_bus_dispose (GObject * object) { GstBus *bus; bus = GST_BUS (object); if (bus->queue) { GstMessage *message; g_mutex_lock (bus->queue_lock); do { message = g_queue_pop_head (bus->queue); if (message) gst_message_unref (message); } while (message != NULL); g_queue_free (bus->queue); bus->queue = NULL; g_mutex_unlock (bus->queue_lock); g_mutex_free (bus->queue_lock); bus->queue_lock = NULL; g_cond_free (bus->priv->queue_cond); bus->priv->queue_cond = NULL; } if (bus->priv->main_context) { g_main_context_unref (bus->priv->main_context); bus->priv->main_context = NULL; } G_OBJECT_CLASS (parent_class)->dispose (object); }
static void gst_bus_dispose (GObject * object) { GstBus *bus = GST_BUS (object); if (bus->priv->queue) { GstMessage *message; g_mutex_lock (&bus->priv->queue_lock); do { message = gst_atomic_queue_pop (bus->priv->queue); if (message) gst_message_unref (message); } while (message != NULL); gst_atomic_queue_unref (bus->priv->queue); bus->priv->queue = NULL; g_mutex_unlock (&bus->priv->queue_lock); g_mutex_clear (&bus->priv->queue_lock); if (bus->priv->poll) gst_poll_free (bus->priv->poll); bus->priv->poll = NULL; } G_OBJECT_CLASS (parent_class)->dispose (object); }
static void on_pipeline_proxy_signal(GDBusProxy *proxy, gchar *sender_name, gchar *signal_name, GVariant *parameters, gpointer user_data) { GstBus *bus = GST_BUS(user_data); g_print("Sender name: %s\n", sender_name); g_print("signal name: %s\n", signal_name); }
static void gst_bus_finalize (GObject * object) { GstBus *bus = GST_BUS (object); if (bus->priv->sync_handler_notify) bus->priv->sync_handler_notify (bus->priv->sync_handler_data); G_OBJECT_CLASS (parent_class)->finalize (object); }
static void gst_bus_get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspec) { GstBus *bus; bus = GST_BUS (object); switch (prop_id) { default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } }
static VALUE rg_set_xwindow_id_with_buswatch(VALUE self, VALUE bus, VALUE x_window_id) { struct xid_callback_data* xid_cb_data; GObject *sink; xid_cb_data = g_slice_new(struct xid_callback_data); xid_cb_data->xid = NUM2ULL(x_window_id); xid_cb_data->bus = RVAL2GOBJ(bus); sink = RVAL2GOBJ(self); g_object_set_qdata_full(sink, xoverlay_xid_data_quark, xid_cb_data, xid_callback_data_destroy_cb); gst_bus_enable_sync_message_emission(GST_BUS(xid_cb_data->bus)); xid_cb_data->cb_id = g_signal_connect_object(xid_cb_data->bus, "sync-message", G_CALLBACK(bus_sync_func_cb), sink, 0); return self; }
/** * 初始化声音系统. */ void SoundSystem::InitSublayer() { GstElement *pipeline; GstElement *filesrc, *decode, *volume, *convert, *sink; GstBus *bus; gst_init(NULL, NULL); pipeline = gst_pipeline_new("sound-system"); g_datalist_set_data_full(&eltset, "pipeline-element", pipeline, GDestroyNotify(gst_object_unref)); filesrc = gst_element_factory_make("filesrc", "source"); g_datalist_set_data(&eltset, "filesrc-element", filesrc); decode = gst_element_factory_make("decodebin", "decode"); g_datalist_set_data(&eltset, "decode-element", decode); volume = gst_element_factory_make("volume", "volume"); g_datalist_set_data(&eltset, "volume-element", volume); convert = gst_element_factory_make("audioconvert", "convert"); g_datalist_set_data(&eltset, "convert-element", convert); sink = gst_element_factory_make("autoaudiosink", "output"); g_datalist_set_data(&eltset, "output-element", sink); gst_bin_add_many(GST_BIN(pipeline), filesrc, decode, volume, convert, sink, NULL); gst_element_link_many(filesrc, decode, NULL); gst_element_link_many(volume, convert, sink, NULL); g_signal_connect_swapped(decode, "pad-added", G_CALLBACK(LinkElement), &eltset); bus = gst_pipeline_get_bus(GST_PIPELINE(pipeline)); gst_bus_add_signal_watch(GST_BUS(bus)); g_signal_connect_swapped(bus, "message::error", G_CALLBACK(ErrorMessageOccur), this); g_signal_connect_swapped(bus, "message::eos", G_CALLBACK(EosMessageOccur), this); gst_object_unref(bus); g_object_set(volume, "volume", progdt.volume, NULL); }
GstElement * purple_media_manager_get_pipeline(PurpleMediaManager *manager) { #ifdef USE_VV g_return_val_if_fail(PURPLE_IS_MEDIA_MANAGER(manager), NULL); if (manager->priv->pipeline == NULL) { FsElementAddedNotifier *notifier; gchar *filename; GError *err = NULL; GKeyFile *keyfile; GstBus *bus; manager->priv->pipeline = gst_pipeline_new(NULL); bus = gst_pipeline_get_bus( GST_PIPELINE(manager->priv->pipeline)); gst_bus_add_signal_watch(GST_BUS(bus)); g_signal_connect(G_OBJECT(bus), "message", G_CALLBACK(pipeline_bus_call), manager); gst_bus_set_sync_handler(bus, gst_bus_sync_signal_handler, NULL); gst_object_unref(bus); filename = g_build_filename(purple_user_dir(), "fs-element.conf", NULL); keyfile = g_key_file_new(); if (!g_key_file_load_from_file(keyfile, filename, G_KEY_FILE_NONE, &err)) { if (err->code == 4) purple_debug_info("mediamanager", "Couldn't read " "fs-element.conf: %s\n", err->message); else purple_debug_error("mediamanager", "Error reading " "fs-element.conf: %s\n", err->message); g_error_free(err); } g_free(filename); /* Hack to make alsasrc stop messing up audio timestamps */ if (!g_key_file_has_key(keyfile, "alsasrc", "slave-method", NULL)) { g_key_file_set_integer(keyfile, "alsasrc", "slave-method", 2); } notifier = fs_element_added_notifier_new(); fs_element_added_notifier_add(notifier, GST_BIN(manager->priv->pipeline)); fs_element_added_notifier_set_properties_from_keyfile( notifier, keyfile); gst_element_set_state(manager->priv->pipeline, GST_STATE_PLAYING); } return manager->priv->pipeline; #else return NULL; #endif }