<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">Hi,<div class=""><br class=""></div><div class="">I did not run your code, but at first sight it looks okay. I only have two comments that may be related:</div><div class=""><br class=""></div><div class="">1) You are not iterating on the main loop. As such, I’m surprised you even get signals being emitted at all. I wouldn’t rely on undefined behavior and iterate the loop. I imagine you commented out the g_main_loop_run to avoid blocking, so here’s a couple of options:</div><div class=""> - call g_main_loop_run from a different thread</div><div class=""> - loop yourself and call g_main_context_iteration on each iteration, </div><div class=""><br class=""></div><div class="">2) On the g_bus_timed_pop_filtered, are you checking the message you are receiving is the EOS? Because it could be an error, and you are assuming the EOS was received when it hasn’t.</div><div class=""><br class=""></div><div class=""><br class=""><div class="">
<div>Michael</div><div><a href="http://www.ridgerun.com" class="">www.ridgerun.com</a></div><div><br class=""></div><br class="Apple-interchange-newline">
</div>
<div><br class=""><blockquote type="cite" class=""><div class="">On Aug 30, 2019, at 1:48 PM, Ben Rush <<a href="mailto:ben@ben-rush.net" class="">ben@ben-rush.net</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class="">I have made a self-contained example here: <a href="https://github.com/kwende/GStreamerExamples/blob/master/Examples/RunInALoop/RunInALoop.cpp" class="">https://github.com/kwende/GStreamerExamples/blob/master/Examples/RunInALoop/RunInALoop.cpp</a>. The same repo includes a VS2019 solution/project to build it. I hope this helps someone understand my question better. <br class=""><br class="">Here is my problem: I think am I doing something wrong in how I'm tearing down the pipeline when using appsrc. If USEAPPSRC is defined in my code, what eventually happens is the code hangs on line 147 (after several iterations): <br class=""><br class="">gst_element_send_event(state.pipeline, gst_event_new_eos());<br class=""><div class=""><br class=""></div><div class="">In addition, I will sporadically get zero-length MP4 files before the hang eventually happens.<br class=""><br class="">On the other hand, if USEAPPSRC isn't defined, and I use videotestsrc, then everything works as planned: no zero-length files and no hangs ever occur: the loop continues and I keep generating files ad nauseam. I've seen a number of discussions about flushing the pipeline, but I'm unsure how this works exactly in the scenario I've got going on with this code. I feel like something isn't getting the EOS signal properly, but how or why, I can't shake out. The heart of the issue is that I'm trying to tear down and rebuild my pipeline in an infinite loop, I've never witnessed this issue unless I'm in a loop like that. </div><div class=""><br class=""></div><div class="">It's worth noting that I'm using the Intel Media SDK h264 plugin, and so that might be a variable, but everything certainly works fine when using videotestsrc, so I feel like it's got to be something I'm doing in my code. <br class=""><br class="">Thanks!</div></div>
_______________________________________________<br class="">gstreamer-devel mailing list<br class=""><a href="mailto:gstreamer-devel@lists.freedesktop.org" class="">gstreamer-devel@lists.freedesktop.org</a><br class="">https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel</div></blockquote></div><br class=""></div></body></html>