[FFmpeg-devel] [PATCH] Make RTP work with IPv6 enabled

Luca Abeni lucabe72
Tue Oct 30 15:15:34 CET 2007


Ronald S. Bultje wrote:
> Hi Luca,
> 
> On 10/30/07, Luca Abeni <lucabe72 at email.it> wrote:
>>> With this patch, I can stream rtp/udp from ffserver.
>> Arg... My head is spinning again :(
>> The changes discussed in this email should affect the rtsp demuxer, not
>> ffserver (ffserver always specify a remote host when opening rtp://
>> URLs)...
> 
> 
> Both. make your head spin a bit more:
> 
> With this patch, udp.c takes the target family in account when determining
> the family of the local host address (see the changes in udp.c) that it
> bind()s to. That is a change for both client and server.
Ok, so I guess the key is:

+    int family = AF_UNSPEC;

-    res0 = udp_ipv6_resolve_host(0, s->local_port, SOCK_DGRAM, AF_UNSPEC, AI_PASSIVE);
+    if (((struct sockaddr *) &s->dest_addr)->sa_family)
+        family = ((struct sockaddr *) &s->dest_addr)->sa_family;
+    res0 = udp_ipv6_resolve_host(0, s->local_port, SOCK_DGRAM, family, AI_PASSIVE);

Right? I agree that this looks the correct thing to do, and I guess it
should be committed.

[...]
> Later, both (ff)server and client (ffplay) fail on the rtcp, which they both
> bind() to and write data to, and that is what the changes in rtsp.c/rtpproto.c
> are needed for (plus, again, the changes in udp.c).
The changes in rtpproto.c only affect rtp_set_remote_url(), right?
That function is only called in rtsp.c, right? And I do not see how it can be
called without specifying the destination port...


				Thanks,
					Luca




More information about the ffmpeg-devel mailing list