program crashes after g_main_loop_run()

leon dudi.reuveni at
Sun Apr 6 06:29:35 PDT 2014

Hi, thank you for your reply.

Im not sure how to use the gdb..

I load pcap file and push the h.264 stream to the buffer.
the callbacks functions:

static void *start_feed *(GstElement * pipeline, guint size, gst_app_t *app)
 if (app->sourceid == 0) {
  GST_DEBUG ("start feeding");
  app->sourceid = g_idle_add ((GSourceFunc) *read_data*, app);

static gboolean *read_data*(gst_app_t *app)
 GstBuffer *buffer;
 void *ptr;
 int size;
 GstFlowReturn ret;
 struct pcap_pkthdr *header;
 const u_char *data;
 u_char *RTP_ptr;

 int returnValue = pcap_next_ex(pcap, &header, &data);

 if (returnValue >= 0)
	 RTP_ptr= (u_char *)data + 42;  // pointer to the start of RTP + H.264
	 size = (header->caplen)-42;   //prt: holds the actual data (destination)
                                                 //app->file: holds the pcap
file (source)
	 if(size == 0){
           ret = gst_app_src_end_of_stream(app->src);
           g_debug("eos returned %d at %d\n", ret, __LINE__);
           return FALSE;

	 buffer =gst_buffer_new_wrapped (RTP_ptr,size);

	 ret = gst_app_src_push_buffer(app->src, buffer);
         if(ret !=  GST_FLOW_OK){
           g_debug("push buffer returned %d for %d bytes \n", ret, size);
           return FALSE;
 else printf("return value of \"next packet\" is not o.k");

 return TRUE;

static void *stop_feed* (GstElement * pipeline, gst_app_t *app)
 if (app->sourceid != 0) {
  GST_DEBUG ("stop feeding");
  g_source_remove (app->sourceid);
  app->sourceid = 0;


View this message in context:
Sent from the GStreamer-devel mailing list archive at

More information about the gstreamer-devel mailing list