<div dir="ltr">I sent the original message on this thread Friday evening (US Pacific Time) ... chances are that most people never saw it, so I'm trying again:<div><br></div><div>

<div style="font-size:12.8px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial">On a prior email thread, it was suggested that GESTimeline and GstPipeline are not 100% compatible with each other:  <a href="https://lists.freedesktop.org/archives/gstreamer-devel/2018-March/067349.html" target="_blank" style="color:rgb(17,85,204)">https://lists.<wbr>freedesktop.org/archives/<wbr>gstreamer-devel/2018-March/<wbr>067349.html</a></div><div style="font-size:12.8px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial"><br></div><blockquote style="font-size:12.8px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;margin:0px 0px 0px 40px;border:none;padding:0px"><div><div>>     The GES timeline can indeed be used in a regular gstreamer pipeline, but there</div></div><div><div>>     are some undocumented quirks, amongst them the "query-position" signal emitted</div></div><div><div>>     by the NLEComposition wrapped by the GESTrack object, this is why using GESPipeline</div></div><div><div>>     is the recommended approach.</div></div></blockquote><div><br></div>I am now in the position of being forced to use the GstPipeline with the GESTimeline (for reasons described in the first message of this thread).  I wonder if anybody can shed some light on the problems that I might see, and provide a hint about how I might overcome them.  I am working in C / C++ so I have a lot of options, but I would benefit from a little guidance.<br class="gmail-Apple-interchange-newline">

<br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Jun 29, 2018 at 4:24 PM, David Ing <span dir="ltr"><<a href="mailto:ding@panopto.com" target="_blank">ding@panopto.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">To partially answer my own question:  I think I need to use a <b>GstPipeline</b> rather than a <b>GESPipeline</b> (so I can have full control over the GstElements which do the encoding and writing to files).<div><br></div><div>On another email thread, it was suggested that GESTimeline and GstPipeline are not 100% compatible with each other:  <a href="https://lists.freedesktop.org/archives/gstreamer-devel/2018-March/067349.html" target="_blank">https://lists.<wbr>freedesktop.org/archives/<wbr>gstreamer-devel/2018-March/<wbr>067349.html</a></div><div><br></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div><div>>     The GES timeline can indeed be used in a regular gstreamer pipeline, but there</div></div><div><div>>     are some undocumented quirks, amongst them the "query-position" signal emitted</div></div><div><div>>     by the NLEComposition wrapped by the GESTrack object, this is why using GESPipeline</div></div><div><div>>     is the recommended approach.</div></div></blockquote><div><br></div><div>If I use GESTimeline with GstPipeline, what kinds of trouble can I expect?</div></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Jun 29, 2018 at 1:32 PM, David Ing <span dir="ltr"><<a href="mailto:ding@panopto.com" target="_blank">ding@panopto.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">I am using GES 1.12 and I am trying to build a single GESPipeline with a somewhat complicated set of outputs.  I am coding in C++ (using gstreamer headers and libs).<div><br></div><div>Consider a representative example:</div><div><br></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>I have built a GESTimeline which sits inside a GESPipeline.</div><div><div><br></div></div><div><div>I want to generate multiple encodings.</div></div></blockquote><div><div><ol><ol><li>Low quality video AVC
<span style="font-size:small;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">(h.264)</span></li><li>Mid quality video AVC
<span style="font-size:small;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">(h.264)</span></li><li>High quality video AVC (h.264)</li><li>High quality audio AAC</li></ol></ol></div></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div><div><div>I want to shunt these encodings into multiple containers.</div></div></div></blockquote><div><div><div><ol><ol><li>HLS folder (all encodings)</li><li>MP4 high quality (encodings 3 & 4)</li><li>MP4 mid quality (encodings 2 & 4)</li></ol></ol></div><div>Presumably, the most efficient approach (computationally) is to use a single pipeline for all of this.  <b>Computational efficiency is of paramount importance to me.</b></div><div><br></div><div>My question is:<b>  What approach should I take?</b></div><div></div></div><div><br></div><div>One approach is to manually construct the GstElements I need for encoding and muxing, and connect them together in the appropriate way within the GESPipeline (I guess they would source directly from the sinks on the GESTimeline).  Is that the correct approach?  Or is there another approach that will work better?</div></div><div><br></div><div><b>Guidance is appreciated.</b></div></div>
</blockquote></div><br></div>
</div></div></blockquote></div><br></div>