thanks for your suggestion,
I have found what I believe to be a cleaner approach, your feedback
appreciated.
const char* url = "udp://localhost?localport=1234";
// pre-allocate the AVFormatContext and set the non block flag
AVFormatContext* ctx = avformat_alloc_context();
ctx->flags |= AVFMT_FLAG_NONBLOCK;
AVFormatParameters params;
memset(¶ms, 0, sizeof(params));
params.prealloced_context = 1; // let av_open_input_file() know we already
allocated the context
av_open_input_file(&ctx, url, NULL, 0, ¶ms);
On Tue, Apr 19, 2011 at 00:08, Ronald S. Bultje <[email protected]> wrote:
> Hi,
>
> On Tue, Apr 5, 2011 at 10:18 AM, aviad rozenhek <[email protected]> wrote:
> > when I use libav* in server environment, I usually need that calls
> > to av_read_frame return with some error code when input is not available
> > [such as when multicast udp feed is down]
> > this can be achieved if the udp protocol is opened with
> > the URL_FLAG_NONBLOCK flag.
> > the question is:
> > how can I make sure the protocol is opened with the
> > said URL_FLAG_NONBLOCK flag, when the av_open_input_file() function
> doesn't
> > give me an opportunity to specify this flag?
>
> You need to open the I/O layer manually, using avio_open(), assign
> that to AVFormatContext->pb and read from there.
>
> Ronald
>
--
Aviad Rozenhek
_______________________________________________
libav-api mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-api