<div dir="auto"><div>Hi Jim,<div dir="auto"><br></div><div dir="auto">See answers below.</div><br><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Le mar. 15 sept. 2020 17 h 30, jim nualart <<a href="mailto:jim@austinmodern.com">jim@austinmodern.com</a>> a écrit :<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hi All,<div><br></div><div>I'm hoping someone can chime in here with a little bit of explanation, as I think I have gotten myself somewhat confused on this topic.</div><div><br></div><div>I've read the following:</div><div>(from here, <a href="https://gstreamer.freedesktop.org/documentation/application-development/advanced/clocks.html#latency-compensation" target="_blank" rel="noreferrer">https://gstreamer.freedesktop.org/documentation/application-development/advanced/clocks.html#latency-compensation</a>)</div><div>Before the pipeline goes to the PLAYING state, it will, in addition to selecting a clock and calculating a base-time, calculate the latency in the pipeline. It does this by doing a LATENCY query on all the sinks in the pipeline. The pipeline then selects the maximum latency in the pipeline and configures this with a LATENCY event.<br></div><div><br></div><div>So this is "automatic" and the application itself does not need to be involved at this point ... correct so far?</div><div><br></div><div>Now, what if I want to know what the latency value is (of what was configured automatically by the pipeline)? </div><div>Can I use gst_pipeline_get_latency()?</div><div>Am I correct that this function would return the currently *configured* pipeline latency?</div><div>Or should I use a query with gst_query_new_latency()?</div><div>Though, I think this function would get me the current *actual* latency (vs what is configured), right?</div></div></blockquote></div></div><div dir="auto"><br></div><div dir="auto">The latency query will give you the reported latency. Running that query on different sink element (that query is executed  sink to source) usually gives different values. By default, GstPipeline will select the maximum.</div><div dir="auto"><br></div><div dir="auto">The applied latency is reported through an event. By default the same event is sent to all sinks, but special application may use different values. This is why reading the applied latency is not so straight forward.</div><div dir="auto"><br></div><div dir="auto"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><br></div><div>Finally, if I want to change the latency value, is that done via gst_pipeline_set_latency() or gst_query_set_latency() ?</div></div></blockquote></div></div><div dir="auto"><br></div><div dir="auto">The first once will force a global latency to the specified latency. It is controlled by applications indeed.</div><div dir="auto"><br></div><div dir="auto">The second is used by elements, when contributing to the latency query. This a "plugin" API.</div><div dir="auto"><br></div><div dir="auto">You can also use the latency tracer to get a log of per element reported latency.</div><div dir="auto"><br></div><div dir="auto"><br></div><div dir="auto">GST_TRACERS="latency(flags=reported)" GST_DEBUG=GST_TRACER:7 ...</div><div dir="auto"><br></div><div dir="auto"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><br></div><div>Much thanks in advance,</div><div>-jim</div></div>
_______________________________________________<br>
gstreamer-devel mailing list<br>
<a href="mailto:gstreamer-devel@lists.freedesktop.org" target="_blank" rel="noreferrer">gstreamer-devel@lists.freedesktop.org</a><br>
<a href="https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel" rel="noreferrer noreferrer" target="_blank">https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a><br>
</blockquote></div></div></div>