<html><head><meta http-equiv="Content-Type" content="text/html charset=windows-1252"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Greetings.<div><br></div><div>This is my first post.  I looked in the listserv archives but didn't find anyone talking about this, so here it goes.</div><div><br></div><div>I need to implement a new audio (audio only) filter.  I see the example code in filtering_audio.c that uses a buffer sink.  But, I'm having a hard time finding particulars on what everything means.  So, I'm hoping someone on this list can help.</div><div><br></div><div>My goal: I have an application that uses the FFMPG library.  I need to create a new custom audio  filter, say my_filter.c.</div><div><br></div><div>filtering_audio.c looks like the place to start. Is that correct?</div><div><br></div><div>In filtering_audio.c:</div><div><br></div><div>* Can I get a basic walk-through of the code in the function init_filters?  it looks like there is a source (<span style="font-family: Monaco; font-size: 11px; color: rgb(0, 97, 65); ">AVFilter</span><span style="font-family: Monaco; font-size: 11px; "> *abuffersrc) </span>and sink buffer (<span style="font-family: Monaco; font-size: 11px; color: rgb(0, 97, 65); ">AVFilter</span><span style="font-family: Monaco; font-size: 11px; "> *abuffersing). </span><span style="font-family: Monaco; font-size: 11px; "> </span> This looks like two filters.  How do I install just one filter?  I'm looking for a basic checklist here so I know that my calls to avfilter_graph_create_filter, av_filtergraph_parse, etc … are correct … .basically a walk-through of the example code.</div><div><br></div><div>* In <span style="font-family: Monaco; font-size: 11px; ">avfilter_asink_abuffer (buffersink.c) I see .inputs and .outputs defined.  .inputs defines an AVFilterPad called "default".  .outputs defines no (NULL) filter pads.  How does this relate to this code in filtering_audio.c? </span></div><div><span style="font-family: Monaco; font-size: 11px; "><br></span></div><div><div style="margin: 0px; font-size: 11px; font-family: Monaco; color: rgb(78, 144, 114); ">    /* <span style="text-decoration: underline">Endpoints</span> for the filter graph. */</div><div style="margin: 0px; font-size: 11px; font-family: Monaco; ">    outputs-><span style="color: #0326cc">name</span>       = av_strdup(<span style="color: #3933ff">"in"</span>);</div><div style="margin: 0px; font-size: 11px; font-family: Monaco; ">    outputs-><span style="color: #0326cc">filter_ctx</span> = buffersrc_ctx;</div><div style="margin: 0px; font-size: 11px; font-family: Monaco; ">    outputs-><span style="color: #0326cc">pad_idx</span>    = 0;</div><div style="margin: 0px; font-size: 11px; font-family: Monaco; ">    outputs-><span style="color: #0326cc">next</span>       = NULL;</div><div style="margin: 0px; font-size: 11px; font-family: Monaco; min-height: 15px; "><br></div><div style="margin: 0px; font-size: 11px; font-family: Monaco; ">    inputs-><span style="color: #0326cc">name</span>       = av_strdup(<span style="color: #3933ff">"out"</span>);</div><div style="margin: 0px; font-size: 11px; font-family: Monaco; ">    inputs-><span style="color: #0326cc">filter_ctx</span> = buffersink_ctx;</div><div style="margin: 0px; font-size: 11px; font-family: Monaco; ">    inputs-><span style="color: #0326cc">pad_idx</span>    = 0;</div><div style="margin: 0px; font-size: 11px; font-family: Monaco; ">    inputs-><span style="color: #0326cc">next</span>       = NULL;</div></div><div style="margin: 0px; font-size: 11px; font-family: Monaco; "><br></div><div style="margin: 0px; font-size: 11px; font-family: Monaco; "><br></div><div style="margin: 0px; font-size: 11px; font-family: Monaco; ">Thank you in advance.</div><div style="margin: 0px; font-size: 11px; font-family: Monaco; "><br></div><div style="margin: 0px; font-size: 11px; font-family: Monaco; ">Cheers,</div><div style="margin: 0px; font-size: 11px; font-family: Monaco; ">Richard Schilling</div></body></html>