Quantcast

Video Freezes

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Video Freezes

adeel
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
Loading...