<div dir="ltr"><div><div><div><div><div><div><div><div><div>Hi,<br><br></div>I am having a audio/video application providing interfaces for audio video playback.<br></div>I am using GStreamer framework for actual playback.<br>
</div>In my application, I get elementary streams from the network(demuxed streams).<br></div>Elementary Audio and Video in separate threads.<br><br></div>Now there is problem when I create pipeline and use appsrc.<br></div>
I am creating pipeline for video elementary stream as:<br><br></div>appsrc->h264parse->ffdec_h264->ffmpegcolorconverter->videoconvert->xvimagesink<br><br></div>My class is C++ and I am creating and doing gst_init in my class function like:<br>
<br>    gst_init (NULL, NULL);<br><br><br>    loop = g_main_loop_new (NULL, TRUE);<br><br></div> /* creating pipeline here */<br>--------------<br>---------------<br>--------------<br><div><br>    /* go to playing and wait in a mainloop. */<br>
    gst_element_set_state (playbin, GST_STATE_PLAYING);<br><br><br></div><div>Now if I use g_main_loop_run (loop); after setting the pipeline to play state above, my code don’t work. My audio and video threads(which are bringing audio video elementary data) don't work at all.<br>
<br></div><div>if I call g_main_loop_run (loop); after getting first video packet, the idle handler callback works too fast then my feeding thread due to which same data gets pushed to app_src repeatedly and therefore the pipeline fails.<br>
<br></div><div>The problem to me seems to be where to call g_main_loop_run (loop);<br><br></div><div>Also since my code is c++ and gstreamer is C, is that can be a issue?<br><br></div><div>Plz help.<br></div><div><br><br>
</div><div><div><br></div></div></div>