<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Mar 19, 2018 at 3:59 AM, Andrey Semashev <span dir="ltr"><<a href="mailto:andrey.semashev@gmail.com" target="_blank">andrey.semashev@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On 03/18/18 20:04, Derek Buitenhuis wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
On 3/16/2018 3:28 PM, Andrey Semashev wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
+/* x265_set_log:<br>
+ *       Sets a custom logger function */<br>
+void x265_set_log(x265_log_t log);<br>
</blockquote>
<br>
I would like to voice my distaste for this implementation.<br>
<br>
This is a global callback, and will introduce problems with e.g. multiple<br>
libraries or dependencies in a program have libx265 as a dependency, or even<br>
with multiple encoders in the same program are used.<br>
<br>
Consider program A that has B as a dependency, both of which use libx265:<br>
<br>
A - libx265<br>
   - B<br>
       - libx265<br>
<br>
Either A or B could set the log callback for x265, and it would take<br>
over for both. This is not ideal, and it is the same design mistake<br>
we at FFmpeg made a long time ago, which has been haunting us for years.<br>
</blockquote>
<br></span>
Normally, there is only one _application_. There may be multiple _libraries_ using libx265 but none of them should be configuring its logging, unless it is supposed to be the only one using libx265 in the application (and generic libraries cannot make that assumption). It is the application that should configure logging in every component it uses.<br>
<br>
That said, I myself would prefer to configure logging on per-encoder basis, although for different reasons. But the way x265 is currently written does not allow this because in many places logging is done without any encoder context. I'm not willing to rewrite x265 to support this as global logging customization is "good enough" for me. It certainly is much better than unconditionally logging to stdout.<span class=""><br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Further, defining user types ending in _t is not allowed in C (which this<br>
header is, and is used from), and x265 does not do this.<br>
</blockquote>
<br></span>
I'm not aware of this limitation. In particular, C11 section 7.1.3 contains no such restriction. Can you provide a reference to the part of the C standard that says this?<br>
<br>
Note also that the name starts with x265, so it clearly belongs to the x265 namespace and is unlikely to clash with anything.<div class="HOEnZb"><div class="h5"><br>
______________________________<wbr>_________________<br>
x265-devel mailing list<br>
<a href="mailto:x265-devel@videolan.org" target="_blank">x265-devel@videolan.org</a><br>
<a href="https://mailman.videolan.org/listinfo/x265-devel" rel="noreferrer" target="_blank">https://mailman.videolan.org/l<wbr>istinfo/x265-devel</a><br>
</div></div></blockquote></div><br></div><div class="gmail_extra"><br></div><div class="gmail_extra">I completely agree with Derek. First of all global logging is not a good idea and second, </div><div class="gmail_extra">it will create problem for other applications using multiple instances of x265.</div></div>