<div dir="ltr">thanks for your suggestion,<div>I have found what I believe to be a cleaner approach, your feedback appreciated.</div><div><br></div><div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><span class="Apple-tab-span" style="white-space:pre">        </span>const char* url = &quot;udp://localhost?localport=1234&quot;;</font></div>
<div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><br></font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="white-space: normal; "><div style="font-family: arial; ">
<font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><span class="Apple-tab-span" style="white-space: pre; ">        </span>// pre-allocate the </font><span class="Apple-style-span" style="font-family: &#39;courier new&#39;, monospace; ">AVFormatContext and set the non block flag</span></div>
<div style="font-family: arial; "><span class="Apple-style-span" style="font-family: &#39;courier new&#39;, monospace; ">        AVFormatContext* ctx = avformat_alloc_context();</span></div><div style="font-family: arial; ">
<font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><span class="Apple-tab-span" style="white-space: pre; ">        </span>ctx-&gt;flags |= AVFMT_FLAG_NONBLOCK;</font></div></span></span></font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><span class="Apple-tab-span" style="white-space:pre"><br>
</span></font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><span class="Apple-tab-span" style="white-space:pre">        </span>AVFormatParameters params;</font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><span class="Apple-tab-span" style="white-space:pre">        </span>memset(&amp;params, 0, sizeof(params));</font></div>
<div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><span class="Apple-tab-span" style="white-space:pre">        </span>params.prealloced_context = 1; // let </font><span class="Apple-style-span" style="font-family: &#39;courier new&#39;, monospace; ">av_open_input_file() know we already allocated the context</span></div>
<div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><br></font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><span class="Apple-tab-span" style="white-space:pre">        </span>av_open_input_file(&amp;ctx, url, NULL, 0, &amp;params);</font></div>
<br><div class="gmail_quote">On Tue, Apr 19, 2011 at 00:08, Ronald S. Bultje <span dir="ltr">&lt;<a href="mailto:rsbultje@gmail.com">rsbultje@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Hi,<br>
<div><div></div><div class="h5"><br>
On Tue, Apr 5, 2011 at 10:18 AM, aviad rozenhek &lt;<a href="mailto:aviadr1@gmail.com">aviadr1@gmail.com</a>&gt; wrote:<br>
&gt; when I use libav* in server environment, I usually need that calls<br>
&gt; to av_read_frame return with some error code when input is not available<br>
&gt; [such as when multicast udp feed is down]<br>
&gt; this can be achieved if the udp protocol is opened with<br>
&gt; the URL_FLAG_NONBLOCK flag.<br>
&gt; the question is:<br>
&gt; how can I make sure the protocol is opened with the<br>
&gt; said URL_FLAG_NONBLOCK flag, when the av_open_input_file() function doesn&#39;t<br>
&gt; give me an opportunity to specify this flag?<br>
<br>
</div></div>You need to open the I/O layer manually, using avio_open(), assign<br>
that to AVFormatContext-&gt;pb and read from there.<br>
<font color="#888888"><br>
Ronald<br>
</font></blockquote></div><br><br clear="all"><br>-- <br>Aviad Rozenhek<br>
</div></div>