<html><head></head><body>Hi,<br><br>I don't see why filters should need to pass by decoders, or access the clock (which might not even exist - unpaced sout), as they are much better off with original timestamps.<br><br>But more prosaically, I don't see the link with this patch, or even the whole patch series, which affects only visualisations, not audio filters.<br><br><div class="gmail_quote">Le 21 janvier 2019 11:35:54 GMT+02:00, Thomas Guillem <thomas@gllm.fr> a écrit :<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<pre class="k9mail"><br>On Fri, Jan 18, 2019, at 22:12, Rémi Denis-Courmont wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #729fcf; padding-left: 1ex;">vlc | branch: master | Rémi Denis-Courmont <remi@remlab.net> | Fri Jan <br>18 21:13:25 2019 +0200| [abc6132f802ed64cb35d3af74377194e2fd6ea2d] | <br>committer: Rémi Denis-Courmont<br><br>aout: do not use input resource for visualization<br><br>Since the recycle flag is always false, the video output is never<br>preserved, so tracking it in input resources is vain.<br><br>Creating and destroying the video output directly instead of<br>deferring to decoder callbacks is also more consistent with the<br>behaviour of the newer OpenGL-based visualizations.<br></blockquote><br>Hello Rémi,<br>Your commit seems a good idea but it breaks my "clock" local branch.<br>cf. <a href="https://code.videolan.org/jbk/vlc/commit/5a7b9230ec4912205877f9ffcd7dc690866ab8ee">https://code.videolan.org/jbk/vlc/commit/5a7b9230ec4912205877f9ffcd7dc690866ab8ee</a><br><br>I need the audio filters to pass by the decoder in order to share the same master clock.<br>That way, delay and synchronization are easily applied for all audio filters (what my commit is doing).<br><br>Do you have an idea how to achieve this with your recent changes ? I'll need a way to get access to the decoder, input or es_out somehow.<br><br>PS: This is a WIP commit.<br><br><br><br>> <br><blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #729fcf; padding-left: 1ex;"><blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #ad7fa8; padding-left: 1ex;"><a href="http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=abc6132f802ed64cb35d3af74377194e2fd6ea2d">http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=abc6132f802ed64cb35d3af74377194e2fd6ea2d</a><br></blockquote><hr>  src/audio_output/filters.c | 17 ++++++-----------<br>  1 file changed, 6 insertions(+), 11 deletions(-)<br> <br> diff --git a/src/audio_output/filters.c b/src/audio_output/filters.c<br> index d1b9dbecf7..3fdb68ca0b 100644<br> --- a/src/audio_output/filters.c<br> +++ b/src/audio_output/filters.c<br> @@ -36,10 +36,9 @@<br>  #include <vlc_modules.h><br>  #include <vlc_aout.h><br>  #include <vlc_filter.h><br> -#include <vlc_vout.h>                  /* for vout_Request */<br> -<br>  #include <libvlc.h><br>  #include "aout_internal.h"<br> +#include "../video_output/vout_internal.h" /* for vout_Request */<br>  <br>  static filter_t *CreateFilter (vlc_object_t *obj, const char *type,<br>                                 const char *name, void *sys,<br> @@ -384,22 +383,18 @@ static int VisualizationCallback (vlc_object_t <br> *obj, const char *var,<br>  <br>  vout_thread_t *aout_filter_GetVout(filter_t *filter, const video_format_t *fmt)<br>  {<br> -    /* NOTE: This only works from aout_filters_t.<br> -     * If you want to use visualization filters from another place, you will<br> -     * need to add a new pf_aout_request_vout callback or store a pointer<br> -     * to aout_request_vout_t inside filter_t (i.e. a level of indirection). */<br> -    const aout_request_vout_t *req = filter->owner.sys;<br>      video_format_t adj_fmt = *fmt;<br> +    vout_configuration_t cfg = { .fmt = &adj_fmt, .dpb_size = 1 };<br>  <br>      video_format_AdjustColorSpace(&adj_fmt);<br> -    return req->pf_request_vout(req->p_private, NULL, &adj_fmt);<br> +<br> +    return vout_Request(VLC_OBJECT(filter), &cfg, NULL);<br>  }<br>  <br>  void aout_filter_PutVout(filter_t *filter, vout_thread_t *vout)<br>  {<br> -    const aout_request_vout_t *req = filter->owner.sys;<br> -<br> -    req->pf_request_vout(req->p_private, vout, NULL);<br> +    assert(vout->obj.parent == VLC_OBJECT(filter));<br> +    vout_CloseAndRelease(vout);<br>  }<br>  <br>  static int AppendFilter(vlc_object_t *obj, const char *type, const char *name,<hr> vlc-commits mailing list<br> vlc-commits@videolan.org<br> <a href="https://mailman.videolan.org/listinfo/vlc-commits">https://mailman.videolan.org/listinfo/vlc-commits</a><br><br></blockquote><hr>vlc-devel mailing list<br>To unsubscribe or modify your subscription options:<br><a href="https://mailman.videolan.org/listinfo/vlc-devel">https://mailman.videolan.org/listinfo/vlc-devel</a></pre></blockquote></div><br>-- <br>Envoyé de mon appareil Android avec Courriel K-9 Mail. Veuillez excuser ma brièveté.</body></html>