<p>Hi Max,</p>
<p>since you are already using separate nodes running NIFs, there's probably not much worth in converting to a C node or port. So this is just for posterity.</p>
<p>The inconvenience you appear to see in the C node setup is the same to that of your setup. You have to have a way to start your transcoder server (open_port & ei_connect & ei_xreceive_msg vs slave:start & load_nif & ERL_NIF_INIT) and you have to translate/access the data from/in Erlang to/from C (ei_x_decode_... vs enif_get_...). It's just that you've already implemented your approach, and changing that would indeed be inconvenient.</p>

<p>The biggest architectural difference is that a C node or port must be based around messaging, whereas a NIF is based on an API. The underlying functionality is likely to be mostly identical.</p>
<p>And one scenario where a NIF is probably more convenient is if your C code must operate in place on large binaries stored on the Erlang side. But by using a separate node, I'm not entirely sure you get that benefit anyway. Your data must find it's way to the transcoder node in any case.</p>

<p>Sorry I can't be of more assistance on the NIF vs async_driver question.</p>
<p>Regards,<br>
Robby<br>
</p>
<div class="gmail_quote">On Jun 22, 2014 5:24 PM, "Max Lapshin" <<a href="mailto:max.lapshin@gmail.com">max.lapshin@gmail.com</a>> wrote:<br type="attribution"><blockquote class="quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr"><div class="gmail_extra">Dmitry, I'm using  slave:start for spawning separate Erlang process for each transcoder and use nif (now with dirty schedulers) for running decode/encode.</div><div class="gmail_extra">

<br></div><div class="gmail_extra">C port and c node are both very inconvenient, because they require lot of marshalling/demarshalling.  Also it is impossible to run erlang between different parts of C job.</div></div>
<br>_______________________________________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
<br></blockquote></div>