Ronald S. Bultje <rsbultje <at> gmail.com> writes:
> You set your own I/O through a AVIOContext, which you set in
> AVFormatContext->pb.

Seems like I should use "av_open_input_stream", as the "avformat_open_input" is
not supported on most distributions.

So in short my code would look something like:

| AVIOContext *pb;
| pb = avio_alloc_context(...);
| pb->is_streamed = 1;
|
| AVProbeData probe_data;
| probe_data.buf_size = xxxxx;
| probe_data.buf = ....;
| AVInputFormat *fmt_in = av_probe_input_format(&probe_data, 1);
|
| av_open_input_stream(NULL, pb, NULL, fmt_in, NULL);

Means, that I have to fetch a few bytes first to pass them to
av_probe_input_format. Somewhere I've read that it may even be a good idea to
try this a few times with increasing buffer sizes and data. Or can I avoid
av_probe_input_format? Is there a common "input format" for all HTTP streams?
What is an input format. Does this have something to do with selection of the
right decoder?

I didn't find any good documentation for avio_alloc_context. Do I have to set a
buffer and buffer_size there, if I want to pass a "read_packet" function
pointer. Will libav provide a buffer for me, if I set both to NULL or is it my
job to pre-create a buffer and libav then provides my own buffer to my
read_packet function? Can I just pass NULL for write_packet? What about seek,
which doesn't apply to streams? What is "opaque" meant for. May I pass a pointer
to my "streaming class" here? Seems like it gets passed to my callback 
functions.

Yours

Manuel

_______________________________________________
libav-api mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-api

Reply via email to