From: Riccardo C. <cor...@gm...> - 2007-05-29 17:26:49
|
Hi, during my test with gstreamer app for win32 I've used a fakesrc with an handoff function in which I obtain some mpeg4 fragment that is put into a gstbuffer. I've also used the right plugin to visualize the mpeg4 packet on my directdraw sink. It works weel only for the first 2-3 packets received and then the refresh of the images stops and, if I run in debug mode, I can see that some thread stop its execution but there isn't gstreamer thread. This is main part of may handoff: static void cb_handoff (GstElement *fakesrc, GstBuffer *buffer, GstPad *pad, gpointer user_data) { MyClass* dlg=(MyClass*)user_data; //fg_image is the object that contains the corretc (I've checked it...) mpeg4 fragment //dt contains the time of the fragment //dlg->t is a struct tm that allows to obtain time_t dlg->t.tm_sec=dt.sec; dlg->t.tm_min=dt.min; dlg->t.tm_hour=dt.hour; dlg->t.tm_mday=dt.day; dlg->t.tm_mon=dt.month-1; dlg->t.tm_year=dt.year-1900; buffer->timestamp = mktime(&dlg->t);//GST_CLOCK_TIME_NONE; buffer->duration = GST_CLOCK_TIME_NONE; //fg_image->pixel_ptr contains the mpeg4 image buffer gst_buffer_set_data(buffer,fg_image->pixel_ptr,fg_image->dimension); //I've also tried withot this unref/ref but nothing to do... gst_buffer_unref(buffer); gst_buffer_ref(buffer); return; } So, all I see is the first frame, sometimes 2 or 3 and then all is stop but I can't catch any error message in my bus_call (I've set this function with gst_bus_add_watch).Moreover if I send an eof message then gstreamer stop nicely like it was always in execution. My question is about the general usage of fakesrc: there's the need of some kind of buffering or some kind of buffer control? Thank's and best regards. -- Riccardo Corona |