clap

CLAP Audio Plugin API
Log | Files | Refs | README | LICENSE

commit dd1435fea299ae496c20012a6048f7b9ab20cdbc
parent 1585a3136ba3f1366ae26cdc02ebee25c6f1b945
Author: Alexandre Bique <bique.alexandre@gmail.com>
Date:   Wed,  8 Oct 2014 19:35:33 +0200

Move samples/clap-info.c into the examples section

Diffstat:
Mspec.html | 138++++++++++++++++++++++++++++++++++++++++---------------------------------------
Mspec.rst | 12++++++------
2 files changed, 76 insertions(+), 74 deletions(-)

diff --git a/spec.html b/spec.html @@ -170,10 +170,12 @@ tt.docutils { <li><a class="reference internal" href="#extension-system" id="id42">Extension system</a></li> </ul> </li> -<li><a class="reference internal" href="#examples" id="id43">Examples</a></li> -<li><a class="reference internal" href="#references" id="id44">References</a><ul> -<li><a class="reference internal" href="#clap-c" id="id45">clap.c</a></li> -<li><a class="reference internal" href="#samples-clap-info-c" id="id46">samples/clap-info.c</a></li> +<li><a class="reference internal" href="#examples" id="id43">Examples</a><ul> +<li><a class="reference internal" href="#samples-clap-info-c" id="id44">samples/clap-info.c</a></li> +</ul> +</li> +<li><a class="reference internal" href="#references" id="id45">References</a><ul> +<li><a class="reference internal" href="#clap-c" id="id46">clap.c</a></li> </ul> </li> </ul> @@ -744,11 +746,73 @@ big endian machine, it should load again successfully.</p> </div> <div class="section" id="examples"> <h1><a class="toc-backref" href="#id43">Examples</a></h1> +<div class="section" id="samples-clap-info-c"> +<h2><a class="toc-backref" href="#id44">samples/clap-info.c</a></h2> +<pre class="code c literal-block"> +<span class="cp">#include &lt;stdio.h&gt; +#include &lt;dlfcn.h&gt; +</span> +<span class="cp">#include &lt;clap/clap.h&gt; +</span> +<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span> +<span class="p">{</span> + <span class="k">struct</span> <span class="n">clap_host</span> <span class="n">host</span><span class="p">;</span> <span class="c1">// XXX initialize host +</span> + <span class="kt">void</span> <span class="o">*</span> <span class="n">handle</span> <span class="o">=</span> <span class="n">dlopen</span><span class="p">(</span><span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">RTLD_NOW</span> <span class="o">|</span> <span class="n">RTLD_LOCAL</span><span class="p">);</span> + <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">handle</span><span class="p">)</span> <span class="p">{</span> + <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;failed to load %s: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">dlerror</span><span class="p">());</span> + <span class="k">return</span> <span class="mi">1</span><span class="p">;</span> + <span class="p">}</span> + + <span class="k">union</span> <span class="p">{</span> + <span class="kt">void</span> <span class="o">*</span><span class="n">ptr</span><span class="p">;</span> + <span class="n">clap_create_f</span> <span class="n">clap_create</span><span class="p">;</span> + <span class="p">}</span> <span class="n">symbol</span><span class="p">;</span> + + <span class="n">symbol</span><span class="p">.</span><span class="n">ptr</span> <span class="o">=</span> <span class="n">dlsym</span><span class="p">(</span><span class="n">handle</span><span class="p">,</span> <span class="s">&quot;clap_create&quot;</span><span class="p">);</span> + <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">symbol</span><span class="p">.</span><span class="n">ptr</span><span class="p">)</span> <span class="p">{</span> + <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;symbol not found: clap_create</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span> + <span class="k">return</span> <span class="mi">1</span><span class="p">;</span> + <span class="p">}</span> + + <span class="kt">uint32_t</span> <span class="n">plugin_count</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span> + <span class="k">for</span> <span class="p">(</span><span class="kt">uint32_t</span> <span class="n">index</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">index</span> <span class="o">&lt;</span> <span class="n">plugin_count</span><span class="p">;</span> <span class="o">++</span><span class="n">index</span><span class="p">)</span> <span class="p">{</span> + <span class="k">struct</span> <span class="n">clap_plugin</span> <span class="o">*</span><span class="n">plugin</span> <span class="o">=</span> <span class="n">symbold</span><span class="p">.</span><span class="n">clap_create</span><span class="p">(</span> + <span class="n">index</span><span class="p">,</span> <span class="n">host</span><span class="p">,</span> <span class="mi">48000</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">plugin_count</span><span class="p">);</span> + + <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">plugin</span><span class="p">)</span> <span class="p">{</span> + <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;failed to create plugin index %d</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">index</span><span class="p">);</span> + <span class="k">continue</span><span class="p">;</span> + <span class="p">}</span> + + <span class="n">fprintf</span><span class="p">(</span><span class="n">stdio</span><span class="p">,</span> + <span class="s">&quot;found plugin:</span><span class="se">\n</span><span class="s">&quot;</span> + <span class="s">&quot; id: %s</span><span class="se">\n</span><span class="s">&quot;</span> + <span class="s">&quot; name: %s</span><span class="se">\n</span><span class="s">&quot;</span> + <span class="s">&quot; description: %s</span><span class="se">\n</span><span class="s">&quot;</span> + <span class="s">&quot; manufacturer: %s</span><span class="se">\n</span><span class="s">&quot;</span> + <span class="s">&quot; version: %s</span><span class="se">\n</span><span class="s">&quot;</span> + <span class="s">&quot; url: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> + <span class="n">plugin</span><span class="o">-&gt;</span><span class="n">id</span><span class="p">,</span> + <span class="n">plugin</span><span class="o">-&gt;</span><span class="n">name</span><span class="p">,</span> + <span class="n">plugin</span><span class="o">-&gt;</span><span class="n">description</span><span class="p">,</span> + <span class="n">plugin</span><span class="o">-&gt;</span><span class="n">manufacturer</span><span class="p">,</span> + <span class="n">plugin</span><span class="o">-&gt;</span><span class="n">version</span><span class="p">,</span> + <span class="n">plugin</span><span class="o">-&gt;</span><span class="n">url</span><span class="p">);</span> + + <span class="c1">// destroy the plugin +</span> <span class="n">plugin</span><span class="o">-&gt;</span><span class="n">destroy</span><span class="p">(</span><span class="n">plugin</span><span class="p">);</span> + <span class="p">}</span> + + <span class="k">return</span> <span class="mi">0</span><span class="p">;</span> +<span class="p">}</span> +</pre> +</div> </div> <div class="section" id="references"> -<h1><a class="toc-backref" href="#id44">References</a></h1> +<h1><a class="toc-backref" href="#id45">References</a></h1> <div class="section" id="clap-c"> -<h2><a class="toc-backref" href="#id45">clap.c</a></h2> +<h2><a class="toc-backref" href="#id46">clap.c</a></h2> <pre class="code c literal-block"> <span class="cm">/** * CLAP - CLever Audio Plugin (&lt;--- needs to find a marketing ok name) @@ -1092,68 +1156,6 @@ big endian machine, it should load again successfully.</p> <span class="cp">#endif </span><span class="cm">/* !CLAP_H */</span> </pre> </div> -<div class="section" id="samples-clap-info-c"> -<h2><a class="toc-backref" href="#id46">samples/clap-info.c</a></h2> -<pre class="code c literal-block"> -<span class="cp">#include &lt;stdio.h&gt; -#include &lt;dlfcn.h&gt; -</span> -<span class="cp">#include &lt;clap/clap.h&gt; -</span> -<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span> -<span class="p">{</span> - <span class="k">struct</span> <span class="n">clap_host</span> <span class="n">host</span><span class="p">;</span> <span class="c1">// XXX initialize host -</span> - <span class="kt">void</span> <span class="o">*</span> <span class="n">handle</span> <span class="o">=</span> <span class="n">dlopen</span><span class="p">(</span><span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">RTLD_NOW</span> <span class="o">|</span> <span class="n">RTLD_LOCAL</span><span class="p">);</span> - <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">handle</span><span class="p">)</span> <span class="p">{</span> - <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;failed to load %s: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">dlerror</span><span class="p">());</span> - <span class="k">return</span> <span class="mi">1</span><span class="p">;</span> - <span class="p">}</span> - - <span class="k">union</span> <span class="p">{</span> - <span class="kt">void</span> <span class="o">*</span><span class="n">ptr</span><span class="p">;</span> - <span class="n">clap_create_f</span> <span class="n">clap_create</span><span class="p">;</span> - <span class="p">}</span> <span class="n">symbol</span><span class="p">;</span> - - <span class="n">symbol</span><span class="p">.</span><span class="n">ptr</span> <span class="o">=</span> <span class="n">dlsym</span><span class="p">(</span><span class="n">handle</span><span class="p">,</span> <span class="s">&quot;clap_create&quot;</span><span class="p">);</span> - <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">symbol</span><span class="p">.</span><span class="n">ptr</span><span class="p">)</span> <span class="p">{</span> - <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;symbol not found: clap_create</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span> - <span class="k">return</span> <span class="mi">1</span><span class="p">;</span> - <span class="p">}</span> - - <span class="kt">uint32_t</span> <span class="n">plugin_count</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span> - <span class="k">for</span> <span class="p">(</span><span class="kt">uint32_t</span> <span class="n">index</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">index</span> <span class="o">&lt;</span> <span class="n">plugin_count</span><span class="p">;</span> <span class="o">++</span><span class="n">index</span><span class="p">)</span> <span class="p">{</span> - <span class="k">struct</span> <span class="n">clap_plugin</span> <span class="o">*</span><span class="n">plugin</span> <span class="o">=</span> <span class="n">symbold</span><span class="p">.</span><span class="n">clap_create</span><span class="p">(</span> - <span class="n">index</span><span class="p">,</span> <span class="n">host</span><span class="p">,</span> <span class="mi">48000</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">plugin_count</span><span class="p">);</span> - - <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">plugin</span><span class="p">)</span> <span class="p">{</span> - <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;failed to create plugin index %d</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">index</span><span class="p">);</span> - <span class="k">continue</span><span class="p">;</span> - <span class="p">}</span> - - <span class="n">fprintf</span><span class="p">(</span><span class="n">stdio</span><span class="p">,</span> - <span class="s">&quot;found plugin:</span><span class="se">\n</span><span class="s">&quot;</span> - <span class="s">&quot; id: %s</span><span class="se">\n</span><span class="s">&quot;</span> - <span class="s">&quot; name: %s</span><span class="se">\n</span><span class="s">&quot;</span> - <span class="s">&quot; description: %s</span><span class="se">\n</span><span class="s">&quot;</span> - <span class="s">&quot; manufacturer: %s</span><span class="se">\n</span><span class="s">&quot;</span> - <span class="s">&quot; version: %s</span><span class="se">\n</span><span class="s">&quot;</span> - <span class="s">&quot; url: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> - <span class="n">plugin</span><span class="o">-&gt;</span><span class="n">id</span><span class="p">,</span> - <span class="n">plugin</span><span class="o">-&gt;</span><span class="n">name</span><span class="p">,</span> - <span class="n">plugin</span><span class="o">-&gt;</span><span class="n">description</span><span class="p">,</span> - <span class="n">plugin</span><span class="o">-&gt;</span><span class="n">manufacturer</span><span class="p">,</span> - <span class="n">plugin</span><span class="o">-&gt;</span><span class="n">version</span><span class="p">,</span> - <span class="n">plugin</span><span class="o">-&gt;</span><span class="n">url</span><span class="p">);</span> - - <span class="c1">// destroy the plugin -</span> <span class="n">plugin</span><span class="o">-&gt;</span><span class="n">destroy</span><span class="p">(</span><span class="n">plugin</span><span class="p">);</span> - <span class="p">}</span> - - <span class="k">return</span> <span class="mi">0</span><span class="p">;</span> -<span class="p">}</span> -</pre> -</div> </div> </div> </body> diff --git a/spec.rst b/spec.rst @@ -515,6 +515,12 @@ If the extension is not supported, the plugin should return ``NULL``. Examples ======== +samples/clap-info.c +------------------- + +.. include:: samples/clap-info.c + :code: c + References ========== @@ -523,9 +529,3 @@ clap.c .. include:: include/clap/clap.h :code: c - -samples/clap-info.c -------------------- - -.. include:: samples/clap-info.c - :code: c