Hi All
My System is OSX Sierra Decklink 10.8.3 Gstreamer 1.10 File Type: Mpeg2 My pipeline is as follow GstBus *bus; GSource *timeout_source; GSource *bus_source; GError *error = NULL;
GST_DEBUG("Creating pipeline"); context = g_main_context_new(); g_main_context_push_thread_default(context);
pipeline = gst_parse_launch("playbin", &error); const char *char_uri = [uri UTF8String]; g_object_set(pipeline, "uri", char_uri, NULL); GST_DEBUG("URI set to %s", char_uri);
if(error){ gchar *message = g_strdup_printf("Unable to build pipeline: %s", error->message); g_clear_error(&error); NSLog(@"pipeline error %s",message); [self setUIMessage:message]; g_free(message); return; }
GstElement *videosink = gst_bin_get_by_interface(GST_BIN(pipeline), GST_TYPE_VIDEO_OVERLAY); if(!videosink){ GST_ERROR("Could not retrieve video sink"); return; }
gst_video_overlay_set_window_handle(GST_VIDEO_OVERLAY(videosink), (guintptr)(id)ui_video_view);
ret = gst_element_set_state (pipeline, GST_STATE_PLAYING); if (ret == GST_STATE_CHANGE_FAILURE) { NSLog(@"Unable to set the pipeline to the playing state.\n"); gst_object_unref (pipeline); return; }
bus = gst_element_get_bus(pipeline); bus_source = gst_bus_create_watch(bus); g_source_set_callback(bus_source, (GSourceFunc)gst_bus_async_signal_func, NULL, NULL); g_source_attach(bus_source, context); g_source_unref(bus_source); g_signal_connect (G_OBJECT(bus), "message::error", (GCallback)error_cb, (__bridge void *)self); g_signal_connect (G_OBJECT(bus), "message::eos", (GCallback)eos_cb, (__bridge void *)self); g_signal_connect (G_OBJECT(bus), "message::state-changed", (GCallback)state_changed_cb, (__bridge void *)self); g_signal_connect (G_OBJECT(bus), "message::duration", (GCallback)duration_cb, (__bridge void *)self); g_signal_connect (G_OBJECT(bus), "message::clock-lost", (GCallback)clock_lost_cb, (__bridge void *)self); g_signal_connect (pipeline, "about-to-finish", (GCallback)prepare_next_stream, (__bridge void *)self); timeout_source = g_timeout_source_new(1); g_source_set_callback(timeout_source, (GSourceFunc)refresh_ui, (__bridge void *)self,NULL); g_source_attach(timeout_source, context); g_source_unref(timeout_source); GST_DEBUG("Entering main loop..."); main_loop = g_main_loop_new(context, FALSE); [self check_initializing_complete]; g_main_loop_run(main_loop); GST_DEBUG("Exiting main loop..."); g_main_loop_unref(main_loop); main_loop = NULL;
g_main_context_pop_thread_default(context); g_main_context_unref(context); gst_object_unref (bus); gst_element_set_state (pipeline, GST_STATE_NULL); gst_object_unref (pipeline);
pipeline = NULL; timeout_source = NULL; bus = NULL; bus_source = NULL; return; I am playing files sequentially using about to finish but first file play normally but next file freezes for some time and then play normally then next 2 or 3 files play fine but then next file freezes for sometime. How can I debug that issue Regards Adeel Arshad _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Free forum by Nabble | Edit this page |