Hi,

On Tue, Feb 14, 2012 at 12:40 PM, Camera Man
<[email protected]> wrote:
> On 02/14/2012 02:43 PM, Ronald S. Bultje wrote:
>
> My question was, however, about parameters that get passed to the underlying
> network transport - e.g., for udp, you use to be able to specify the socket
> buffer size. My h264 IP camera produces I-frames that are ~220KB, and with
> the default 64K socket buffer size, they got corrupted. It ws possible, in
> the past, to pass a buffer argument (as in the example I gave above). How
> can you do that today, short of recompiling libav with a different #define
> RX_BUFFER_SIZE ?
>
> I don't think we have anything called RX_BUFFER_SIZE in our tree, and
> nothing prevents you from passing ?x=y value pairs that will be
> transmitted as part of the HTTP or RTSP URI straight to the server.
> The whole point of the avoptions API switch was that we would leave
> such URIs intact, to make it easier for you to pass option/value pairs
> to the server regardless of implementation details in Libav.
>
>
> Sorry, I was confusing with UDP_TX_BUF_SIZE, and trying to figure out the
> problem, I realized I have also upgraded the camera firmware (which might
> cause the camera to behave differently), so while I'm sure about the
> behavior now, I'm not sure exactly about previous versions. So, let me
> please start again with a clean slate:
>
> If you look at udp.c (just git pulled), routine udp_open actually parses the
> URI looking for libav-specific instructions such as "reuse", "ttl",
> "localport", "pkt_size", "buffer_size", "connect" and "localaddr".
> Specifically, the "buffer_size" parameter (which defaults to
> UDP_MAX_PKT_SIZE=65536 for reading) is used to set the UDP buffer size. I
> need to increase that buffer size significantly (to > 256KB) so that packets
> don't get lost., because I-frames at 1280x720 are already 220KB/sec. I can
> recompile replacing the default buffer_size from UDP_MAX_PKT_SIZE to (e.g.)
> 4*UDP_MAX_PKT_SIZE, but I'd rather do that with configuration and use a
> stock libav.
>
> So, the question is: given that I'm passing an rtsp url
> ("rtsp://a.b.c.d/axis-media/media.amp"), how do I set buffer_size and/or
> ttl? There does not appear to be an avoption based way to do that, but maybe
> I'm missing something?

No, you're correct. The correct solution is to create a private option
for the udp protocol, and proxy that option with a rtsp/rtp private
option. Then the ?x=y can disappear. Anton, am I correct here?

> (This is also relevant to setting the timeout for tcp transports, and I
> guess; although the http transport does seem to get its parameters from
> avoptions; and rtsp does pass "localport", "ttl" and "connect" parameter to
> udp somehow)

I think those haven't been moved to AVOptions yet, so they happen to work.

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

Reply via email to